Seite 1 von 1

Speichern von Einstellungen usw.

Verfasst: 05.10.2008 19:39
von rolstra
Hallo Leute,
bin ein absoluter Anfänger in Sachen PureBasic. Hätte da eine prinzipielle Frage: Wie kann am einfachsten eine Einstellung aus einem Programm heraus gespeichert werden - und ggf. wieder eingelesen werden? Geschieht das am einfachsten, in dem man eine Textdatei schreibt/liest oder eine squlite-Datei? Gibt es hierzu irgendwo eine Anleitung?
Vielen Dank
Roland.

Verfasst: 05.10.2008 19:40
von milan1612
Schau dir mal die Preferences Befehle in der Hilfe an :wink:

Hier ein bisschen Code aus dem beiliegenden Beispiel:

Code: Alles auswählen

If CreatePreferences("Preferences.prefs")
  PreferenceGroup("Global")
    WritePreferenceString("ApplicationName", "MP3 Player")
    WritePreferenceString("Version", "1.1b")

  PreferenceComment(" This is the Window dimension")
  PreferenceComment("")

  PreferenceGroup("Window")
    WritePreferenceLong ("WindowX", 123)
    WritePreferenceLong ("WindowY", 124)
    WritePreferenceFloat("WindowZ", -125.5)

  ClosePreferences()
EndIf


OpenPreferences("Preferences.prefs")

  PreferenceGroup("Window")
    Debug ReadPreferenceLong ("WindowX", 0)
    Debug ReadPreferenceLong ("WindowY", 0)
    Debug ReadPreferenceFloat("WindowZ", 0)
    
  PreferenceGroup("Global")
    Debug ReadPreferenceString("ApplicationName", "")
    Debug ReadPreferenceString("Version", "")
    
ClosePreferences()

Verfasst: 06.10.2008 16:49
von hjbremer
Preference Befehle empfehlen sich für umfangreichere Ini Dateien in denen auch variable Zeichenketten stehen.

für einfache wenige Zahlenwerte und Zeichenketten fester Länge kann man dies auch simpel über eine Struktur lösen und diese binär speichern und lesen.

hier ein einfaches Beispiel

Code: Alles auswählen


Structure programmvariablen

 a.l
 b.l
 c.l
 d.l
 s.s{30}
 x.l[10]
 
EndStructure

Global prgv.programmvariablen

prgv\a = 123
prgv\b = 456
prgv\c = 789
prgv\d = 159

prgv\s = "dies ist ein Test"

prgv\x[0] = 147
prgv\x[9] = 963


Procedure PrgvWrite()

    lg = SizeOf(prgv)
    pt = @prgv
                
    dnr = OpenFile(#PB_Any,"test.bin")
    WriteData(dnr, pt,lg)
    CloseFile(dnr)

EndProcedure

Procedure PrgvRead()

    lg = SizeOf(prgv)
    pt = @prgv
                
    dnr = OpenFile(#PB_Any,"test.bin")
    ReadData(dnr, pt,lg)
    CloseFile(dnr)

EndProcedure

PrgvWrite()

PrgvRead()

Debug prgv\a
Debug prgv\b
Debug prgv\c
Debug prgv\d
Debug prgv\s
Debug prgv\x[0]
Debug prgv\x[9]


Verfasst: 06.10.2008 17:13
von kswb73
Hier mal ein auskommentiertes Beispiel mit einer Konsole. Ich setzte vorraus das du schon mit Konsolen arbeiten kannst und weißst was ein String ist.

Code: Alles auswählen

OpenConsole()
OpenPreferences("Save.sav");Wir öffnen eine Datei (als Preference)
;Als nächstes lesen wir die Datei aus.
;Dabei wird immer ein "Sprungwort" benutzt um die Werte zu finden.
;Dies ist der erste Wert.
;Der Zweite wert ist das Alternativergebnis.
;Dieses wird ausgegeben wenn das Sprungwort nicht existiert.
Text.s=ReadPreferenceString("Text","noch keine Eingabe") 
Zahl=ReadPreferenceLong("Zahl",0)
ClosePreferences() ;Wir schließen die Datei wieder.

PrintN(Text)
PrintN(Str(Zahl))

PrintN("")
PrintN("Bitte geben sie einen Text ein:")
text=Input()
PrintN("Bitte geben sie eine Zahl ein:")
Zahl=Val(Input())


CreatePreferences("Save.sav");Diesmal erstellen wir eine Datei.
;Das Speichern funktioniert wie das laden nur eben wird hier der Wert eingegeben.
;Der erste Wert ist das Sprungwort unter dem man nacherher den eingegebenen Wert findet.
;Der zweite Wert ist der der beim auslesen ausgegen wird.
WritePreferenceString("Text",Text)
WritePreferenceLong("Zahl",Zahl)
ClosePreferences();Wir schließen aus diese Datei um die Ressourcen freizugen und das speichern zu beenden.