![]() |
In einer Datei nach bestimmten Hexcode suchen?
Wie kann ich in einer Bilddatei nach einem bestimmten Hexcode suchen? Ich brauche die Position der Vorkommens. Ich möchte damit z.B. feststellen ob es sich um eine JPEG Datei handelt (mir ist klar das ginge einfacher, aber ich brauche es so). Also nach FFD8 suchen und dann noch ob 5 Byte weiter JFIF ist und dann noch nach dem ende FFD9 suchen. Das gefundene JPEG soll dann in ein extra Stream geladen und gespeichert werden.
|
AW: In einer Datei nach bestimmten Hexcode suchen?
Zitat:
Lade dir die 1. X Bytes rein und dann einfach testen... Wo ist Dein Problem? Etwas genauer und wir können Dir besser antworten. Mavarik |
AW: In einer Datei nach bestimmten Hexcode suchen?
Hallo,
mit TFileStream die Datei öffnen. TFileStream.readbuffer anschauen. Nachdem ersten Auftreten von $FF suchen, wenn gefunden dann schauen ob das nächste Zeichen $D8 ist. Wenn ja, hast Du Deinen Anfang gefunden. Mit TFileStream.seek(5, soFromCurrent) springt der Positionszeiger 5 Zeichen weiter. In der Regel steht im jpg auch irgendwo die Größe drinnen. Das auszulesen ist vielleicht einfacher als die gesamte Datei zu scannen. Grüße Klaus |
AW: In einer Datei nach bestimmten Hexcode suchen?
Delphi-Quellcode:
uses strUtils;
procedure TForm3.Button1Click(Sender: TObject); var MS: TmemoryStream; p1: Cardinal; Search : AnsiString; begin // !! Positionen nicht 0 - basiert if OpenDialog1.Execute then begin MS := TmemoryStream.Create; try MS.LoadFromFile(OpenDialog1.FileName); SetString(Search,PansiChar(MS.Memory),MS.Size); p1 := Pos(#$FF#$D8, Search); ListBox1.Items.Add(Format('Pos FFD8 %d', [p1])); p1 := PosEx(AnsiString('JFIF'), Search, p1); ListBox1.Items.Add(Format('Pos JFIF %d', [p1])); p1 := PosEx(AnsiString(#$FF#$D9), Search, p1); ListBox1.Items.Add(Format('Pos FFD9 %d', [p1])); finally MS.Free; end; end; end; |
AW: In einer Datei nach bestimmten Hexcode suchen?
Danke Bummi für den Code.
Komischerweise findet er das vorkommen nicht, obwohl es vorhanden ist. Auch der Versuch den Memory im memo anzuzeigen (zum testen) geht nicht. Es wird nix angezeigt.
Delphi-Quellcode:
Ist der Inhalt von Memory überhaupt schon HEX? Oder eher die "ÿØÿà JFIF `" Zeichen?
procedure TForm1.BtnCut3Click(Sender: TObject);
var MS:TmemoryStream; p1:Cardinal; begin // !! Positionen nicht 0 - basiert MS := TMemoryStream.Create; try MS.LoadFromFile('.\temp\3.jpg'); p1 := Pos(#$FF#$D8,AnsiString(MS.Memory)) ; rzmemo4.Text := ansistring(ms.Memory); ListBox1.Items.Add(Format('Pos FFD8 %d',[p1]) ); p1 := PosEx( AnsiString('JFIF'),AnsiString(MS.Memory),p1); ListBox1.Items.Add(Format('Pos JFIF %d',[p1]) ); p1 := PosEx(#$FF#$D9,AnsiString(MS.Memory),p1); ListBox1.Items.Add(Format('Pos FFD9 %d',[p1]) ); finally MS.Free; end; end; |
AW: In einer Datei nach bestimmten Hexcode suchen?
hmm OK... ich dachte "vorkauen" gilt nicht...
Mavarik |
AW: In einer Datei nach bestimmten Hexcode suchen?
Wenn ich auch nur ansatzweise gewusst hätte wie das geht, hätte ich nicht gefragt. Daher finde ich so aussagekräftige Antworten wie von Bummi hilfreich. Ich habe zwar vorher schon verschiedene Routinen ausprobiert aber die hatten in etwa das selbe Problem wie die von Bummi. Habe das an mehreren JPG ausprobiert. Weiß echt nicht warum das nicht funktioniert :?:
|
AW: In einer Datei nach bestimmten Hexcode suchen?
@BBoy sorry, ich hatte einen Fehler im Gedächtnisprotokoll :oops: , angepasst ...
|
AW: In einer Datei nach bestimmten Hexcode suchen?
Zitat:
Mir gefällt Bummis Lösung auch, trotzdem sind die Anregungen von Klaus und Maverik weder falsch noch zu kurz gegriffen. Meiner Meinung nach die notwendige Vorstufe um Bummis Lösung zu begreifen, aber nun gut.... Gruß K-H |
AW: In einer Datei nach bestimmten Hexcode suchen?
Danke Bummi!! Endlich eine Routine dieser Art die auch funktioniert.
Zitat:
|
AW: In einer Datei nach bestimmten Hexcode suchen?
Zitat:
|
AW: In einer Datei nach bestimmten Hexcode suchen?
Wer sagt das ich in meinem eigenen Programm nach Hexcode suche? Dem Programmcode kann man entnehmen das eine Datei geladen wird. Und wie in meinem ersten Beitrag schon geschrieben geht es darum Bilddateien zu analysieren. Und was bitte sehr ist daran komisch in einer Datei nach Hexcode zu suchen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz