LER ARQUIVO TXT

WBUZZO 20/02/2016 22:28:59
#457970
Pessoal estou tentando ler um arquivo txt, mas, a linha do arquivo txt não aparece completa na variável Linha. O total da linha tem 255 posições, mas, só aparece 135 posições. Para facilitar o entendimento anexei o arquivo txt.

segue abaixo o código que estou utilizando para leitura.

Open Arq_ContrMemoDPGP For Input As #1
Do While Not EOF(1)
[ô][ô]Dim Valores() As String

Line Input #1, Linha

gRegistro.Descricao = Mid(Linha, 1, 80)
gRegistro.Usuario = Mid(Linha, 81, 20)
gRegistro.Senha = Mid(Linha, 101, 20)
gRegistro.Observacao = Mid(Linha, 121, 135)

Loop
Close #1
DAMASCENO.CESAR 21/02/2016 10:54:20
#457983
gRegistro.Observacao = Mid(Linha, 121, [txt-color=#e80000]135)[/txt-color]

não será isso?
WBUZZO 21/02/2016 11:15:06
#457984
A 1º linha no arquivo txt tem 255 posições, mas, quando faço a leitura só aparece 135 posições ou seja a a leitura da 1º linha na variável aparece truncada apenas 135 posições. Preciso que apareça completa as 255 posições. Onde estou errando na leitura do arquivo?
Citação:

:
gRegistro.Observacao = Mid(Linha, 121, [txt-color=#e80000]135)[/txt-color]

não será isso?


A 1º linha no arquivo txt tem 255 posições, mas, quando faço a leitura só aparece 135 posições ou seja a a leitura da 1º linha na variável aparece truncada apenas 135 posições. Preciso que apareça completa as 255 posições. Onde estou errando na leitura do arquivo?
WBUZZO 21/02/2016 12:11:59
#457985
pessoal fazendo alguns testes identifiquei que na leitura do arquivo txt quando encontra o carácter especial [Ô]->[Ô] seta para a direita que não consigo nem colar aqui, mas, está no arquivo anexo no trecho ™¢•Q¬—“¢T¢®—XT¤ž«Q}}yzYššŸ™¨–Y'ThfW entre o X e o T você pode observar a seta a direita que estou mencionando.
Alguém tem alguma informação de limitação na leitura de arquivo txt?
SINCLAIR 21/02/2016 13:06:02
#457990
Colega,

Que eu saiba não existe limitação na leitura de arquivos texto.

Se houvesse alguma limitação, seria o tamanho da string lida e colocada em uma variável string, que no VB6 pode ter no máximo 64Kb, o que não é o caso.

Talvez seu arquivo texto não esteja em um formato totalmente legível.

A codificação é ANSI? ASCII? UTF-8/Unicode?

Abra o mesmo no Notepad++ e veja qual a codificação do arquivo. Experimente gravar o TXT com a codificação ANSI. O caracter especial deverá sumir, mas não necessariamente ser substituído. Se [Ô]sumir[Ô], poderá acontecer de sua linha ficar com quantidade de caracteres menor que o projetado.

No bloco de notas do Windows 7 também poderás ver no rodapé da tela de salvar qual a codificação. Abrindo no Notepad++ aparece o caracter [Ô]SUB[Ô] no lugar da pequena seta. Me pareceu, pelo nome do arquivo, que são dados baixados/enviados pelo eBay, seria isto?
WBUZZO 21/02/2016 15:51:33
#457993
Citação:

:
Colega,

Que eu saiba não existe limitação na leitura de arquivos texto.

Se houvesse alguma limitação, seria o tamanho da string lida e colocada em uma variável string, que no VB6 pode ter no máximo 64Kb, o que não é o caso.

Talvez seu arquivo texto não esteja em um formato totalmente legível.

A codificação é ANSI? ASCII? UTF-8/Unicode?

Abra o mesmo no Notepad++ e veja qual a codificação do arquivo. Experimente gravar o TXT com a codificação ANSI. O caracter especial deverá sumir, mas não necessariamente ser substituído. Se [Ô]sumir[Ô], poderá acontecer de sua linha ficar com quantidade de caracteres menor que o projetado.

No bloco de notas do Windows 7 também poderás ver no rodapé da tela de salvar qual a codificação. Abrindo no Notepad++ aparece o caracter [Ô]SUB[Ô] no lugar da pequena seta. Me pareceu, pelo nome do arquivo, que são dados baixados/enviados pelo eBay, seria isto?


Amigo a codificação é ANSI, o meu problema é ler toda a linha, eu não sei o porque, mas, não consigo ler toda a linha, a leitura trunca exatamente no ponto citado. se você baixar o arquivo anexado e tentar através do VB6 ler a linha inteira verá que a linha aparecerá truncada.
Não são dados baixados do eBay apenas foi um arquivo que gerei utilizando o método normal de gerar arquivo txt pelo VB6 segue abaixo o código que usei para gerar o arquivo txt.

Dim intFreeFile As Integer
Dim strLine As String
intFreeFile = FreeFile
Open strFilename For Output As #intFreeFile
Print #intFreeFile, strLine
End With
Close #intFreeFile
SINCLAIR 22/02/2016 07:11:11
#458016
Colega,

O [Ô]sub[Ô] que está ali (ontem eu já tinha baixado o arquivo e aberto o mesmo no Notepad++), provavelmente seja o CTRL + Z (Chr 26).

Ele realmente vai truncar a linha, impedindo a leitura a partir de onde ele estiver.

Como foi você mesmo que gerou o arquivo, ficará fácil identificar onde o mesmo foi inserido, para eliminar a inserção dele (ou substituir por outro que não cause o truncamento).

https://en.wikipedia.org/wiki/Substitute_character

Tudo de bom.

WBUZZO 28/02/2016 17:56:48
#458324
Pessoal percebi que utilizando arquivo binário não teria este problema, alguem sabe como faço para gravar e ler um arquivo binário por exemplo:
Gravo algo na 1º linha
Gravo algo na 2º linha
E assim sucessivamente.
Eu até consegue abrir, gravar e ler um arquivo binário, mas, não consegui instruir para gravar na1º linha depois gravar na 2º linha e assim sucessivamente.
SINCLAIR 02/03/2016 14:32:17
#458505
Colega WBUZZO,

Em arquivos sequenciais você poderá usar o comando Get, que lhe permite buscar determinada linha.

Para gravar, você usa o Put.

Veja (retirado de minha apostila de Qbasic, em espanhol, lá das antigas)...

GET
lee lo que se encuentra en un archivo en un almacenador intermediario o una variable de acceso aleatorio.

PUT
escribe un almacenador intermediario variable o de acceso aleatorio a un archivo.

SINTAXIS DEL COMANDO
GET [#]filenumber%[,[recordnumber&][,variable]]
PUT [#]filenumber%[,[recordnumber&][,variable]]

COMENTARIO
Filenumber.- Número de un archivo abierto.
Recornumber.- Sirve para los archivos de acceso aleatorio, el número del expediente a leer o a escribir. Para el binario-modo archivo, donde la posición del octeto esta leyendo o escribiendo desde el comienzo.
Variable.- Para GET, una variable usada para recibir la entrada del archivo. Para PUT, una variable que contiene salida para escribir al archivo. La variable es generalmente una variable de un tipo de datos definido por el usuario.

Tudo de bom.
WBUZZO 06/03/2016 09:26:20
#458729
Pessoal estou usando o código abaixo para gerar um arquivo binário onde eu esperara um resultado conforme abaixo:

Private Sub Command2_Click()
Dim TEMP As Integer
TEMP = FreeFile
Open [Ô]Teste[Ô] For Binary Access Read Write As #TEMP
Put #TEMP, , [Ô]Linha1[Ô]
Put #TEMP, , [Ô]Linha2[Ô]
Close #TEMP
End Sub

Resultado esperado:
Na 1º linha do arquivo eu esperava [Ô]Linha1[Ô]
Na 2º linha do arquivo eu esperava [Ô]Linha2[Ô]

Mas ao verificar o arquivo o resultado foi [Ô]Linha1Linha2[Ô]

Onde estou errando?
SINCLAIR 06/03/2016 11:02:34
#458732
Colega,

Não haveria quebra com CR + LF justamente por ser um arquivo binário, a ser lido com Get posteriormente. Arquivos binários você não irá ler no bloco de notas.

Se deseja um arquivo de texto puro, para ficar tal qual você cita, então não seria binário e o comando de abertura do arquivo seria Open [Ô]Teste[Ô] For OutPut As #TEMP

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas