Och, die Hinweise für C++ (ala man sollte Makros wie StringCchCopy verwenden) ignoriere ich grundsätzlich.
@hator: Tausch besser noch schnell das PChar durch PAnsiChar aus,
denn dieser Code ist definitiv nur für
ANSI geeignet.
[add]
ASM > Pascal
Delphi-Quellcode:
function StrLCopy(Dest, Source: PAnsiChar; MaxLen: Cardinal): PAnsiChar;
var
i: Cardinal;
begin
if Byte(Dest) <> 0
then begin
i := MaxLen;
while Source^ <> #0
do begin
Dest^ := Source^;
Inc(Source);
Inc(Dest);
Dec(i);
end;
Inc(i);
end;
Dec(MaxLen, i);
Source := Dest;
// hier hab ich wohl irgendwas falsch übersetzt (ich versuch's später nochmal)
Dest := Result;
//
Result := Source;
//
{****
i := MaxLen shr 2;
while i > 0 do begin
PLongWord(Dest)^ := PLongWord(Source)^;
Inc(Source, 4);
Inc(Dest, 4);
Dec(i);
end;
i := MaxLen and 3;
while i > 0 do begin
Dest^ := Source^;
Inc(Source);
Inc(Dest);
Dec(i);
end;
*****}
while MaxLen > 0
do begin
Dest^ := Source^;
Inc(Source);
Inc(Dest);
Dec(MaxLen);
end;
{*****}
Dest^ := #0;
end;