Moin Nikolai,
Zitat von
inherited:
Was gefällt dir an Streams nicht? Damit lädst du eine Datei Byteweise in ein Array, wandelst sie in Chars um und fügst sie einem Memotext hinzu:
Wobei das hier
Memo1.text:=Memo1.Text+Char(MyArray[i]);
ein Performancekiller erster Güte ist
Ausserdem wird's interessant, sobald eine #00 im Dateiinhalt vorkommt.
Besser wäre es wohl die Daten gleich als Hexwerte darzustellen.
Delphi-Quellcode:
var
sBuf : string;
sResult : string;
i : integer;
iPos : integer;
iCount : integer;
fs : TFileStream;
sByte : string;
begin
fs := TFileStream.Create('...', fmOpenRead);
try
SetLength(sBuf,fs.Size);
// Annahme: 16 Byte je Zeile, getrennt mit Blank
// fs.Size*3 => Zwei Hexstellen+Blank/#13 je Quellbyte
// fs.Size div 16 => anschliessend noch ein #10 je Zeile
SetLength(sResult,fs.Size*3+fs.Size div 16);
fs.Read(sBuf[1],fs.Size);
iPos := 1;
for i := 1 to fs.Size do begin
sByte := IntToHex(ord(sBuf[i]),2);
sResult[iPos] := sByte[1];
sResult[iPos+1] := sByte[2];
inc(iPos,2);
if i mod 16 = 0 then begin
sResult[iPos] := #13;
sResult[iPos+1] := #10;
inc(iPos,2);
end else begin
sResult[iPos] := #32;
inc(iPos);
end;
end;
finally
fs.free;
end;
Memo1.Text := sResult;
end;