¿Puedo contradecirme?
Es algo mas genérico y económico:
Código Delphi
[-]
function TranslateChars(const AText, ASource, ADest: string): string;
var
Ch: Char;
L, P: Integer;
Source,
Dest: PChar;
begin
L := Length(AText);
SetLength(Result, L);
Source := Pointer(AText);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
P := Pos(Ch, ASource);
if P > 0 then
Dest^ := ADest[P]
else
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;
....
procedure TForm1.Button1Click(Sender: TObject);
const
CHARS_ACENTUADOS = 'ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛáéíóúàèìòùäëïöüâêîôû';
CHARS_SINACENTO = 'AEIOUAEIOUAEIOUAEIOUaeiouaeiouaeiouaeiou';
begin
Edit2.Text := TranslateChars(Edit1.Text, CHARS_ACENTUADOS, CHARS_SINACENTO);
end;