Seite 1 von 1

PB "writepref to readpref"-Konverter

Verfasst: 08.02.2007 19:54
von DW
Hallo, ich habe mal einen kleinen parser geschrieben, derwritepreferencebefehlen zu readpreferencebefehle konvertiert.
Das ist nützlich, wenn ihr beispielsweise in eurem Programm eine Projekt-Speicherfunktion einbaut und einen ellenlangen Code wie diesen habt:
WritePreferenceString("Key",GetGadgetText(#String_3))
WritePreferenceLong("Key1",GetGadgetState(#CheckBox_3))
..
..
..
usw.

und keine Lust habt, das ganze fürs Öffnen der Projektdateien umzuschreiben.

So kann Beispielsweise aus folgendem code:

Code: Alles auswählen

    WritePreferenceString("Program name",GetGadgetText(#String_3))
    WritePreferenceString("Program version",GetGadgetText(#String_4))
    WritePreferenceLong("Win95",GetGadgetState(#CheckBox_3))
    WritePreferenceLong("WinNT4",GetGadgetState(#CheckBox_4))
    WritePreferenceLong("Win98",GetGadgetState(#CheckBox_5))
    WritePreferenceLong("WinME",GetGadgetState(#CheckBox_6))
    WritePreferenceLong("Win2000",GetGadgetState(#CheckBox_7))
    WritePreferenceLong("WinXP",GetGadgetState(#CheckBox_9))
    WritePreferenceString("Company name",GetGadgetText(#String_10))
    WritePreferenceString("Website",GetGadgetText(#String_11))
    PreferenceGroup("Graphics")
    WritePreferenceString("Wizard image",GetGadgetText(#String_7))
    WritePreferenceString("Header image",GetGadgetText(#String_8))
    WritePreferenceString("Install-icon image",GetGadgetText(#String_9))
    WritePreferenceLong("Show Label",GetGadgetState(#CheckBox_1))
    WritePreferenceLong("Windows style",GetGadgetState(#Radio_2))
    PreferenceGroup("Files")
    WritePreferenceLong("Include Zipfile",GetGadgetState(#CheckBox_16))
    WritePreferenceString("Zipfile",GetGadgetText(#String_14))
    WritePreferenceString("Installation path",GetGadgetText(#String_17))
    WritePreferenceLong("Autcip",GetGadgetState(#CheckBox_20))
    PreferenceGroup("Uninstall")
    WritePreferenceLong("Vwau",GetGadgetState(#CheckBox_17))
    WritePreferenceString("Website",GetGadgetText(#String_15))
    WritePreferenceLong("Include uninstaller",GetGadgetState(#CheckBox_18))
    PreferenceGroup("Licence")
    WritePreferenceLong("Licence dialog",GetGadgetState(#CheckBox_12))
    PreferenceGroup("Finish")
    WritePreferenceLong("Sart program",GetGadgetState(#CheckBox_13))
    WritePreferenceLong("Reboot computer",GetGadgetState(#CheckBox_14))
    WritePreferenceLong("Execute DLL:",GetGadgetState(#CheckBox_15))
    WritePreferenceString("Program",GetGadgetText(#String_12))
    WritePreferenceString("Dll",GetGadgetText(#String_13))
    PreferenceGroup("Shortcuts")
    WritePreferenceLong("Allowtc",GetGadgetState(#CheckBox_19))
    WritePreferenceString("Shortcut path",GetGadgetText(#String_16))
der hier gemacht werden:

Code: Alles auswählen

  setgadgettext(#String_3,ReadPreferenceString('Program name',''))
setgadgettext(#String_4,ReadPreferenceString('Program version',''))
setgadgetstate(#CheckBox_3,ReadPreferencelong('Win95',0))
setgadgetstate(#CheckBox_4,ReadPreferencelong('WinNT4',0))
setgadgetstate(#CheckBox_5,ReadPreferencelong('Win98',0))
setgadgetstate(#CheckBox_6,ReadPreferencelong('WinME',0))
setgadgetstate(#CheckBox_7,ReadPreferencelong('Win2000',0))
setgadgetstate(#CheckBox_9,ReadPreferencelong('WinXP',0))
setgadgettext(#String_10,ReadPreferenceString('Company name',''))
setgadgettext(#String_11,ReadPreferenceString('Website',''))
    PreferenceGroup("Graphics")
setgadgettext(#String_7,ReadPreferenceString('Wizard image',''))
setgadgettext(#String_8,ReadPreferenceString('Header image',''))
setgadgettext(#String_9,ReadPreferenceString('Install-icon image',''))
setgadgetstate(#CheckBox_1,ReadPreferencelong('Show Label',0))
setgadgetstate(#Radio_2,ReadPreferencelong('Windows style',0))
    PreferenceGroup("Files")
setgadgetstate(#CheckBox_16,ReadPreferencelong('Include Zipfile',0))
setgadgettext(#String_14,ReadPreferenceString('Zipfile',''))
setgadgettext(#String_17,ReadPreferenceString('Installation path',''))
setgadgetstate(#CheckBox_20,ReadPreferencelong('Autcip',0))
    PreferenceGroup("Uninstall")
setgadgetstate(#CheckBox_17,ReadPreferencelong('Vwau',0))
setgadgettext(#String_15,ReadPreferenceString('Website',''))
setgadgetstate(#CheckBox_18,ReadPreferencelong('Include uninstaller',0))
    PreferenceGroup("Licence")
setgadgetstate(#CheckBox_12,ReadPreferencelong('Licence dialog',0))
    PreferenceGroup("Finish")
setgadgetstate(#CheckBox_13,ReadPreferencelong('Sart program',0))
setgadgetstate(#CheckBox_14,ReadPreferencelong('Reboot computer',0))
setgadgetstate(#CheckBox_15,ReadPreferencelong('Execute DLL:',0))
setgadgettext(#String_12,ReadPreferenceString('Program',''))
setgadgettext(#String_13,ReadPreferenceString('Dll',''))
    PreferenceGroup("Shortcuts")
setgadgetstate(#CheckBox_19,ReadPreferencelong('Allowtc',0))
setgadgettext(#String_16,ReadPreferenceString('Shortcut path',''))
Die " ' " -Zeichen müsst ihr manuel durch " " "-Zeichen ersetzen.

Nun der Code:

Code: Alles auswählen

;PB Preference "pref_write" to "pref_read" converter 
;By DW/Forgesoft 

file.s="file.ini" 
outputfile.s="file_out.ini" 

;----------------------------------------------------------------------------------------- 
If ReadFile(0,file) 
If CreateFile(1,outputfile) 


While Not Eof(0) 
  line.s=ReadString(0) 
  For a=0 To Len(line) 
    If Mid(line,a,1)="[" 
      WriteStringN(0,line) 
    EndIf 
    If Mid(line,a,22)="WritePreferenceString(" 
      pos=FindString(line,",",a+24) 
      keyword.s=Mid(line,a+23,Len(line)-a-22-(Len(line)-pos)-2) 

      pos=FindString(line,"GetGadgetText(",0) 
      pos1=FindString(line,")",pos+14) 
      var.s=Mid(line,pos+14,Len(line)-pos-15) 
      WriteStringN(1,"setgadgettext("+var+",ReadPreferenceString("+Chr(34)+""+keyword+""+Chr(34)+","+Chr(34)+Chr(34)+"))") 
    EndIf 
    If Mid(line,a,20)="WritePreferenceLong(" 
      pos=FindString(line,",",a+22) 
      keyword.s=Mid(line,a+21,Len(line)-a-20-(Len(line)-pos)-2) 
      pos=FindString(line,"GetGadgetState(",0) 
      pos1=FindString(line,")",pos+15) 
      var.s=Mid(line,pos+15,Len(line)-pos-16) 
      WriteStringN(1,"setgadgetstate("+var+",ReadPreferencelong("+Chr(34)+""+keyword+""+Chr(34)+",0))") 
    EndIf 

    If Mid(line,a,15)="PreferenceGroup" 
      WriteStringN(1,line) 
    EndIf 
  Next 
Wend 
CloseFile(1) 
CloseFile(0)
EndIf
EndIf
Parst nur writepreferencestring und writepreferencelong. Könnt ihr ja erweitern.
Das ganze bezieht sich nur auf string- und comboboxgadgets.

Hoffe, ihr könnts mal gebrauchen.

Verfasst: 08.02.2007 21:20
von Macros
Tipp: die Aunführungszeichen kannst du mit chr(34) machen.
also
"test"+chr(34)+"bla"
=
test"bla

Verfasst: 08.02.2007 21:35
von DW
Ah, Danke! Habe ich in der ASCII Tabelle der PB Hilfe übersehen.

Verfasst: 08.02.2007 21:39
von AND51
Warum nicht
BildMacros
für soetwas benutzen? :mrgreen:

Verfasst: 08.02.2007 21:43
von ts-soft

Verfasst: 08.02.2007 21:54
von DW
Wieso? ASCII ist doch völlig okay.

Verfasst: 08.02.2007 21:58
von Macros
AND51 hat geschrieben:Warum nicht
BildMacros
für soetwas benutzen? :mrgreen:
He, ich hab keine Lust schon wieder Codes nach irgendwelchen Abkürzungen zu durchwühlen ;-)

Lies die Midkemia Saga, dann weist du woher mein Nick wirklich stammt ^^
Woher sollte ich wissen, das ein PB Befehl mit gleichem Namen kommt...

Verfasst: 08.02.2007 21:58
von Kaeru Gaman
Bild

Verfasst: 08.02.2007 21:59
von ts-soft
DW hat geschrieben:Wieso? ASCII ist doch völlig okay.
häh :freak:

Verfasst: 09.02.2007 00:00
von AND51
Kaeru Gaman hat geschrieben:Bild
häh :freak:

@ Macros: Türlich kannst du das nicht wissen, aber ich konnt mir das Wortspiel nicht verkneifen; habe die Idee mit dem Macros aber ernst gemeint...