Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: Stringlänge setzen, dann füllen

  Alt 10. Jun 2004, 10:56
So, jetzt habe ich das Programm fertig. Es ging mir eigentlich nur darum eine binäre Datei einzulesen und darzustellen. Ich poste es einfach mal, die Frage kommt ja immer wieder, wie man eine Datei binär einliest. Es macht eigentlich nichts sinnvolles, aber eventuell kann es ja jemand mal brauchen.

Delphi-Quellcode:
type
  TMyByteArray = array of byte;

function BuffToHex(ByteArray: TMyByteArray): string;
var
  i: Integer;
  s: String;
  foo: string;
begin
  Setlength(foo, length(ByteArray) * 10);
  for i := 0 to length(ByteArray) - 1 do
  begin
    s := '$'+IntToHex(ord(ByteArray[i]), 8) + ' ';
    Move(s[1], foo[i * 10 + 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, 100);
  fs := TFileStream.Create('G:\MP3s\Beatles\Beatles - Blue Jay Way.mp3',
    fmOpenRead);
  SetLength(s, fs.size*10);
  Progressbar1.Max := fs.Size div 100;
  try
    repeat
      BytesRead := fs.Read(Buffer[0], 100);
      Move(BuffToHex(Buffer)[1], s[i*10+1], 10);
      Inc(i);
      Progressbar1.StepIt;
      Application.ProcessMessages;
    until BytesRead < 100;
    Memo1.Text := s;
  finally
    FreeAndNil(fs);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat