AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi einen Hexwert in einer Datei ändern ...
Thema durchsuchen
Ansicht
Themen-Optionen

einen Hexwert in einer Datei ändern ...

Ein Thema von cherry · begonnen am 25. Feb 2008 · letzter Beitrag vom 26. Feb 2008
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

einen Hexwert in einer Datei ändern ...

  Alt 25. Feb 2008, 14:46
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:
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;
Meine Versuche scheiterten aber allesamt kläglich.

Jmd eine Idee?

Vielen Dank schon mal...

Liebe Grüsse
Miniaturansicht angehängter Grafiken
unbenannt_777.jpg  
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#2

Re: einen Hexwert in einer Datei ändern ...

  Alt 25. Feb 2008, 15:16
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:
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;
Bevor ich dich jetzt mit einem herzlichen RTFM sitzen lasse, ein paar Hinweis:
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???
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#3

Re: einen Hexwert in einer Datei ändern ...

  Alt 25. Feb 2008, 16:08
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.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: einen Hexwert in einer Datei ändern ...

  Alt 26. Feb 2008, 11:38
Hallo Jungs...

Vielen Dank für die Tipps...

Ich habs jetzt so gelöst:

Delphi-Quellcode:
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;
Ist doch ok oder?

LG
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 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