Hallo Eichhoernchen,
von den Zeigern hatte ich mir einen Geschwindigkeitsvorteil versprochen, aber dann kam mir ein längerer Aufenthalt in der heimischen Keramikausstellung dazwischen. Das Setzen der Länge sollte schon sein, aber um niemanden mehr mit den Zeigern zu verwirren, hier eine Version, welche auch mit krummen Längen des dualen Strings zurecht kommen sollte:
Delphi-Quellcode:
function DualToStr(dual: String): String;
var
i, iResult, iLen, iOffset: integer;
b: Byte;
begin
iLen := Length(dual);
iOffset := iLen mod 8;
SetLength(Result, iLen div 8 + Ord(iOffset > 0));
b := 0;
iResult := 0;
for i := 1 to iLen do
begin
b := b shl 1 + Ord(dual[i] <> '0');
if i mod 8 = iOffset then
begin
Inc(iResult);
Result[iResult] := Chr(b);
end;
end;
end;
Gute Nacht
marabu