Seite 1 von 1

Kompakte Preference (snippet)

Verfasst: 04.07.2010 21:26
von X360 Andy
Hallo

Ich bin gerade irgendwie überwältigt wie schön man doch immer wieder sachen in PB lösen kann.
Ich habe gerade ein Code zum laden verschiedener Profile (Name,Alter... ) gebraucht, und das ganze in wenigen Codezeilen gelöst.

Eigentlich nichts besonders, trotzdem möchte ich das hier posten :)

Code: Alles auswählen

EnableExplicit

Define pref_profil$ = "profil"

OpenPreferences("set.pref")
PreferenceGroup("global")
pref_profil$ = ReadPreferenceString(pref_profil$, "")

PreferenceGroup(pref_profil$)
Define name$ = ReadPreferenceString("Name", "")
Define alter$ = ReadPreferenceString("Alter","")
Define ort$ = ReadPreferenceString("Ort", "")

ClosePreferences()
Die set.pref könnte so aussehen.

Code: Alles auswählen

[global]
profil = user2

[user1]
Name = andreas
Alter = 12
Ort = berlin

[user2]
Name = ben
Alter = 18
Ort = hamburg

[user3]
Name = ben
Alter = 13
Ort = berlin
Vielleicht kann man das mal gebrauchen .... kompakter gehts wohl kaum :mrgreen:

Gruß Andreas

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 21:37
von Josef Sniatecki
Hast recht, ist wirklich nichts Besonderes (in PB auf jeden Fall) :mrgreen:
Ich fühle das Glück auch, wenn ich <spam>GMetrica</spam> Tag für Tag erweitere und PB einfach viele Möglichkeiten bietet. :wink:

Gruß Josef

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 22:01
von STARGÅTE
super X360 Andy :allright:

Klar, andere hätte dafür 4 Dateien gebraucht ^^
die eine die sagt welcher User, und dann 3 für die jeweiligen User,
was ich eigentlich auch besser finden würde, weil man dann halt einen User einfach "kopieren" kann und woanders mitnehmen kann,

bei dir müsste man seinen User immer erst ausschneiden und irgendwo zwischenspeichern...

naja.

BTW:
Ich habe auch manchmal solche "Glücks-Momente" wenn ich sehe wie einfach eine Lösung sein kann.

Ich für meinen Teil habe zB Base64 ins herz geschlossen.

Situation:
Ich hatte auch eine Preference für die jeweilige Sprachen für ein Programm:

Code: Alles auswählen

[MenuTitle]
File = &Datei
Edit = &Bearbeiten
Insert = &Einfügen
Window = &Fenster
Help = &Hilfe
usw.
Nun wollte ich auch für jede Sprache n Icon haben (später für die ComboBox) wo die Flagge dargestellt wird.
Aber ich wollte nun keine extra .ico oder .png für alle Sprachen mitschleifen.
Da "erschein" mir Base64Decoder:

Einfach das Image Base64Encoden und dann direkt mit in die Preference:

Code: Alles auswählen

[Resources]
LanguageIcon =
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/
oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFHRcIENnlukIAAAFnSURBVDjL1ZM9ihVBFIW/
7tcPjAbFxMBJDRUcI0PFbEBD9zGBu3AjA28TJk7qUgTpur/HoHveYGSqBYdzKO79bkFVwX+/puvr96JW6IbDg
mfjkagD6L8CloiVm5svAHQ33U1VUnXvSeauCLKSzCAiOJ1uWeZ5BuD73Y+tIJOIwN1xc8wNsweNMbAx+Pjp3
XaCS+BxN5d7c7qTEYQZYYa7E2PgNjAzYh2YG88yNsDnMK6quIpA7ujezZAZPYy2seeBVqN9cIxkARaFoypw
Rx7IBnKnz4C92Yxe1zNU4QhYBFD551R3NAY9xgNoXZEbNWyrraCAJd4CL4QOjarpaDrqnJXaHSqEEjqE3kyMb
7DoJeh5oydF9yZ10ZWom+7crreKLu17oKcT/QEWHJQBx9fMOFMXamfqBAXqQh2oE6mQEinBk/kXTKevr/So
oB10AFu396cLmAd0gR+gfMvHGXoAB/jp/8Jn+g1hYolf/PmInAAAAABJRU5ErkJggg==
(In der echten Datei ohne Umbrüche!)
Nun kann ich einfach auch mittels ReadPreferenceString() den Code auslesen
und als Bild laden:

Code: Alles auswählen

Procedure DecodeImage(Image, String$)
 Protected *Buffer = AllocateMemory(Len(String$))
 Protected Length = Base64Decoder(@String$, Len(String$), *Buffer, Len(String$))
 Image = CatchImage(Image, *Buffer, Length)
 FreeMemory(*Buffer)
 ProcedureReturn Image
EndProcedure
Seit dem, benutze ich Base64 immer häufiger ...
Habe sogar n Exe geschrieben, bei der ich eine Datei einfach anklicken -> Base64 und in der Zwischenablage mein Code habe der dann irgendwo hin kommt.

Das ist meiner meinung auch fürs Board besser als diese komischen DataSections für Bilder oder so ...

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 22:12
von X360 Andy
@STARGÅTE
Wieso nicht einfach im klartext abspeichern bei deinem Beispiel, sehe den Sinn dahinter nicht ?
Verbraucht immerhin einige kbs mehr speicher als decodiert zu speichern :D

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 22:29
von STARGÅTE
Wieso nicht einfach im klartext abspeichern
:lol: das mach ich doch !

Ich habe eine Bilddatei (Binäredaten) in Klartext codiert um es in einer KlarText Datei auslesen zu können
weil Bilddateien oft auch NULL drin haben.

base64 <> Verschlüsslung !!
sonden Binärdaten -> klar Text

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 22:44
von X360 Andy
Gut Base64 is kein verschlüsseln stimmt.

Aber wieso nicht einfach

"icon = programmicon.ico"

speichern, wieso bitte kodieren ?
"123#12#31#231201309jd09c1.....asdasd" (Sinnlos getippt :D )

Re: Kompakte Preference (snippet)

Verfasst: 04.07.2010 23:06
von STARGÅTE
STARGÅTE hat geschrieben:Nun wollte ich auch für jede Sprache n Icon haben (später für die ComboBox) wo die Flagge dargestellt wird.
Aber ich wollte nun keine extra .ico oder .png für alle Sprachen mitschleifen.
Das hätte ja eine weitere Datei bedeutet, ich wollte die Sprache-Plugins aber nur aus einer .ini bestehen lassen.