Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Seite 1 von 2  1 2      

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