wie binäre datei einbinden und dann darauf zugreifen?
-
- 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
wie binäre datei einbinden und dann darauf zugreifen?
hallo,
ich habe ein problem, für das ich einfach keine lösung finde. ich möchte gern eine binärdatei von ca. 600kb grösse meinem lazarus-projekt hinzufügen, undzwar so, das diese später in der compilierten .exe
mit eingebunden ist (ähnlich den image bildcontainern, die man auf formularen platziert und die bilder enthalten). wichtig ist für mich ausserdem, das ich dann im programm leicht auf diese
ressource zugreifen und z.b. byte 425 auslesen kann. was ist da die beste vorgehensweise, gibts irgentein containerelement in der lcl, welches das kann?
vielen dank.
ich habe ein problem, für das ich einfach keine lösung finde. ich möchte gern eine binärdatei von ca. 600kb grösse meinem lazarus-projekt hinzufügen, undzwar so, das diese später in der compilierten .exe
mit eingebunden ist (ähnlich den image bildcontainern, die man auf formularen platziert und die bilder enthalten). wichtig ist für mich ausserdem, das ich dann im programm leicht auf diese
ressource zugreifen und z.b. byte 425 auslesen kann. was ist da die beste vorgehensweise, gibts irgentein containerelement in der lcl, welches das kann?
vielen dank.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: wie binäre datei einbinden und dann darauf zugreifen?
Ich weiß nicht wie das genau funktioniert, aber dafür gibt es die Möglichkeit "Ressourcen" einzubinden und zur Laufzeit auszulesen.
-Michael
-Michael
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: wie binäre datei einbinden und dann darauf zugreifen?
Gehe ich davon aus, das Die Binäri als Exe vorliegt? wenn ja http://wiki.lazarus.freepascal.org/Exec ... rograms/de" onclick="window.open(this.href);return false;. sollte auch so mithelfen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache
und der Kreis Segeberg meine LIEBE 


