Página 1 de 1
Ler Arquivo TXT ASCII
Enviado: 05 Mar 2009 19:14
por Marsenne
Eu crio um arquivo .TXT no VB6 com o padrão ASCII. Quando abro no bloco de notas todos os caracteres estão corretos inclusive os acentos e cedilhas. Estou importando para o CLIPPER com a opção APPEND FROM ... DELIMITED e quando é importado os acentos e cedilhas ficam truncados. O que fazer?
Re: LER ARQUIVO TXT ASCII
Enviado: 05 Mar 2009 21:15
por Eolo
O Windows (Bloco de Notas, Word, etc) usa o set de caracteres ANSI, enquanto que o DOS (Clipper) usa o OEM, por isso a "bagunça". O xHarbour tem funções prontas pra converter de um set pra outro, mas o Clipper - até onde eu sei - não tem. O jeito é você montar uma função sua (usando o STRTRAN() ou STUFF() etc.) e usá-la depois do APPEND pra acertar a acentuação.
Re: LER ARQUIVO TXT ASCII
Enviado: 06 Mar 2009 00:39
por sygecom
Com a dica do Colega Eolo, você pode usar a função do link abaixo:
viewtopic.php?f=43&t=4374
Re: LER ARQUIVO TXT ASCII
Enviado: 06 Mar 2009 07:04
por Marsenne
Obrigado. A função resolveu. Alterei um pouco para ficar mais rápida e não utilizar matrizes que consomem muita memória no Clipper. Segue abaixo a função que troca caracteres truncados do Windows para DOS utilizando a função nativa do Clipper STRTRAN():
// Converte Caracteres Windows para DOS
Código: Selecionar todos
FUNCTION VWinDos(pString)
wCarWin="áéíóúãõâêîôûàèìòùäëïöüçñÁÉÍÓÚÃÕÂÊÎÔÛÀÈÌÒÙÄËÏÖÜÇÑ"
wCarDos=" ‚¡¢£ÆäƒˆŒ“–…Š•—„‰‹”‡¤µÖàéÇå¶Ò×âê·ÔÞãëŽÓØ™š€¥"
wNovaStr=ALLTRIM(pString)
wRetorno=""
FOR wCont=1 TO 48
wNovaStr=STRTRAN(wNovaStr,SUBSTR(wCarWin,wCont,1),SUBSTR(wCarDos,wCont,1))
wRetorno=wNovaStr
NEXT
RETURN(wRetorno)
Re: LER ARQUIVO TXT ASCII
Enviado: 13 Mar 2009 19:48
por Maligno
e não utilizar matrizes que consomem muita memória no Clipper
Se fosse em outra situação, até discordaria de você. Mas na função que foi usada de exemplo, realmente o consumo de memória da matriz é maior. Agora, pra quem utiliza muitas variáveis de memória, matriz é o ideal pra economizar memória, simplificar código e acelerar o processamento. Apenas a título de observação: tenho listas de GETs que podem contar com centenas de campos. Só uso matrizes. Até por questão de codificação, o uso de variáveis poderia até inviabilizar o recurso.