seguinte tenho uma função para converter a acentuação em textos DOS para textos em Windows....
o problema que algumas coisas dão errado com Ó em dos que vira Ë em windows.... porque só DEUS e Bill Gates entende.. eu já desisti... a rotina é bem simples...........

tenho dois arquivos um feitos no EDIT do DOS e outro feito no NOTEPAD do windows...
neles tenho dos os caracteres acentuados, nos dois o caracteres estão na mesma ordem ou seja....
em DOS:
ÁÉÍÓÚ
em Widnows:
ÁÉÍÓÚ
entre outro na mesma sequencia, a sequencia esta correta, não á troca de caracter... o "Á" do DOS esta na mesma possição do "Á" do windows..., mesmo assim a função teima em não funciona em ALGUNS caracteres.. como o "Ó" do DOS que retorna sempre o "Ë", pq ? ehhehe
a sequencia do windows é essa
"áéíóúÁÉÍÓÚäëïöüÄËÏÖÜâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙãÃõÕçÇýÝÿ"
do dos... aqui vai ficar meio confusão mas se color e abrir no EDIT do DOS vai ver que são exatamente a mesma.
" ‚¡¢£µÖà鄉‹”ŽÓؙšƒˆŒ“–¶Ò×âꅊ•—·ÔÞãëÆÇä净ìí˜"
não sei se esta sequencia em DOS vai ser enviada com sucesso, afinal tantos caracteres especiais... mas GARANTO que já foi conferida por mais de tres pessoas, e não esta errada... são exatamente iguais....


em windos uso as funções, como poderam ver abaixo é tudo muito simples......
procuro um caracter em DOS que esteja na STRING e troco ele pelo seu correspondente em WINDOWS....

bom enfim, isso é o que eu faço, alguem conhece uma outra solução mas que funcine com TODOS os caracteres ?
a minha estaria ótima se não fosse por 'XORORÓ', tinha que ser em musica sertaneja né... rsrsrs.. bom ve ai que puder me ajudar....



var
   vardos, varwin : string;


function DosToWin( str1: string ) : string;
var
   x, y : integer;
begin
   for x := 1 to Length( vardos ) do
      for y := 1 to Length( str1 ) do
          if str1[y] = vardos[x] then
             str1[y] := varwin[x];
   result := str1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  asc.List.LoadFromFile('acentos.dos');
  vardos := Trim(asc.list.Text);

  asc.List.LoadFromFile('acentos.win');
  varwin := Trim(asc.list.Text);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  table1.First;
  while not table1.Eof do begin
     table1.Edit;
     table1.FieldByName('c1').asstring := DosToWin(table1.FieldByName('di04').AsString);
     table1.FieldByName('c2').AsString := DosToWin(table1.FieldByName('di05').AsString);
     table1.post;
     table1.next;
  end;
end;


--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDAD


Links do Yahoo! Grupos

Responder a