Kompakte Preference (snippet)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Kompakte Preference (snippet)

Beitrag 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
Zuletzt geändert von X360 Andy am 04.07.2010 22:09, insgesamt 1-mal geändert.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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 ...
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
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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
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
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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 )
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Kompakte Preference (snippet)

Beitrag 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.
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
Antworten