Seite 1 von 3

Config oa. Daten in Exe speichern

Verfasst: 01.02.2009 15:52
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

Verfasst: 01.02.2009 16:56
von Oliver1994
HEY! Ich finds cool das du das für mich geschrieben hast! Danke!

ICh werds mir sofort angucken...

Gruß

JENS

Verfasst: 01.02.2009 17:03
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

Verfasst: 01.02.2009 17:06
von cxAlex
INTEGER gibts glaub ich noch nicht in 4.2....

Verfasst: 01.02.2009 17:09
von Oliver1994
heißt das es gibt keine Möglichkeit das Ding in PB 4.20 auszuführen?

Gruß

JENS

Verfasst: 01.02.2009 17:13
von cxAlex
Doch. Alle INTEGER durch LONG ersetzten.

Verfasst: 01.02.2009 17:18
von Oliver1994
Okay aber diese: tMarker = ReadInteger(\hFile) Funktion gibt es ned!

Verfasst: 01.02.2009 17:22
von cxAlex
ReadLong() Statt ReadInteger()

Verfasst: 01.02.2009 17:26
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:

Verfasst: 01.02.2009 17:30
von AND51
Wo ist denn das Problem auf 4.30 up zu daten?