Я бы сделал примерно так:
function UpperCase(S:string):string;
const
LC='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
UC='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
var
I,P:integer;
R:string;
C:char;
begin
for i:=0 to Length(S) do
begin
C:=GetChar(S,I);
P:=pos(LC,C);
if P<>-1 then
R:=R+GetChar(UC,P)
else
R:=R+C;
end;
UpperCase:=R;
end;
Это работает только для русских букв, однако можно добавить английский алфавит и убить двух зайцев.