Fórum Função para ignorar acentos e etc... Não tá funcionando #209988

27/01/2004

0

Fiz esta função para ignorar os caracteres não reconhecidos pela
LX300.
function TfrmOrcaOs.AnsiToAscii(str: string): String;
var
i : Integer;
begin
for i := 1 to length(str) do
case str[i] of
´á´ : str[i] := ´a´;
´é´ : str[i] := ´e´;
´í´ : str[i] := ´i´;
´ó´ : str[i] := ´o´;
´ú´ : str[i] := ´u´;
´à´ : str[i] := ´a´;
´è´ : str[i] := ´e´;
´ì´ : str[i] := ´i´;
´ò´ : str[i] := ´o´;
´ù´ : str[i] := ´u´;
´â´ : str[i] := ´a´;
´ê´ : str[i] := ´e´;
´î´ : str[i] := ´i´;
´ô´ : str[i] := ´o´;
´û´ : str[i] := ´u´;
´ä´ : str[i] := ´a´;
´ë´ : str[i] := ´e´;
´ï´ : str[i] := ´i´;
´ö´ : str[i] := ´o´;
´ü´ : str[i] := ´u´;
´ã´ : str[i] := ´a´;
´õ´ : str[i] := ´o´;
´ñ´ : str[i] := ´n´;
´ç´ : str[i] := ´c´;
´Á´ : str[i] := ´A´;
´É´ : str[i] := ´E´;
´Í´ : str[i] := ´I´;
´Ó´ : str[i] := ´O´;
´Ú´ : str[i] := ´U´;
´À´ : str[i] := ´A´;
´È´ : str[i] := ´E´;
´Ì´ : str[i] := ´I´;
´Ò´ : str[i] := ´O´;
´Ù´ : str[i] := ´U´;
´Â´ : str[i] := ´A´;
´Ê´ : str[i] := ´E´;
´Î´ : str[i] := ´I´;
´Ô´ : str[i] := ´O´;
´Û´ : str[i] := ´U´;
´Ä´ : str[i] := ´A´;
´Ë´ : str[i] := ´E´;
´Ï´ : str[i] := ´I´;
´Ö´ : str[i] := ´O´;
´Ü´ : str[i] := ´U´;
´Ã´ : str[i] := ´A´;
´Õ´ : str[i] := ´O´;
´Ñ´ : str[i] := ´N´;
´Ç´ : str[i] := ´C´;
´º´ : str[i] := ´.´;
end;
Result := Str;
end;

Na hora de imprimir eu faço assim:
Writeln(Arq, ´ ´+AnsiToAscii(AjustaStr(Dm.AuxSerDescricao.AsString, 35))+AjustaStr(Dm.AuxSerQde.AsString, 6)+AjustaNum(val, 12)+AjustaNum(brut, 12)+AjustaNum(tot, 12));
Onde AjustaNum e AjustaStr são outras funções para ajustar string e
valores numéricos. Elas funcionam muito bem, mas a outra AnsiToAscii
não funciona, a impressora quando imprime Ç, É, Á e etc..., manda aqueles
caracteres estranhos. Eu tenho outra aplicação em PDOX, que funciona,
esta em IB 6, não, mas eu não creio que seja por isso. Usei a mesma
sintax.


Paulo

Paulo

Responder

Posts

28/01/2004

Wolverine

procedure TForm1.Edit1Change(Sender: TObject);
const excecoes: array[1..6] of string = (´ De ´,´ Do ´,´ Dos ´,´ Da ´,´ Das ´,´ E ´);
var
OldStart : Integer;
x : Integer;
begin
With Edit1 do
if Text <> ´´ then
begin
OnChange := nil;
OldStart := SelStart;
for x := 1 to high(excecoes) do
Edit1.Text := StringReplace( Edit1.Text,excecoes[x],AnsiLowerCase(excecoes[x]),[rfReplaceAll] );
SelStart := OldStart;
OnChange := Edit1Change;
end;
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar