Skin System <Gelöst>

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Skin System <Gelöst>

Beitrag von Tsuki-Namida »

Hallo ich möchte in mein aktuelles Projekt ein Skinsystem einbaun...

in der teorie ist ja alles super aber mit der praxis hapert es leider -.-

ich möchte das sich der benutzer auch ein eigenes skin machen kann deshalb habe ich eine syle.css gemach und da muss dann der benutzer (sovern er ein eigenes skin baut) den allgemeinen befehl namen(X,Y,Breite,Höhe[,Image]) angeben...

wie man schon sieht gleicht der befehl PB aber egal...hier erst mal der inhalt der css datei:

Code: Alles auswählen

Basic(0,0,500,500,"Midi Center","Basic_BG.bmp")
AddFarvorit(23,57,45,37,"Add-Bookmark.ico")
RemFarvorit(82,57,44,32,"Remove-Bookmark.ico")
Setting(365,0,45,16,"einstellung.ico")
Minimaze(410,0,45,16,"minimieren.ico")
Closed(455,0,45,16,"Schliessen.ico")
Play(44,279,75,45,"Midi-Play.ico")
Stop(42,348,75,48,"Midi-Stop.ico")
DownFile(297,22,32,35,"File-Save.ico")
DownFulder(335,19,32,37,"Folder-Save.ico")
Upload(376,23,29,33,"Upload.ico")
Homepage(416,22,27,32,"Homepage.ico")
Help(455,21,28,37,"Help.ico")

Loggin(0,0,307,118,"Loggin_BG.bmp")
LoggOK(118,23,34,36"Bestaetigen.ico")
LoggCann(241,23,34,36,"Abbruch.ico")

Upload(0,0,332,354,"Upload_BG.bmp")
UplOK(224,23,34,36,"Bestaetigen.ico")
UplCann(282,23,34,36,"Abbruch.ico")
UplSeach(127,107,34,36,"Suche.ico")

Message(0,0,460,170,"Message_BG.bmp")
MessOK(353,22,"Bestaetigen.ico")
MessCann(411,22,34,36,"Abbruch.ico")

GadgetColor(90,116,230)
hier die procedure die diesesn code aus einander schneiden soll:

Code: Alles auswählen

Procedure CodeAuswerten(Befehl$,Name$)
  T$ = Befehl$
  a = FindString(T$,"(",1)
  b = FindString(T$,",",1)
  PosX = Val(Mid(T$,a+1,b-1))
  a = Len("AddFarvorit("+Str(PosX)+",")
  b = Len(T$)
  T$ = Mid(T$,a+1,b)
  b = FindString(T$,",",1)
  PosY = Val(Mid(T$,1,b))
  a = Len(Str(PosY)+",")
  b = Len(T$)
  T$ = Mid(T$,a+1,b)
  b = FindString(T$,",",1)
  PosB = Val(Mid(T$,1,b))
  a = Len(Str(PosB)+",")
  b = Len(T$)
  T$ = Mid(T$,a+1,b)
  b = FindString(T$,",",1)
  PosH = Val(Mid(T$,1,b))
  a = Len(Str(PosH)+",")
  b = Len(T$)
  T$ = Mid(T$,a+1,b)
  If Name$ = "Basic"
    b = FindString(T$,",",1)
    PosT$ = Mid(T$,2,b-3)
    a = Len(Chr(34)+PosT$+Chr(34)+",")
    b = Len(T$)
    T$ = Mid(T$,a+1,b)
  EndIf
  PosI$ = Mid(T$,2,Len(T$)-3)
    
  AddElement(Syntax())
  Syntax()\Name = Name$
  Syntax()\X = PosX
  Syntax()\Y = PosY
  Syntax()\Breite = PosB
  Syntax()\Hohe = PosH
  If Name$ = "Basic":Syntax()\Titel = PosT$:EndIf
  Syntax()\Bild = PosI$
EndProcedure
Befehl ist eine komplette zeile aus der css datei und name stelle ich bei direcken lesen der datei fest:

Code: Alles auswählen

T$ = ReadString(0)
    If FindString(T$,"Basic(",1)
      CodeAuswerten(T$,"Basic")
    ElseIf ......
      .....
    ElseIf FindString(T$,"GadgetColor(",1)
      a = FindString(T$,"(",1)
      b = FindString(T$,",",1)
      FarbwertA = Val(Mid(T$,a+1,b-1))
      a = Len("GadgetColor("+Str(FarbwertA))
      b = Len(T$)
      T$ = Mid(T$,a+2,b)
      b = FindString(T$,",",1)
      FarbwertB = Val(Mid(T$,1,b-1))
      a = Len(Str(FarbwertB)+",")
      b = Len(T$)
      T$ = Mid(T$,a+1,b)
      FarbwertC = Val(Mid(T$,1,Len(T$)-1))
      Farbwert = RGB(FarbwertA,FarbwertB,FarbwertC)
    EndIf
nur der debugger gibt mir diesen text aus... und ich kann nicht wirklich versehn warum -.-

Code: Alles auswählen

15103066
Basic
0
500
0
0
 Center
Basic_BG.bmp
AddFarvorit
23
57
45
37

Add-Bookmark.ico
RemFarvorit
82
57
44
32

Remove-Bookmark.ico
Setting
365
0
6
0

nstellung.ico
Minimaze
410
5
16
0

nimieren.ico
Closed
455
16
0
0

iessen.ico
Play
44
45
0
0

-Play.ico
Stop
42
48
0
0

-Stop.ico
DownFile
297
32
35
0

le-Save.ico
DownFulder
335
9
32
37

Folder-Save.ico
Upload
376
0
3
0

load.ico
Homepage
416
27
32
0

mepage.ico
Help
455
7
0
0

.ico
Loggin
0
0
18
0

ggin_BG.bmp
LoggOK
118
0
0
0

taetigen.ico
LoggCann
241
34
36
0

bruch.ico
Upload
0
0
54
0

load_BG.bmp
UplOK
224
36
0
0

aetigen.ico
UplCann
282
4
36
0

bruch.ico
UplSeach
127
0
4
36

Suche.ico
Message
0
0
170
0

ssage_BG.bmp
MessOK
353
0
0
0

gen.ico
MessCann
411
34
36
0

bruch.ico
wie man unschwer erkennen kann stimmt das was nicht.. aber was? ich weis mir keinen raat mehr... vorallen weil ich direckt nach einem "," suche in der procedure zum auswerten und nach nichts anderen (auser der erste befehl da such ich nach "(" )


ich hoffe das jemand mein vorhaben versteht und mir ggf. helfn kann...

danke im voraus
Zuletzt geändert von Tsuki-Namida am 27.04.2008 10:00, insgesamt 1-mal geändert.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

habe nur mal schnell drüber geschaut und mir gedacht das dir das hier helfen könnte:

Code: Alles auswählen

Procedure.s MyStringField(String$, Index, Separator$, Start$="", Ende$="")
 If Start$
  Start = FindString(String$, Start$, 1)
 Else
  Start = 1
 EndIf
 If Ende$
  Ende = FindString(String$, Ende$, 1)
 Else
  Ende = Len(String$)
 EndIf
 If Start
  String$ = Mid(String$, Start+Len(Start$), Ende-Start-Len(Start$))
  ProcedureReturn StringField(String$, Index, Separator$)
 EndIf
EndProcedure
Beispiel:

Code: Alles auswählen

String$ = "Basic(0,0,500,500,Midi Center,Basic_BG.bmp)"
For n = 1 To 6
 Debug MyStringField(String$, n, ",", "Basic(", ")")
Next
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

bein beispiel ist garnicht mal so schlecht aber leider geht das nur bei dem ersten befehl er css -.-

PS: Die schleife "For n = 1 To 6" habe ich entsprechend geändert...
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@STARGÅTE
sorry habe den fehler gefunden warum es nicht ging... naja es geht jedenfalls vielen vielen dank :)
Bild
Antworten