![]() |
einen Hexwert in einer Datei ändern ...
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Ich habe die Konfigurationsdatei die ich ändern möchte mal in einem Hexeditor geöffnet. Den blau markierten Wert (Siehe Bild im Anhang) "01" möchte ich in "00" ändern oder umgekehrt. Nun wie stelle ich das an? ich hab da an sowas gedacht:
Delphi-Quellcode:
Meine Versuche scheiterten aber allesamt kläglich.
procedure TForm1.EButton1Click(Sender: TObject);
var f: file; value: Byte; begin AssignFile(f,'C:\Dokumente und Einstellungen\th21498\Desktop\Neuer Ordner\TbInfo-PCTH0116.CFG'); Reset(f); value := 0; //Read(f,value,18); // ShowMessage(intToStr(value)); BlockWrite(f,value,18); CloseFile(f); end; Jmd eine Idee? Vielen Dank schon mal... Liebe Grüsse |
Re: einen Hexwert in einer Datei ändern ...
Puh, bevor du an Binaerdateien Aenderungen machst solltest Du aber schon wissen, was Du tust.
Dass dem nicht so ist, sieht man an deinem Code:
Delphi-Quellcode:
Bevor ich dich jetzt mit einem herzlichen RTFM sitzen lasse, ein paar Hinweis:
procedure TForm1.EButton1Click(Sender: TObject);
var f: file; value: Byte; begin AssignFile(f,'C:\Dokumente und Einstellungen\th21498\Desktop\Neuer Ordner\TbInfo-PCTH0116.CFG'); Reset(f); //hier gibst Du keine blockgroesse an, also wird der Standard von 128 genommen //ist dir das bewusst? Offenbar nicht. value := 0; //Read(f,value,18); // ShowMessage(intToStr(value)); BlockWrite(f,value,18); //Einmal <F1> auf das Wort blockwrite und dir sollte klar sein, was Du falsch machst. //alleine in dieser Anweisung stecken drei Fehler CloseFile(f); end; 1.) Du musst Die blockgroesse beim oeffnen der Datei angeben 2.) Du musst entweder auf die fragliche Stelle positionieren oder den ersten Datenblock auslesen und dann geaendert wieder (ab pos0) wegschreiben. 3.) Was glaubst Du was passiert, wenn man den Befehl BlockWrite(f,value,18); so wie Du ihn geschrieben hast ausfuehrt??? |
Re: einen Hexwert in einer Datei ändern ...
Hallo,
ich lese binäre Dateien meistens in einen Filestream ein. Dort lassen sich die Bytes anhand der Position ansprechen und oder ändern. Und der Stream lässt sich problemlos wieder in ein File schreiben. :wink: |
Re: einen Hexwert in einer Datei ändern ...
Hallo Jungs...
Vielen Dank für die Tipps... Ich habs jetzt so gelöst:
Delphi-Quellcode:
Ist doch ok oder?
for i := 0 to FileList.Count - 1 do
begin TRY FileStream := TFilestream.Create(path+FileList.Strings[i], fmOpenReadWrite); FileStream.Seek(18, soFromBeginning); if CheckBox1.Checked then buffer := 0 else buffer := 1; FileStream.WriteBuffer(buffer, 1); FileStream.Free; Memo1.Lines.Add(FileList.Strings[i] + ' Erfolgreich bearbeitet!'); EXCEPT on e: Exception do Memo1.Lines.Add(e.Message); END; end; LG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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 by Thomas Breitkreuz