Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Fehlerhafte JPG Dateien Reparieren? (https://www.delphipraxis.net/77955-fehlerhafte-jpg-dateien-reparieren.html)

Dirkmswt 27. Sep 2006 08:59


Fehlerhafte JPG Dateien Reparieren?
 
Hallo Liebe Delphi Entwickler,
Seit geraumer Zeit habe ich mehrere JPG Bilder die mal durch einen Virus beschädigt wurden.
Seit längerem probiere ich den Datei-Header wieder zu Rekonstruieren.
Jetzt meine Frage:
Wie könnte ich die Dateien mit Delphi erstellten Anwendung Analysieren und den fehlerhaften Header neu in die Datei schreiben?
Habe im Netz entsprechende Software gefunden aber möchte sowas gerne selbst Realisieren.
Gruß Dirk

Sunlight7 27. Sep 2006 18:27

Re: Fehlerhafte JPG Dateien Reparieren?
 
Hallo, guck mal hier, vielleicht hilft Dir das etwas weiter:
Die ersten paar bytes einer Datei überschreiben

Dirkmswt 28. Sep 2006 09:04

Re: Fehlerhafte JPG Dateien Reparieren?
 
Idee ist ganz ok,aber hab prompt einen fehler gefunden :shock:
Count wurde nicht angegeben.
Habe es mit Werten und Variablen probiert aber bringt immer einen Fehler in Delphi 7!
:wall:

Sunlight7 28. Sep 2006 19:25

Re: Fehlerhafte JPG Dateien Reparieren?
 
Nix verstehen.

Meinst Du Count bei meinem Quelltext oder bei Deinem, welche Fehler meinst Du?

Dirkmswt 28. Sep 2006 21:37

Re: Fehlerhafte JPG Dateien Reparieren?
 
Ich meine das der Quelltext so nicht übersetzt wird mit Delphi7 :(
Borland hat wohl etwas geändert,wobei die struktur ok ist :shock:
Habe eine ähnliche Funktion zum Shreddern einer Datei die auch mit Blockwrite arbeitet und auch nur 3 Parameter benötigt,der Quelletext des Beispiels funktioniert leider nicht.
Hier mal mein Beispiel was ich meine.

Hier ein kleiner Teil meiner shredder funktion

BlockWrite(f, FillBuffer[j], Buffer);

Funktioniert ohne fehler!!!!


Der Teil bricht mit der Compilermeldung variable required ab

BlockWrite(F, PChar(Header), Length(Header));

Lustig oder? :lol:

Sunlight7 28. Sep 2006 21:57

Re: Fehlerhafte JPG Dateien Reparieren?
 
Versuch halt den 4. (optionalen) Parameter anzugeben.

Delphi-Quellcode:
BlockWrite(F, FillBuffer[j], BufferSize, NumWritten);
Oder direkt die API aufrufen (CreateFile & WriteFile)

Was ist FillBuffer für ein Typ?

Dirkmswt 29. Sep 2006 10:46

Re: Fehlerhafte JPG Dateien Reparieren?
 
mit dem 4. operator klappt das auch nicht :(
Buffer hat bei mir den Wert 1024 als Konstante :idea:
Die funktion hat aber nur als Beispile gedient,mich Interessiert wie ich nur den Datei-Header bearbeiten kann :zwinker: und nicht wie ich eine Datei mit verschiedenen Strings vor Rekunstruktion schütze denn das weis ich schon :thumb:

shmia 29. Sep 2006 11:04

Re: Fehlerhafte JPG Dateien Reparieren?
 
Delphi-Quellcode:
procedure WriteHeader(const FileName: string; const Header: AnsiString);
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(FileName, fmOpenReadWrite);
  try
      fs.WriteBuffer(Header[1], Length(Header));
  finally
    fs.Free;
  end;
end;
Der korrekten Header lädst du am Besten aus einer Datei:
Delphi-Quellcode:
function FileToString(const FileName: string): AnsiString;
var
  fs: TFileStream;
  Len: Integer;
begin
  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    Len := fs.Size;
    SetLength(Result, Len);
    if Len > 0 then
      fs.ReadBuffer(Result[1], Len);
  finally
    fs.Free;
  end;
end;
Delphi-Quellcode:
var
   header : string;
begin
   header := FileToString('header.dat');
   WriteHeader('kaputt.jpeg', header);

Dirkmswt 1. Okt 2006 10:15

Re: Fehlerhafte JPG Dateien Reparieren?
 
Coole Sache,funktioniert ohne Fehler.
Danke. :zwinker:


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