[fpc-devel] Patch to speed up Uppercase/Lowercase functions
Yury Sidorov
jura at ce.blagovest.com
Sun Jun 12 13:38:31 CEST 2005
Oh,
I found the bug.
There should be:
Inc(byte(P^), 32);
instead of previously posted:
Inc(byte(P^));
Here is correct implementation:
----
Function Lowercase41(Const S : String) : String;
var
i: Integer;
P: PChar;
Changed: boolean;
begin
Changed:=False;
P := PChar(S);
for i := 1 to Length(S) do begin
if P^ in ['A'..'Z'] then begin
if not Changed then begin
Changed := True;
Result := S;
UniqueString(Result);
P := PChar(Result) + i - 1;
end;
Inc(byte(P^), 32);
end;
Inc(P);
end;
if not Changed then
Result := S;
end;
Function Lowercase42(Const S : String) : String;
var
i: Integer;
P: PChar;
begin
Result := S;
UniqueString(Result);
P := PChar(Result);
i := Length(Result);
while i > 0 do begin
if P^ in ['A'..'Z'] then
Inc(byte(P^), 32);
Inc(P);
Dec(i);
end;
end;
More information about the fpc-devel
mailing list