Erst mal der Code:
Delphi-Quellcode:
type
TMyByteArray = array of byte;
function BuffToHex(ByteArray: TMyByteArray): string;
var
i: Integer;
dummy: Integer;
foo: string;
begin
Setlength(foo, length(ByteArray) * 9);
for i := 0 to length(ByteArray) - 1 do
begin
dummy := ord(ByteArray[i]);
foo := foo + IntToHex(dummy, 8) + ' ';
end;
result := foo;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
fs: TFileStream;
Buffer: TMyByteArray;
begin
Setlength(Buffer, 100);
fs := TFileStream.Create('G:\MP3s\Beatles\Beatles - Blue Jay Way.mp3',
fmOpenRead);
try
fs.ReadBuffer(Buffer[0], 100);
Memo1.Text := BuffToHex(Buffer);
finally
FreeAndNil(fs);
end;
end;
Unter Prozedur liest 100 Bytes einer Datei ein. Die Funktion BufToHex wandelt das ganze in eine hexadezimale Darstellung um. So mein Problem: Eigentlich wollte ich für den String
vorher Speicher reservieren / ihn auf die erforderliche Länge setzten und ihn dann füllen. Tue ich das wie oben im Code, steht am Anfang vom String nur Mist und am Ende dann die umgewandelten Byte-Werte. Wo ist mein Denkfehler? Oder was mache ich falsch?