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: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.