Config oa. Daten in Exe speichern

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
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Config oa. Daten in Exe speichern

Beitrag von cxAlex »

Aufgrund dieses Threads http://www.purebasic.fr/german/viewtopic.php?t=18995 hab ich ein kleines Include geschrieben mit dem es kinderleicht ist beliebige Daten in eine Executable zu speichern und wieder auszulesen. Alternativ kann sich eine Executable sogar selbst konfigurieren. Es liegen auch Democodes und 3 fertige Programme zum testen bei. Viel Spaß damit :D .

Download: http://paladiumproject.q-soft.ch/public ... Config.zip

Beispiel:

Builder:

Code: Alles auswählen

; ------------------------------------------------------------------------------------
; Config- oä. Daten aus Exe laden
; Source: Builder
; (cl) Alexander Aigner
; PB 4.x
; ------------------------------------------------------------------------------------

XIncludeFile "EC_Include.pbi"

Define File.s, msg.s

File = OpenFileRequester("Wo erstellen?", "test.exe", "*.exe", 0)
If File
  msg = InputRequester("Meldung", "Meldung eingeben", "Testnachricht")
  CopyFile("loader.exe", File)
  EC_Builder_SaveToFile(@msg, Len(msg), File)
EndIf
Loader:

Code: Alles auswählen

; ------------------------------------------------------------------------------------
; Config- oä. Daten aus Exe laden
; Source: Loader
; (cl) Alexander Aigner
; PB 4.x
; ------------------------------------------------------------------------------------

; Democode

XIncludeFile "EC_Include.pbi"

Define Loader

Loader = EC_Load_All()
If Loader
  *Mem = EC_Loader_GetMem(Loader)
  MemSize = EC_Loader_GetMemSize(Loader)
  MessageRequester("Test", PeekS(*Mem, MemSize))
EndIf
Selfconfig:

Code: Alles auswählen

; ------------------------------------------------------------------------------------
; Config- oä. Daten aus Exe laden
; Source: Selfconfig
; (cl) Alexander Aigner
; PB 4.x
; ------------------------------------------------------------------------------------

XIncludeFile "EC_Include.pbi"

EC_Builder_SelfConfigHead() ; Benötigt

Define Loader, msg.s

Loader = EC_Load_All()
If Loader
  *Mem = EC_Loader_GetMem(Loader)
  MemSize = EC_Loader_GetMemSize(Loader)
  msg.s = PeekS(*Mem, MemSize)
EndIf

msg = InputRequester("Test", "Eigener Text", msg)
If msg
  If MessageRequester("Selfconfig", "Geänderten Text speichern?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
    EC_Builder_SelfConfig(@msg, Len(msg))
  EndIf
EndIf
Zuletzt geändert von cxAlex am 30.03.2009 17:25, insgesamt 2-mal geändert.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

HEY! Ich finds cool das du das für mich geschrieben hast! Danke!

ICh werds mir sofort angucken...

Gruß

JENS
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Ich denke mal bei mir liegt das Problem an PB 4.20!

Bei mir gibt es bei folgender Zeile einen Error:

Code: Alles auswählen

*Loader\MarkerOffset = *Loader\FileSize - SizeOf(INTEGER)
Macro Error
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

INTEGER gibts glaub ich noch nicht in 4.2....
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

heißt das es gibt keine Möglichkeit das Ding in PB 4.20 auszuführen?

Gruß

JENS
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Doch. Alle INTEGER durch LONG ersetzten.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Okay aber diese: tMarker = ReadInteger(\hFile) Funktion gibt es ned!
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

ReadLong() Statt ReadInteger()
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Oliver1994 hat geschrieben:Okay aber diese: tMarker = ReadInteger(\hFile) Funktion gibt es ned!
Jetzt mal ehrlich, bissle (mit)denken sollte man aber schon können. :o

@cxAlex dein Code :allright:
Zuletzt geändert von rolaf am 01.02.2009 17:31, insgesamt 2-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Wo ist denn das Problem auf 4.30 up zu daten?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten