[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]
{
I am in need of a very fast LCASE or UCASE routine.
A general translation utility could come in handy:
}
USES CRT;
type
t_table=array [char] of char;
procedure translate(var buffer; var table:t_table; len:word);
assembler;
asm
mov cx,[len]
JCXZ @@end
les bx,[table]
push ds
cld
lds si,[buffer]
@@redo:
lodsb
seges
xlat
mov [si-1],al
LOOP @@redo
pop ds
@@end:
end;
var
uptable : t_table;
lotable : t_table;
s: string;
c: char;
begin
ClrScr;
(* convert every letter to its uppercase pendant *)
for c:=#0 to #255 do uptable[c]:=upcase(c);
(* convert every letter to its lowercase pendant *)
for c:=#0 to #255 do lotable[c]:= CHR(ORD(c) OR $20);
readln(s);
translate(s[1],uptable,length(s));
writeln(s);
translate(s[1],lotable,length(s));
writeln(s);
end.
[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]