Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Hex-Darstellung einer binären Datei

  Alt 12. Jun 2004, 10:23
So stelle ich eine binäre Datei hexadezimal dar:
Delphi-Quellcode:
type
  TMyByteArray = array of byte;

const
  HEXWIDTH = 2;
  BUFFERSIZE = 8;

function BuffToHex(ByteArray: TMyByteArray): string;
var
  i: Integer;
  s: String;
  foo: string;
begin
  Setlength(foo, length(ByteArray) * (HEXWIDTH+2));
  for i := 0 to length(ByteArray) - 1 do
  begin
    s := '$'+IntToHex(ord(ByteArray[i]), HEXWIDTH) + ' ';
    Move(s[1], foo[i * (HEXWIDTH+2) + 1], length(s));
  end;
  result := foo;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
  Buffer: TMyByteArray;
  BytesRead: Longint;
  s: String;
  i: Int64;
begin
  i := 0;
  SetLength(Buffer, BUFFERSIZE);
  fs := TFileStream.Create('G:\MP3s\Beatles\Beatles - Blue Jay Way.mp3',
    fmOpenRead);
  SetLength(s, fs.size*(HEXWIDTH+2));
  Progressbar1.Max := fs.Size div BUFFERSIZE;
  try
    repeat
      BytesRead := fs.Read(Buffer[0], BUFFERSIZE);
      Move(BuffToHex(Buffer)[1], s[i*(HEXWIDTH+2)+1], 10);
      Inc(i);
      Progressbar1.StepIt;
      Application.ProcessMessages;
    until BytesRead < BUFFERSIZE;
    Memo1.Text := s;
  finally
    FreeAndNil(fs);
  end;
end;
Jetzt habe ich aber festgestellt, das je nach Buffergröße die Datei anders aussieht. Wo ist da mein Denkfehler im Code? ich finde hin einfach nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat