Hallo zusammen,
vielleicht kann mir jemand helfen dieses Problem zu lösen:
Ich habe in meiner Exe ein Textfile und ein Binary-File als Resource eingefügt. Soweit so gut. Wie kann ich auf diese später zugreifen - sprich in eine Variable einelesen (Textfile) bzw. das Binary file auslesen und speichern?
Gruß BigJack
Text und Binaryfile aus Resource in Variable einlesen (PB4)
Hallo BigJack,
für Dein Binary Problem könnte das hier die Lösung sein:
mit dem Text in die Variable einlesen sollte eigentlich mit ReadData() funktionieren.
Viele Grüße
für Dein Binary Problem könnte das hier die Lösung sein:
Code: Alles auswählen
If CreateFile(0, "NeueBinary.exe")
WriteData(0, ?DateiStart, ?DateiEnde - ?DateiStart)
CloseFile(0)
EndIf
DataSection
DateiStart:
IncludeBinary "Binary.exe"
DateiEnde:
EndDataSection
Viele Grüße
PB 5.7x (x64), LinuxMint 18.3 - Xfce (x64)
Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
- 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
Als String oder als RC_DATA ?
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.
- 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
Du solltest beides als RC_DATA nehmen, Stringresourcen sind mehr für Einzeiler gedacht.
Hier mal ein Beispielcode, konnte ich unter Linux aber nicht testen , also auf eigene Gefahr.
Wenn Du beim ResourceSkript keine Fehler machst, sollte es funktionieren!
Ansonsten nochmal Nachhaken
Hier mal ein Beispielcode, konnte ich unter Linux aber nicht testen , also auf eigene Gefahr.
Code: Alles auswählen
Procedure LoadResource(ResNumber.l, Hmodule.l = 0)
Protected ResName.s
Protected hFind.l, hLoad.l, hLock.l, hSize.l, Mem.l
Protected ResType.s = "RC_DATA"
ResName = "#" + Str(ResNumber)
If Not Hmodule : Hmodule = GetModuleHandle_(#Null) : EndIf
hFind = FindResource_(Hmodule, ResName, @ResType)
If hFind
hLoad = LoadResource_(Hmodule, hFind)
hSize = SizeofResource_(Hmodule, hFind)
hLock = LockResource_(hLoad)
Mem = AllocateMemory(hSize)
If Mem
CopyMemory(hLock, Mem, hSize)
FreeResource_(hLock)
ProcedureReturn Mem
EndIf
EndIf
EndProcedure
*FilePointer = LoadResource(1); File wurde als RC_DATA mit der Nummer 1 im Resource Skript erzeugt
If *FilePointer
If CreateFile(0, "test.exe")
WriteData(0, *FilePointer, MemorySize(*FilePointer))
CloseFile(0)
FreeMemory(*FilePointer)
EndIf
EndIf
*TextPointer = LoadResource(2)
If *TextPointer
MyText.s = PeekS(*TextPointer)
FreeMemory(*TextPointer)
EndIf
Ansonsten nochmal Nachhaken
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.
Danke für eure Antworten,
TS-Soft: Super Code - funktioniert einwandfrei. Das war genau wonach ich gesucht hatte!!!
Einzige Einschränkung: Es funktionierte bei mir nicht mit "RC_DATA", dafür aber mit dem Wert "TEXT" oder "RDATA".
Also unter Umständen den Wert für "ResType.s" im Code ändern...
Gruß Mike
TS-Soft: Super Code - funktioniert einwandfrei. Das war genau wonach ich gesucht hatte!!!
Einzige Einschränkung: Es funktionierte bei mir nicht mit "RC_DATA", dafür aber mit dem Wert "TEXT" oder "RDATA".
Also unter Umständen den Wert für "ResType.s" im Code ändern...
Gruß Mike
- 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
Naja, wenn Du meine UDRes lib nimmst, haste es einfacher. Dort heißt der Typ PBDATA
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.