![]() |
[gelöst] Binärdaten in Quellcode
Hallo,
ich bastel an einer Klasse, die von TBitBtn abgeleitet ist. Die Glyphs lade ich derzeit aus zur Laufzeit aus externen Dateien. Um Platz zu sparen sind das PNG-Dateien. Ich meine irgendwo mal gesehen zu haben, dass man solche Daten (oder Streams?) in den Code mit aufnehmen kann. Die PNG-Bilder sind in Summe lächerliche 583 Bytes. Die kann ich locker abtippen. Ich möchte ausdrücklich keine res-Datei beim Compilieren mit einbinden. Ich meine ich so etwas als array in der const-Definition gesehen. Daher meine Frage: Gibt es irgend eine Möglichkeit, diese Daten in den Programmcode mit aufzunehmen? |
AW: Binärdaten in Quellcode
Du könntest die Daten in Base64 umwandeln und z.B. in einem nicht sichtbaren Memo oder Label speichern.
Wäre zwar unüblich, sollte aber gehen. |
AW: Binärdaten in Quellcode
Darf man fragen warum keine Ressourcendatei? Die Ressourcen werden ja auch in das Kompilat einkompiliert.
|
AW: Binärdaten in Quellcode
Lade mal ein Bild in der IDE und schaue Dir dann in der DFM an, wie es dort abgelegt ist.
Das kannst Du dann analog auch als Konstante im Quelltext ablegen. Oder benutze eine ImageList, in die Du in der IDE die Bilder lädst, sie werden dann Teil des Formulars. Zur Laufzeit kannst Du dann die Bilder den TBitBtn nach Bedarf zuweisen. |
AW: Binärdaten in Quellcode
Zitat:
Die Idee mit der ImageList fand ich sofort toll. Allerdings fiel mir dann ein, dass die Dateien dort als bmp-Dateien mit mehreren KBytes "gespeichert" werden. Manchmal versuche ich Sachen auch nur, weil ich der Meinung bin, dass es gehen muss. Häufig fällt mir so etwas später wieder ein, wenn ich das wirklich mal brauche... |
AW: Binärdaten in Quellcode
Bilder in DFMs zu speichern, benötigt allerdings in der EXE auch deutlich mehr Platz als Ressourcen.
Du kannst natürlich ein Array nehmen. Schön ist das alles nicht.
Delphi-Quellcode:
const
size = 4711; bild: array[0..size-1] of Byte = (42, ...); var ms: TMemoryStream; begin ms := TMemoryStream.Create; ms.Write(bild[0], size); ms.position := 0; // usw. end; |
AW: Binärdaten in Quellcode
Zitat:
![]() |
AW: Binärdaten in Quellcode
Zitat:
Das Problem war mir erstmals vor Jahren über den Weg gelaufen im Zusammenhang mit der Einbindung einer wav-Datei. Wie es genau ging, weiß ich nicht mehr. Aber ich dachte mir eben, dass es dann mit kleinen PNG-Dateien erst Recht irgendwie gehen muss. Ich finde das also schon schön. :lol: Zitat:
Aber in meinem Fall ist das echt mit Kanonen auf Spatzen zu schießen. Danke für Eure wertvollen Tipps. Für mich sind die Antworten mehr als ausreichend. |
AW: [gelöst] Binärdaten in Quellcode
Du kannst mit einem Res-Editor direkt die "eine" RES bearbeiten/erstellen, ohne ein RC zu benötigen.
In einem RC kannst du Bilder/Daten nicht nur verlinken, sondern auch direkt einfügen. PS: siehe ![]() Und ImageList ... da brauchst du auch noch eine DFM zu deiner PAS. :zwinker: PS: Die RC ist für die RES das, was deine PAS für eine DCU ist. |
AW: [gelöst] Binärdaten in Quellcode
wer das "Problem" hat, für IOS eigene beliebige binäre einfach ohne ITunes simpel per (Bild)File oder Drag&Drop zum/vom PC zu nutzen... der denke mal etwas um die Ecke:
- IOS erlaubt den Transfer von BILD Dateien, das PNG Format ist also erlaubt - Im PNG Format gibt es UserTags oder PrivateTags... - was liegt also näher ein kleines aussagekräftiges ICON im PNG Format um einen PNG.ORG konform ZIP komprimierten ZusatzTag mit privatem binärem Inhalt zu erweitern - so kann man komplette SQlite DBfiles, Updatefiles für Geräte mit denen sich ein APP per BLE verbindet überall vor Ort ganz ohne ITunes von&zum IOS Gerät bekommen - aber es muß PNG konform sein, einfach eine SQliteDB in .PNG umbenennen... das klappt nicht und wird von Apple/IOS abgewehrt => der Weg binäre Daten über PNG-Files zu speichern, egal ob separat oder direkt im Quelltext ist also durchaus nützlich:) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz