AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Binärdaten in Quellcode

Ein Thema von Schwedenbitter · begonnen am 11. Sep 2017 · letzter Beitrag vom 24. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

[gelöst] Binärdaten in Quellcode

  Alt 11. Sep 2017, 22:37
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?
Alex Winzer

Geändert von Schwedenbitter (12. Sep 2017 um 17:15 Uhr) Grund: Die Frage wurde beantwortet.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Binärdaten in Quellcode

  Alt 11. Sep 2017, 22:45
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Binärdaten in Quellcode

  Alt 11. Sep 2017, 22:52
Darf man fragen warum keine Ressourcendatei? Die Ressourcen werden ja auch in das Kompilat einkompiliert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Binärdaten in Quellcode

  Alt 11. Sep 2017, 23:05
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.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Binärdaten in Quellcode

  Alt 11. Sep 2017, 23:40
Darf man fragen warum keine Ressourcendatei? Die Ressourcen werden ja auch in das Kompilat einkompiliert.
Wenn ich das weitergebe, möchte ich nur eine Unit als pas-Datei haben und nicht noch 2 Bilddateien, eine RC-Datei etc.
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...
Alex Winzer
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Binärdaten in Quellcode

  Alt 12. Sep 2017, 00:25
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;
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: Binärdaten in Quellcode

  Alt 12. Sep 2017, 08:42
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.
Vielleicht sind die PngComponents hier besser geeignet. Die dort vorhandene PngImageList speichert eben keine BMPs sondern direkt das PNG-Format. Falls die Bilder unterschiedlich groß sind, kannst du auch die PngImageCollection verwenden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Binärdaten in Quellcode

  Alt 12. Sep 2017, 17:14
...
Du kannst natürlich ein Array nehmen. Schön ist das alles nicht.
Habe ich gemacht. Danke für den Code. Ich habe es durchprobiert. Die exe-Datei ist mit der Konstante sogar geringfügigst kleiner geworden (2.126.407 vs. 2.126.336). Ich bin bei kleinen Programmen Befürworter der Eine-exe-Datei. Dort besteht nicht die Gefahr, dass man Dateien verliert oder über Manipulationen das Programm verändert wird; Gleiches gilt für die Weitergabe von pas-Dateien.
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.

Vielleicht sind die PngComponents hier besser geeignet.
...
Danke für diesen Tipp! Ich habe es mir runtergeladen und angesehen. Sehr schöne Arbeit.
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.
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: [gelöst] Binärdaten in Quellcode

  Alt 12. Sep 2017, 18:05
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 Hier im Forum suchenManifest-Creator ... das ICON, was man da einfügen kann.

Und ImageList ... da brauchst du auch noch eine DFM zu deiner PAS.



PS: Die RC ist für die RES das, was deine PAS für eine DCU ist.
$2B or not $2B

Geändert von himitsu (12. Sep 2017 um 18:09 Uhr)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#10

AW: [gelöst] Binärdaten in Quellcode

  Alt 12. Sep 2017, 18:11
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz