Zitat von
halinchen:
Delphi-Quellcode:
For i := 0 to fs.Size do begin
fs.Read(b,sizeof (b));
//oder fs.ReadByte(b); <-- bin mir nichtt sicher
str := Str + '|' + IntToHex(b,2); <-- '|' ist der Trenner
end;
Hi,
an sich sollte der hier gepostete Weg auf jeden Fall funktionieren. Wenn Du das so machst, solltest Du jedoch noch besser noch mit einem kleinen Puffer arbeiten. In diesem Fall liest Du jedes Byte einzeln in der Schleife ein, dass dauert und dauert und dauert. Viel schneller geht es, wenn Du gleich einen ganzen Haufen Bytes in ein Array liest und die dann in einem Rutsch bearbeitest.
Delphi-Quellcode:
var buffer: TByteDynArray;
readBytes: Integer;
// wie gehabt!
...
begin
// 1024 Byte Puffer
setLength(buffer, 1024);
// wie gehabt!
...
readBytes := fs.Readbuffer(buffer[0], length(buffer));
while readBytes > 0 do
begin
for i := 0 to readBytes - 1 do
begin
str := Str + '|' + IntToHex(buffer[i],2); <-- '|' ist der Trenner
end;
end;
Auch das mit dem String kann man noch effizienter machen, indem man hier für jedes Zeichen im Puffer (readBytes) einfach je 3 Byte (2 Byte Hex-Wert + 1 Byte Trenner) alloziert und dann direkt am richtigen Index einfügt.
Gruß Der Unwissende
[edit]
Fehler korrigiert, muss natürlich read und nicht readBuffer sein! Danke @halinchen!
[/edit]