Einzelnen Beitrag anzeigen

SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

TFileStream Speichern nach Vergrößerung

  Alt 4. Apr 2010, 15:09
Hallo leute,
bin gerade an einem neuen kleinen Projekt dran.

Ich erkläre nur einmal ganz kurz die Funktion:
Also ich habe jetzt die Größe einer Datei als MD5 Hash.

Jetzt möchte ich eine belibige Datei in mein Programm laden, die ein wenig kleiner ist als meine Original Datei.
Sprich:
Original Datei = 5 MB
Datei2 = 4,5 MB

Wenn ich nun Datei2 in mein Programm lade, wird von der Größe dieser Datei ein MD5 Hash erstellt.
Sollte dieser Hash nun gleich sein mit dem Hash der Original Datei, dann soll die Datei gespeichert werden.

Sollte der MD5 Hash nicht gleich sein, wir gehen davon aus, das die Datei2 kleiner ist, dann soll auf die Datei 1 Bit daz addiert werden und wieder von der neuen Größe der MD5 Hash erstellt werden.
Und das so lange, bis eben die beiden Hashs gleich sind.

Soweit ist das ganze auch kein Problem.
Hier mal ein wenig Code von mir:

var lstream : TFileStream; Sollte klar sein.
Delphi-Quellcode:
begin
 Opendialog1.Execute();
 try
 lStream := TFileStream.Create(OpenDialog1.Filename, fmOpenReadWrite);
Hier wähle ich eine Datei aus, und lade sie auf lStream.

lstream.Size := lstream.Size + 1 Und hiermit erhöhe ich die Größe der Datei immer um 1 Bit.


Sollte soweit richtig sein, hoffe ich^^.

Nunja jetzt zu meinem Problem.
Wenn nun die beiden Hashs übereinstimmen, soll die Datei Natürlich gespeichert werden.
Nur wie mache ich das jetzt?

Habe schon lstream := TFileStream.Create('E:\MD5 After.txt', fmCreate); probiert, aber dann wird immer nur eine leere Datei erstellt, die 0 Byte groß ist.

Die Datei die ich auf lStream lade (in meinem falle eine Textdatei) steht aber "1234567890" drin.
Also sollt doch auch wenigstens das nach dem speichern auch wieder drin stehen.

Könnt ihr mir helfen?
  Mit Zitat antworten Zitat