AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Datei nach Hex Bytefolge suchen und ändern! Hilfe!
Thema durchsuchen
Ansicht
Themen-Optionen

In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

Ein Thema von unitedlb · begonnen am 23. Okt 2003 · letzter Beitrag vom 28. Mai 2004
Antwort Antwort
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#1

In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 23. Okt 2003, 11:20
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.
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#2

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 11:35
...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#3

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 11:48
Das ist so genau beschrieben, das solltest Du mit Hilfe eines (File)-Streams selber hinbekommen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#4

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 18:07
...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 18:10
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#6

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 18:19
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 24. Okt 2003, 18:42
Hi Sebastian,
Zitat:
Gibt es wirklich Programmierhelden?
Nö.
Willst wohl einer werden. Wieviele Tastaturen jagst'n so monatlich übern Jordan?


Delphi-Quellcode:
{© 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;
Naja 5 min hat es nicht gerade gedauert. Hatte aber sowieso gerade angefangen das zu lernen.
Scheinst dich mit MPEG's auszukennen, ich suche noch Infos zu ID3 (vor allem ID3v2 lesen & schreiben)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#8

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 27. Okt 2003, 10:29
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!
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#9

Re: In Datei nach Hex Bytefolge suchen und ändern! Hilfe!

  Alt 28. Mai 2004, 23:19
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:
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;
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?


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  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 09:09 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