- 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?
@Maik81ftl: Du hast aber schon gelesen was Leberecht geschrieben hat?
Ressourcen sind wohl die Antwort (http://wiki.freepascal.org/Lazarus_Resources). Auf der Seite ist auch beschrieben, wie man per TResourceStream darauf zugreifen kann. Damit sollte dann auch per Seek oder ähnlichem ein Bytegenauer Zugriff möglich sein.
hth
Michael

Ressourcen sind wohl die Antwort (http://wiki.freepascal.org/Lazarus_Resources). Auf der Seite ist auch beschrieben, wie man per TResourceStream darauf zugreifen kann. Damit sollte dann auch per Seek oder ähnlichem ein Bytegenauer Zugriff möglich sein.
hth
Michael
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: wie binäre datei einbinden und dann darauf zugreifen?
lazmxstorage könnte es dir etwas erleichtern (ich hab's noch nicht getestet)
http://forum.lazarus.freepascal.org/ind ... 056.0.html" onclick="window.open(this.href);return false;
http://sourceforge.net/projects/lazmxstorage/" onclick="window.open(this.href);return false;
http://forum.lazarus.freepascal.org/ind ... 056.0.html" onclick="window.open(this.href);return false;
http://sourceforge.net/projects/lazmxstorage/" onclick="window.open(this.href);return false;
-
- 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?
danke für die antworten. habs mal zuerst mit lazarus-ressourcen probiert -ging leider nicht:
1. das tools "lazres" benutzt, um aus einer .dat-datei(teile einer ehemaligen .jpg-datei) eine ressource zu machen. nach anleitung gemacht: "lazres meineNeueRessource.lrs res01.dat"
2. die .lrs in meinen projekt-ordner kopiert
3. in der betreffenden unit am schluss die ressource eingebunden:
initialization
{$I meineNeueRessource.lrs}
4. kompiliert. fehlermeldung: meineNeueRessource.lrs(65,3): Error: type conflict between set elements
es sieht wohl so aus, das er in einer zeile mit der art der binären daten nicht klarkommt.
auch ist die grösse der ressoucendaten um ein vielfaches grösser. original: 600kb, .lrs=2mb.
weiss jemand, was ich da tun kann. für reine fpc-ressoucen braucht man ja wieder eigene ressourcen-kompiler, so das ich lieber lei lazarus-ressoucen bleiben würde.
1. das tools "lazres" benutzt, um aus einer .dat-datei(teile einer ehemaligen .jpg-datei) eine ressource zu machen. nach anleitung gemacht: "lazres meineNeueRessource.lrs res01.dat"
2. die .lrs in meinen projekt-ordner kopiert
3. in der betreffenden unit am schluss die ressource eingebunden:
initialization
{$I meineNeueRessource.lrs}
4. kompiliert. fehlermeldung: meineNeueRessource.lrs(65,3): Error: type conflict between set elements
es sieht wohl so aus, das er in einer zeile mit der art der binären daten nicht klarkommt.
auch ist die grösse der ressoucendaten um ein vielfaches grösser. original: 600kb, .lrs=2mb.
weiss jemand, was ich da tun kann. für reine fpc-ressoucen braucht man ja wieder eigene ressourcen-kompiler, so das ich lieber lei lazarus-ressoucen bleiben würde.
- 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?
Könnte sein dass der lazres da einen Fehler gemacht hat. Kannst du die betreffende Zeile der lrs mal posten? Und welche Lazarusversion nutzt du?Leberecht hat geschrieben:[..] fehlermeldung: meineNeueRessource.lrs(65,3): Error: type conflict between set elements
Das ist normal, die .lrs sind immer größer. Im einkompilierten Zustand gilt das für die Ressourcen nicht mehr.Leberecht hat geschrieben:[..]auch ist die grösse der ressoucendaten um ein vielfaches grösser. original: 600kb, .lrs=2mb.
mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- 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?
die betreffende zeile lautet:
+#249'fux'#165#154#24#217'FA.FO&'#158#243#221#223#219#201#20#151'A]X'#194#152
ich nutze lazarus 0.9.30, win 32bit (mit fpc 2.4.2).
+#249'fux'#165#154#24#217'FA.FO&'#158#243#221#223#219#201#20#151'A]X'#194#152
ich nutze lazarus 0.9.30, win 32bit (mit fpc 2.4.2).
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)
-
- 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?
Was für ein Vorteil hat es, diese Binäre Datei einzubinden Statt Dynamisch drauf zuzugreifen?
Ich finde, dass hat nur "Nachteile".
Ich finde, dass hat nur "Nachteile".
MFG
Michael Springwald
Michael Springwald
-
- 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?
kopierschutz, bzw. prüfen der lizenzdatei mittels keydatei(one time pad-verfahren). wenn ich die von einer externen quelle lade, kann man
mit einem disassembler wesentlich leichter die quelle identifizieren und auf das verfahren schliessen.
mit einem disassembler wesentlich leichter die quelle identifizieren und auf das verfahren schliessen.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)
-
- 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?
So wie du es jetzt Plant aber auch. Es gibt tools, die können sowas feststellen. Es ist nicht viel schwerer. Aber die Leute die sich damit auskennen, für die ist das kein Problem. Mach das doch so wie bei Clonk.
Dort läuft es in etwa so ab:
Ich kaufe mir das spiel, dann bekomme ich eine E-Mail mit einer Datei. Diese Datei muss ich dann nur noch in ein Bestimmtes Verzeichnis Kopieren Fertig. Es kommt natürlich darauf an, wie du die Datei aufbaust. Z.B. könntest du Checksummen verwenden und der gleichen.
Dort läuft es in etwa so ab:
Ich kaufe mir das spiel, dann bekomme ich eine E-Mail mit einer Datei. Diese Datei muss ich dann nur noch in ein Bestimmtes Verzeichnis Kopieren Fertig. Es kommt natürlich darauf an, wie du die Datei aufbaust. Z.B. könntest du Checksummen verwenden und der gleichen.
MFG
Michael Springwald
Michael Springwald
-
- 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?
nein, wenn du code-obfuscation verwendest, kriegen die leute das eben nicht bzw. nur extrem schwer raus und ich glaube nicht, das jemand bei einer anwendung für 30 euro diesen aufwand betreiben würde. bei einer externen datrei braucht man halt nur die file-io zugriffe der anwendung beobachten, das geht alt auch mit obfuscation.
das weiss ich alles und so mache ich es auch. nur die lizenzdatei muss ja auch verschlüsselt sein und mein prog muss diese entschlüsseln . dazu brauch ich einen key und die eingebundene ressource ist der key.Ich kaufe mir das spiel, dann bekomme ich eine E-Mail mit einer Datei. Diese Datei muss ich dann nur noch in ein Bestimmtes Verzeichnis Kopieren Fertig. Es kommt natürlich darauf an, wie du die Datei aufbaust. Z.B. könntest du Checksummen verwenden und der gleichen.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)
- 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?
Hm,Leberecht hat geschrieben:die betreffende zeile lautet:Code: Alles auswählen
+#249'fux'#165#154#24#217'FA.FO&'#158#243#221#223#219#201#20#151'A]X'#194#152
mit dieser Zeile kommt mein Lazarus (gleiche Version wie deins) klar.
Abgesehen davon wäre das dritte Zeichen in der .lrs-Datei immer das + zum Beginn der neuen Zeile. Endet die vorherige Zeile vielleicht etwas seltsam?
Hast du es mal mit anderen Dateien versucht, an Stelle dieser die den Fehler produziert? Ich vermute mal die komplette .lrs und die Original-Datei kannst du aus Geheimhaltungsgründen nirgendwo zum Download zu stellen.
mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- 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?
oh mann, ich hatte "LResources" in der uses-aufzählung vergessen -jetzt kompiliert er anstandslos durch.
sorry für die aufregung, daran hatte ich nicht gedacht.
sorry für die aufregung, daran hatte ich nicht gedacht.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)
-
- 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?
ich sehe gerade, das die notwendige verwendung von "LResources" beim EINBINDEN von ressourcen-dateien in der anleitung
(http://wiki.freepascal.org/Lazarus_Resources" onclick="window.open(this.href);return false;) nicht erwähnt wird.
nur beim abfragen/zugriff auf die ressourcendaten(welche ja aus einer anderen unit heraus erfolgen kann) wird es als nötig erwähnt.
sollte man villeicht ein bisschen klarer schreiben.
(http://wiki.freepascal.org/Lazarus_Resources" onclick="window.open(this.href);return false;) nicht erwähnt wird.
nur beim abfragen/zugriff auf die ressourcendaten(welche ja aus einer anderen unit heraus erfolgen kann) wird es als nötig erwähnt.
sollte man villeicht ein bisschen klarer schreiben.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)