2048 byte long ASCII block an eine EXE Datei hängen
-
- Beiträge: 123
- Registriert: 27.03.2006 09:45
2048 byte long ASCII block an eine EXE Datei hängen
Hallo zusammen,
ist es möglich eine 2048 byte long ASCII block an eine exe Datei anzuhängen und diese später beim Aufruf der exe Datei einzulesen?
Danke im vorraus,
Daniel
ist es möglich eine 2048 byte long ASCII block an eine exe Datei anzuhängen und diese später beim Aufruf der exe Datei einzulesen?
Danke im vorraus,
Daniel
Re: 2048 byte long ASCII block an eine EXE Datei hängen
> ist es möglich eine 2048 byte long ASCII block an eine exe Datei
> anzuhängen
ja, das geht mit IncludeBinary()
> und diese später beim Aufruf der exe Datei einzulesen?
... mit PeekS(?ASCIIBlock)
Grüße ... Kiffi
> anzuhängen
ja, das geht mit IncludeBinary()
Code: Alles auswählen
DataSection
ASCIIBlock:
IncludeBinary "DeinAsciiBlock"
Data.b 0
EndDataSection
... mit PeekS(?ASCIIBlock)
Grüße ... Kiffi
Zuletzt geändert von Kiffi am 01.12.2006 13:58, insgesamt 1-mal geändert.
a²+b²=mc²
Da gibt es doch auch noch Read und Data. Wäre das nicht auch was?
@ Kiffi: darf man denn Bindestriche in Labelnamen verwenden? Nee, oder? Das wäre mir neu...
@ Kiffi: darf man denn Bindestriche in Labelnamen verwenden? Nee, oder? Das wäre mir neu...

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Kein Problem. Nur noch mal zur Erinnerung (für alle, auch mich
):
Variablennamen dürfen nur A-Z, a-z, 0-9 und _ enthalten.
Für Proceduren-, Macro, Label-, Konstanten-, Parameter-, LinkedList-, Array-, Structure- und Pointernamen und Interfaces (was immer das auch ist) gilt dasselbe wie für Variablennamen. Habe ich noch einen Typ vergessen? Ich glaube nicht
@ Kiffi: Verwende doch lieber einen _Unterstrich_, das sieht dann wieder übersichtlicher aus!!

Variablennamen dürfen nur A-Z, a-z, 0-9 und _ enthalten.
Für Proceduren-, Macro, Label-, Konstanten-, Parameter-, LinkedList-, Array-, Structure- und Pointernamen und Interfaces (was immer das auch ist) gilt dasselbe wie für Variablennamen. Habe ich noch einen Typ vergessen? Ich glaube nicht

@ Kiffi: Verwende doch lieber einen _Unterstrich_, das sieht dann wieder übersichtlicher aus!!

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 123
- Registriert: 27.03.2006 09:45
Hi Ihr beiden,
danke für die schnellen Antworten
Also folgender Ablauf:
- PB Datei mit DataSection erstellen/kompilieren
"Data.b 0" hier müsste ich dann z.B. "Data.b 2048" schreiben?
- über ein separates programm einen ASCII block an die kompilierte
Datei hängen/schreiben
- Aufruf der kompilierten Datei und mit PeekS den Block einlesen
Sind die Schritte korrekt? Oder ist da noch etwas falsch?
Danke + Gruß,
Daniel
danke für die schnellen Antworten

Also folgender Ablauf:
- PB Datei mit DataSection erstellen/kompilieren
"Data.b 0" hier müsste ich dann z.B. "Data.b 2048" schreiben?
- über ein separates programm einen ASCII block an die kompilierte
Datei hängen/schreiben
- Aufruf der kompilierten Datei und mit PeekS den Block einlesen
Sind die Schritte korrekt? Oder ist da noch etwas falsch?
Danke + Gruß,
Daniel
das 0-byte wird als string-ende interpretiert und für PeekS(..) benötigt [siehe hilfe zu PeekS()]
Code: Alles auswählen
hWin=OpenWindow(0, 50,50,400,200, "")
CreateGadgetList(hWin)
EditorGadget(0, 0,0, 400,200)
SetGadgetText(0, PeekS(?ASCIIBlock) )
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
DataSection
ASCIIBlock:
IncludeBinary "C:\test\test.txt"
Data.b 0
EndDataSection
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> 2048 byte long ASCII block an eine EXE Datei hängen
Zum auslesen die eigene Exe lesend öffnen, fileseek ans ende minus 2048
und lesen
Gruß
Thomas
Code: Alles auswählen
#ExeFile = "test.exe"; hier solls angehängt werden
#DataFile = "data.dat"; hier befinden sich die 2048 byte
If OpenFile(0, #ExeFile)
FileSeek(Lof(0))
If ReadFile(1, #DataFile)
Mem = AllocateMemory(2048)
If Mem
ReadData(1, Mem)
WriteData(0, Mem, 2048)
FreeMemory(Mem)
EndIf
CloseFile(1)
EndIf
CloseFile(0)
EndIf
und lesen

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 123
- Registriert: 27.03.2006 09:45
Hi Thomas,
das funxt irgendwie nicht
Bekomme nur kryptische Dinge angezeigt.
BTW, nicht wundern, dass es PB3.9x ist. Will ich nutzen, da ich dann den
Code auch unter Linux sowie Mac nutzen kann. 3.9 existiert ja für alle 3 platformen.
Danke + Gruß,
Daniel
das funxt irgendwie nicht

Bekomme nur kryptische Dinge angezeigt.
Code: Alles auswählen
file$ = "seek01.exe"
If ReadFile(0,file$)
length = Lof()
FileSeek(length - 2048)
*MemoryID = AllocateMemory(2048)
If *MemoryID
bytes = ReadData(*MemoryID, 2048)
MessageRequester("", PeekS(*MemoryID))
EndIf
CloseFile(0)
EndIf
Code auch unter Linux sowie Mac nutzen kann. 3.9 existiert ja für alle 3 platformen.
Danke + Gruß,
Daniel
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Beim erstellen am besten ans Ende der Datei noch die genause länge als Long schreiben.
Beim Lesen, ans Ende -4, dort die länge als long einlesen und dann mit fileseek lof - 4 - laenge.
Sollte klappen, ging bisher immer
Beim Lesen, ans Ende -4, dort die länge als long einlesen und dann mit fileseek lof - 4 - laenge.
Sollte klappen, ging bisher immer

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
