wie binäre datei einbinden und dann darauf zugreifen?

Rund um die LCL und andere Komponenten
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von m.fuchs »

Kann es übrigens sein, dass du einen anderen Fehler nicht gesehen oder erwähnt hast? Eigentlich sollte beim Fehlen von LResources noch etwas kommen:

Code: Alles auswählen

Error: Identifier not found "LazarusResources"
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

ja, diese meldung kam, allerdings war sie optisch nicht als fehler hervorgehoben, weswegen ich sie auf den ersten blick nicht sah.
ok, im text sieht man es, weil der text "error: " davorsteht, aber auf den ersten, flüchtigen blick nicht.
das beste daran ist: beim kompilieren war sie kurz als fehler gekennzeichnet(roter kreis mit ausrufezeichen), aber nach
abschluss der kompilierung hebt er scheinbar nur den letzten fehler endgültig hervor und versieht alle vorherigen meldungen
mit einem "zauberstabsymbol". wenn ich dieses verhalten abschalten könnte, wäre mir generell geholfen und solche sachen
wie diese würden ausbleiben. egal, ich kann ja jetzt weiterarbeiten und alles funktioniert. :D

hab meine statusmeldungen nach dem kompilieren mal angehängt.
Dateianhänge
meldungen.gif
meldungen.gif (8.92 KiB) 912 mal betrachtet
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

jetzt kompliert er zwar, aber ich kann auf meine ressource irgentwie nicht zugreifen. es kommt die meldung, das er sie nicht findet.
sie wurde aber im initialisierungsteil der unit mit $i eingebunden.
ich versuche mit einem TResourceStream auf meine ressource zuzugreifen, um dann bequem einzelne bytes auslesen zu können.
(das ressourcen-tutorial-beispiel bekommt den ressouceninhalt ja nur als grossen string zurück, was für mich unpraktisch ist.)
hier mein code:

Code: Alles auswählen

var
Res:TResourceStream;
begin
Res:=TResourceStream.Create(HInstance, 'myres' , 'DAT');
end;
in der .lrs-datei ist die ressource auch so definiert:
LazarusResources.Add('myres','DAT', ...
es gibt noch eine andere variante von "TResourceStream.Create", welche die ressourcen-id als parameter akzeptiert, aber leider weiss
ich nicht, wie ich an die id kommen kann.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von pluto »

Das kannst du gerne Ändern. Wenn du dort angemeldet bist oder dort einen Entsprechenden Hinweis geben.
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Socke »

Leberecht hat geschrieben:ich versuche mit einem TResourceStream auf meine ressource zuzugreifen, um dann bequem einzelne bytes auslesen zu können.
(das ressourcen-tutorial-beispiel bekommt den ressouceninhalt ja nur als grossen string zurück, was für mich unpraktisch ist.)
In der Kombination Lazarus und Free Pascal Compiler gibt es zwei unterschiedliche, nicht zueinander kompatible Ressourcen-Systeme. Die Lazarus-Ressourcen sind komplett in Pascal auf Anwendungsebene geschrieben, während die Free Pascal Ressourcen den Windows-Ansatz von Ressourcen in Programmdateien auch unter anderen Plattformen umsetzt.

Da du für deine Ressourcen die Lazarus-Variante verwendet hast, musst du auch TLazarusResourceStream verwenden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

danke, es hat funktioniert. :)
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Antworten