LER 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
não será isso?
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?
Alguém tem alguma informação de limitação na leitura de arquivo txt?
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?
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
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.
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.
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.
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?
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