Thema: Delphi strtohex

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: strtohex

  Alt 12. Jun 2007, 16:15
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]
  Mit Zitat antworten Zitat