![]() |
In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Hallo!
Wer kann mir folgende Anweisung nach Delphi übersetzen? a) Lade die ersten 16 KB der Datei in einen Puffer b) durchsuche den Puffer nach der Bytefolge 0x02 0x40 0x23 c) wenn gefunden, - seeke an die Position des 0x23-Bytes - überschreibe das Byte mit 0x33 - schließe File Vielen Dank. |
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
...
|
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Das ist so genau beschrieben, das solltest Du mit Hilfe eines (File)-Streams selber hinbekommen.
|
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
...
|
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Moin Unitedlb,
mit ... kann hier mit Sicherheit keiner was anfangen. Der Tip von Phoenix sollte Dir zumindest schon mal einen Einstieg in die Problemlösung gebracht haben. Wenn Du nun Probleme mit der Anwendung von TFileStream hast wäre es ganz hilfreich, wenn Du mal sagst, wo's hakt. |
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
ich bin etwas verwirrt:
anscheinend gibt es hier sehr viele leute die sich gut auskennen und die diese paar zeilen code in 5 minuten hinschreiben könnten, dennoch wird anscheinend großen wert darauf gelegt das ich selber lerne wie das genau funktioniert. wird es akzeptiert wenn ich das gar nicht lernen möchte sondern nur copy-pasten? ich arbeite nicht an einem großen projekt sondern möchte lediglich mini-tool haben mit dem ich mpeg2 files patchen kann. vielen dank. |
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Hi Sebastian,
Zitat:
Willst wohl einer werden. Wieviele Tastaturen jagst'n so monatlich übern Jordan?
Delphi-Quellcode:
Naja 5 min hat es nicht gerade gedauert. Hatte aber sowieso gerade angefangen das zu lernen.
{© by Himitsu @ Delphi-PRAXiS}
Procedure TForm1.Button1Click(Sender: TObject); Const Groesse = 16384; {16 KB | 1 KByte = 1024 Byte} Var FS: TFileStream; Buffer: Array[0..Groesse-1] of Byte; I: Integer; B: Byte; Begin Try {Datei öffnen} FS := TFileStream.Create('Datei.dat', fmOpenReadWrite); {Daten einlesen} FS.Read(Buffer, Groesse); {Bytefolge suchen} For I := 0 to Groesse - 3 do If (Buffer[I] = $02) and (Buffer[I + 1] = $40) and (Buffer[I + 2] = $23) Then Begin {springe (seeke) zu 0x23} FS.Seek(I + 2, soFromBeginning); {überschreibe 0x23 mit 0x33} B := $33; FS.Write(B, 1); End; FS.Free; Except On EFOpenError do ShowMessage('Datei konnte nicht geöffnet werden'); Else ShowMessage('Unbekannter Fehler'); End; End; Scheinst dich mit MPEG's auszukennen, ich suche noch Infos zu ID3 (vor allem ID3v2 lesen & schreiben) |
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
vielen dank!
womit ich mich ganz gut auskenne ist das monatelange zusammenspiel von h-,s-codec/delphi6/win2k. das ist eine wissenschaft für sich... danke für die hilfe! |
Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Gibt es vielleicht noch eine andere Methode nach den Werten zu suchen und nicht
Code:
If (Buffer[I] = $02) and
(Buffer[I + 1] = $40) and (Buffer[I + 2] = $23) Then Begin Also das ich gleich komplett nach z.B. $020423 und nicht alles einzeln mit "and" verknüpfen. Ich habe das mal in einer Extraschleife probiert, aber leider kann ich das nicht wirklich in die Funktion einbringen, hier mein Test, der auch einzeln funktioniert, aber irgendwie kann ich das nicht einbringen:
Delphi-Quellcode:
Könnte mir vielleicht jemand helfen, anhand des Beispiels von himitsu bzw. einem eigenem, wie ich nach den Hexwerten suchen kann, die bei mir in "Werte" stehen?
procedure TForm1.Button1Click(Sender: TObject);
var i, x: Integer; const Werte = '024023159745'; begin x := 1; For i := 0 to round(length(Werte)/2)-1 do begin Showmessage(Werte[x]+Werte[x+1]); x := x + 2; end; end; :love: Danke UC |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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