Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Große datenmenge in den Source-Code einbinden (https://www.delphipraxis.net/181686-grosse-datenmenge-den-source-code-einbinden.html)

wendelin 2. Sep 2014 22:56

Große datenmenge in den Source-Code einbinden
 
Hallo,
ich möchte ca. 300.000 Bytes im Source-Code (ähnlich wie bei Data von Glyph's) direct in den
Source-Code einbinden. Also NICHT in einer Datei speichern.
Zur Laufzeit möchte ich diese Daten dann in ein dyn. Array laden. Wie geht das, und was ist der
effektivste Weg.

Wendelin

himitsu 2. Sep 2014 23:01

AW: Große datenmenge in den Source-Code einbinden
 
Ab in die Resourcen und dann TResourceStream (oder Gergleichen).

Man kann natürlich auch von einem Programm die Daten in Quellcode umwandeln, genauer in die Deklaration einer Konstante eines statischen Bxtearrax, oder du bastelst dir eine Komponente, welche das wie bei einer TImageList in der DFM speichert, aber das wäre dann doch zu krank.

Uwe Raabe 2. Sep 2014 23:45

AW: Große datenmenge in den Source-Code einbinden
 
Zitat:

Zitat von wendelin (Beitrag 1270765)
ich möchte ca. 300.000 Bytes im Source-Code (ähnlich wie bei Data von Glyph's) direct in den
Source-Code einbinden. Also NICHT in einer Datei speichern.
Zur Laufzeit möchte ich diese Daten dann in ein dyn. Array laden.

Aus welchem Grund muss es unbedingt im Source sein?

Brauchst du das hier für Delphi 7 oder geht auch ein aktuelles?

EarlyBird 3. Sep 2014 06:52

AW: Große datenmenge in den Source-Code einbinden
 
oder du nimmst eine MemTable z.B. TVirtualTable von Devart
Die Tabelle Kannst Du im Editor bearbeiten und auch Daten eintragen die im Source gespeichert werden.

Blup 3. Sep 2014 08:32

AW: Große datenmenge in den Source-Code einbinden
 
Als Resource anlegen und bei dieser Größe die Daten vorher komprimieren.
z.B. mit TCompressionStream, TDecompressionStream
Beispiel zum Daten lesen:
Delphi-Quellcode:
var
  MyData: packed array of Byte;
begin
  lStream1 := TResourceStream.Create(HInstence, 'MyData', RT_RCDATA);
  lStream2 := TDecompressionStream.Create(lStream1);
  SetLentgth(MyData, lStream2.Size);
  lStream2.ReadBuffer(MyData[0], lStream2.Size);
  lStream2.Free;
  lStream1.Free;

wendelin 3. Sep 2014 10:51

AW: Große datenmenge in den Source-Code einbinden
 
Hallo,
zunächst einmal vielen Dank für Eure vielfältigen Antworten.
Ich muß mich erst einmal mit allen den angesprochenen Möglichkeiten beschäftigen.

An Herrn Raabe : Ich bin Hobby-Programmierer und habe nur Delphi 2,5,6,7 zur Verfügung.
Um zu verhindern, dass eine gespeicherte Datei einfach gelesen werden kann
(auch komprimiert) möchte ich die Daten im Source haben; ich brauche sie für
mein Crypto-Tool.

nochmals vielen Dank:-D
Wendelin

Dejan Vu 3. Sep 2014 11:00

AW: Große datenmenge in den Source-Code einbinden
 
Das geht aber fast genauso einfach, wenn die Daten in der EXE sind. Da müsstest Du dich schon sehr bemühen, die Daten verteilen, zerstückeln, mischen usw, um sie dann in Memory wieder zusammen zu basteln. Und dann kann man das auch knacken.

Security by obscurity ist keine gute Strategie bei der Verschlüsselung.

wendelin 4. Sep 2014 17:10

AW: Große datenmenge in den Source-Code einbinden
 
Hallo, Dejan Vu

wenn man die Kenntnisse und Fähigkeiten hat, kann man sicher fast alles knacken ! Es kostet allerdings Zeit, unter Umständen auch sehr viel Zeit und natürlich auch Geld.

Und vielleicht kann man dann z.B. im Klartext lesen : 'Ich freue mich, wenn OMA uns morgen besucht!'
Das blöde Gesicht des Kryptoanalytikers möchte ich dann sehen.

Gruß Wendelin

vagtler 4. Sep 2014 17:20

AW: Große datenmenge in den Source-Code einbinden
 
Dejan Vu hat nur zu Recht darauf hingewiesen, dass es sicherheitstechnisch keinen Unterschied macht, ob diese Daten im Source gespeichert werden oder woanders. Aber sowas von keinen...

himitsu 4. Sep 2014 18:03

AW: Große datenmenge in den Source-Code einbinden
 
Die Daten liegen dann so oder so in der EXE und das wo ist somit vollkommen egal.
Als Konstante wird die Position schön in der Realocation-Tabelle verlinkt und in den Resourcen in im Resourcen-Index.

Nur daß man du Dataien leichter in die Resourcen bekommst, als in den Quellcode.

Außerdem müssen die Daten im Quellcode auch noch durch den Compiler, während sie als Resource nurden Linker passieren müssen.
Und glaub es mir, du willst nicht daß der Compiler das behandeln muß und ihm vermutlich noch der RAM aus geht.

Der schöne Günther 4. Sep 2014 18:22

AW: Große datenmenge in den Source-Code einbinden
 
Ich glaube das versteht man nur, wenn man Compilerbauer ist. Ich bin's nicht.

Der arme Mann möchte doch wohl einfach nur eine LUT, ein Bitmap oder was auch immer nicht im Dateisystem liegen haben, sondern direkt dabei ("in der Exe") haben.

Ich habe es nie gemacht, aber das hier ist doch die eigentliche Antwort auf seine Frage, oder?

himitsu 4. Sep 2014 19:57

AW: Große datenmenge in den Source-Code einbinden
 
Dagegen sagt ja niemand was.
Zitat:

Zitat von Der schöne Günther (Beitrag 1271077)
Ich habe es nie gemacht, aber das hier ist doch die eigentliche Antwort auf seine Frage, oder?

Aber genau das will er ja, aus unerfindlichen Gründen, nicht machen.
Es wurde ihm auch gleich als Erstes angeboten, da es (obwohl da noch nichtmal der Grund bekannt war, welcher erst später verraten wurde) viele Vorteile un praktisch keine Nachteile bringt.

wendelin 4. Sep 2014 23:11

AW: Große datenmenge in den Source-Code einbinden
 
Zitat:

Der arme Mann möchte doch wohl einfach nur eine LUT, ein Bitmap oder was auch immer nicht im Dateisystem liegen haben, sondern direkt dabei ("in der Exe") haben.

Ich habe es nie gemacht, aber das hier ist doch die eigentliche Antwort auf seine Frage, oder?
Hallo, genau das ist die Lösung (es gibt auf der Seite noch weitere Links zu dem Thema) die
ich brauche.

Wendelin:-D

Dejan Vu 5. Sep 2014 06:32

AW: Große datenmenge in den Source-Code einbinden
 
Siehe Beitrag #2. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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