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?