Wie exportiere ich eine Ressource?
-
- Beiträge: 15
- Registriert: 02.07.2010 13:00
Wie exportiere ich eine Ressource?
Guten Abend alle zusammen,
ich habe gerade die Funktion unter Compiler --> Compiler Optionen --> Ressourcen gesehen das man jede X-belibige Datei in die *.exe Datei packen kann. Nun war die erste Frage die sich mir gestellt hat: "Wie ich eine solche Ressource wieder als normale Datei abspeichern kann?
Also wie ich sie exportieren kann.
Habe in der Hilfe leider nicht dazu entdeckt.
max_oldliner
ich habe gerade die Funktion unter Compiler --> Compiler Optionen --> Ressourcen gesehen das man jede X-belibige Datei in die *.exe Datei packen kann. Nun war die erste Frage die sich mir gestellt hat: "Wie ich eine solche Ressource wieder als normale Datei abspeichern kann?
Also wie ich sie exportieren kann.
Habe in der Hilfe leider nicht dazu entdeckt.
max_oldliner
- 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
Re: Wie exportiere ich eine Ressource?
Ist ja auch API, wenn Du die Windows-Resourcen meinst.max_oldliner hat geschrieben:Habe in der Hilfe leider nicht dazu entdeckt.
max_oldliner
Diese Routine bringt Dich auch den richtigen Weg. Also Resource finden: FindResource_(), Resource laden: LoadResource_(), größe ermitteln SizeOfResouce_() und Pointer finden: LockResource_().
Danach den Speicher nur noch auf Platte schreiben. Mit IncludeBinary hättest Du es bestimmt einfacher.
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: 15
- Registriert: 02.07.2010 13:00
Re: Wie exportiere ich eine Ressource?
Vielen Dank ts-soft.
Mit den befehlen konnte ich sogar einen guten Thread im englischem Board finden:
http://www.purebasic.fr/english/viewtop ... 12&t=17950
Jetzt habe ich folgenden Code:
Ich habe die Datei bild.jpg eingebunden. Komisch ist nur das die *.exe Datei nur 50 kb groß ist obwohl das Bild 1,5 mb groß ist.
Ich habe keine Ahnung woran das liegt.
max_oldliner
Mit den befehlen konnte ich sogar einen guten Thread im englischem Board finden:
http://www.purebasic.fr/english/viewtop ... 12&t=17950
Jetzt habe ich folgenden Code:
Code: Alles auswählen
ProcedureDLL SaveResourceAs(Name.s,File.s)
; (Use GetModuleHandle_ if you want to specify another file)
HandleResource= FindResource_(0,@Name,#RT_RCDATA)
If HandleResource
HandleGlobalMemoryBlock=LoadResource_(0,HandleResource)
PointerFirstByteOfTheResource=LockResource_(HandleGlobalMemoryBlock)
; Get size of the resource
Size= SizeofResource_(Handle,HandleResource)
; Save the file
FileId=OpenFile(#PB_Any,File)
If FileId
WriteData(FileID,HandleGlobalMemoryBlock,Size)
CloseFile(FileId)
EndIf
; Test if the file is written
If FileSize(File)=Size
ProcedureReturn 1
EndIf
EndIf
EndProcedure
SaveResourceAs("bild.jpg", "C:\test.jpg")
Ich habe keine Ahnung woran das liegt.
max_oldliner
- 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
Re: Wie exportiere ich eine Ressource?
Ich hoffe, Du hast den Link in meinem Posting (Diese) nicht übersehen 

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: 15
- Registriert: 02.07.2010 13:00
Re: Wie exportiere ich eine Ressource?
Nein aber die andere Funktion fand ich einfacher.
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Wie exportiere ich eine Ressource?
Wirklich einfach wäre, die von Thomas bereits erwähnte Funktion IncludeBinary.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- 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
Re: Wie exportiere ich eine Ressource?
max_oldliner hat geschrieben:Nein aber die andere Funktion fand ich einfacher.

Das Ergebnis ist der Pointer und in *ResSize befindet sich die Größe, einfacher gehts nicht

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: 15
- Registriert: 02.07.2010 13:00
Re: Wie exportiere ich eine Ressource?
Okay danke. Der Funktionsaufruf ist ja:
Der ResName wäre ja in meinem Fall "bild.jpg" aber was ist der Res Type?
Code: Alles auswählen
GetResource(ResNr.l, ResName.s, ResType.l, hModule.l = 0, *ResSize.long = 0)
Re: Wie exportiere ich eine Ressource?
Grüße ... Kiffits-soft hat geschrieben:Mit IncludeBinary hättest Du es bestimmt einfacher.
a²+b²=mc²
-
- Beiträge: 15
- Registriert: 02.07.2010 13:00
Re: Wie exportiere ich eine Ressource?
Code: Alles auswählen
If CreateFile(0,"C:\neuedatei.png")
WriteData(0, ?IncludeStart, ?IncludeEnd-?IncludeStart)
CloseFile(0)
EndIf
DataSection
IncludeStart:
IncludeBinary "C:\parsed.png"
IncludeEnd:
EndDataSection