function strlicomp(str1,str2 : pwidechar;l : SizeInt) : SizeInt;
  var
   counter: sizeint;
   c1, c2: char;
  begin
    counter := 0;
    if l=0 then
      begin
        strlicomp := 0;
        exit;
      end;
    repeat
      c1:=simplewideupcase(str1[counter]);
      c2:=simplewideupcase(str2[counter]);
      if (c1=#0) or (c2=#0) then break;
      inc(counter);
    until (c1<>c2) or (counter>=l);
    strlicomp:=ord(c1)-ord(c2);
  end;

suggestions:

a)
      if (c1=#0) or (c2=#0) then break;
->
 if c1=#0 then break;
 if c2=#0 then break;

b)
embed upcase to avoid CALL
      c1:=simplewideupcase(str1[counter]);
      c2:=simplewideupcase(str2[counter]);
->
 c1:= str1[counter];
 c2:= str2[counter];
 if (c1>='a') and (c1<='z') then dec(c1, 32);
 if (c2>='a') and (c2<='z') then dec(c2, 32);

c) not sure..
we have 2 same diff's
c1<>c2
and
ord(c1)-ord(c2)

Alexey Torgashin

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to