LER ARQUIVO TXT DO FINAL PARA O COMECO
Olá, preciso ler um arquivo txt e depois mostrá-lo num campo chamado Txtfeitos.txt só que na ordem inversa, ou seja, no Txtfeitos.txt vai mostrar primeiro o último registro, depois o penúltimo e assim por diante até o primeiro do arquivo txt. é possÃvel ler um txt de trás para frente?
Bom..
eu n sei qual a sintaxe que vc ta usando pra abrir esse txt msa normalmente tem uma parte assim
Texto = Texto & NovaLinha [ô]correto?
faça assim
Texto = Novalinha & Texto
entendeu a lógica?
Se o seu arquivo estiver estruturado dá pra fazer sim, abaixo segue um exemplo de como fazer, bastando apenas mudar o Type do arquivo de acordo com seu layout:
Private Type TypeArq
Codigo As String * 6
Nome As String * 30
FimReg As String * 2
End Type
Private Sub Form_Load()
Dim TypeArquivo As TypeArq
Dim FileNum As Integer
Dim intCont As Integer
Dim intTotReg As Integer
FileNum = FreeFile
Open [Ô]c:\arquivo.txt[Ô] For Random As #FileNum Len = Len(TypeArquivo)
intTotReg = LOF(FileNum) \ Len(TypeArquivo)
For intTotReg = intTotReg To 1 Step -1
Get #FileNum, intTotReg, TypeArquivo
MsgBox TypeArquivo.Nome
Next intTotReg
Close #FileNum
End Sub
Private Type TypeArq
Codigo As String * 6
Nome As String * 30
FimReg As String * 2
End Type
Private Sub Form_Load()
Dim TypeArquivo As TypeArq
Dim FileNum As Integer
Dim intCont As Integer
Dim intTotReg As Integer
FileNum = FreeFile
Open [Ô]c:\arquivo.txt[Ô] For Random As #FileNum Len = Len(TypeArquivo)
intTotReg = LOF(FileNum) \ Len(TypeArquivo)
For intTotReg = intTotReg To 1 Step -1
Get #FileNum, intTotReg, TypeArquivo
MsgBox TypeArquivo.Nome
Next intTotReg
Close #FileNum
End Sub
Obrigado por responder. Entendi a lógica. Vou testar quando chegar em casa. Deve funcionar!
Valeu!
Valeu!
Caso o seu arquivo não tenha layout definido, ou seja, cada linha de seu arquivo seja de um tamanho diferente, você pode fazer da seguinte maneira:
Dim Linhas As Variant
Dim strArquivo As String
Dim lngTamanho As Long
Dim FileNum As Integer
Dim bytes() As Byte
Dim intCont As Integer
strArquivo = [Ô]c:\arquivo2.txt[Ô]
lngTamanho = FileLen(strArquivo)
FileNum = FreeFile
ReDim bytes(1 To lngTamanho)
Open strArquivo For Binary As #FileNum
Get #FileNum, 1, bytes
Close FileNum
Linhas = Split(StrConv(bytes, vbUnicode), vbCrLf)
For intCont = UBound(Linhas) - 1 To 0 Step -1
MsgBox Linhas(intCont)
Next intCont
Dim Linhas As Variant
Dim strArquivo As String
Dim lngTamanho As Long
Dim FileNum As Integer
Dim bytes() As Byte
Dim intCont As Integer
strArquivo = [Ô]c:\arquivo2.txt[Ô]
lngTamanho = FileLen(strArquivo)
FileNum = FreeFile
ReDim bytes(1 To lngTamanho)
Open strArquivo For Binary As #FileNum
Get #FileNum, 1, bytes
Close FileNum
Linhas = Split(StrConv(bytes, vbUnicode), vbCrLf)
For intCont = UBound(Linhas) - 1 To 0 Step -1
MsgBox Linhas(intCont)
Next intCont
Public Sub Carrega_Atualiza_Memos_Solicitados()
Arq_ContrMemoDPGP = [Ô]C:\Arquivos de programas\Microsoft Visual Studio\VB98\Cópia de Numeramemo_arq\Arquivos de Sistema\[Ô] & Anoatual4digitos & [Ô]\[Ô] & [Ô]Cópia de controlememodpgp[Ô] & Anoatual & [Ô].txt[Ô]
Open Arq_ContrMemoDPGP For Input As #1
[ô] contadorlinha = 0
Do While Not EOF(1)
[ô] contadorlinha = contadorlinha + 1
Line Input #1, linha
[ô]Txtmemosfeitos.Text = Txtmemosfeitos.Text & linha & vbCrLf
Txtmemosfeitos.Text = linha & vbCrLf & Txtmemosfeitos.Text [ô]Resolvido com esta linha de código
Loop
Close #1
End Sub
Obrigado a todos que responderam!
Arq_ContrMemoDPGP = [Ô]C:\Arquivos de programas\Microsoft Visual Studio\VB98\Cópia de Numeramemo_arq\Arquivos de Sistema\[Ô] & Anoatual4digitos & [Ô]\[Ô] & [Ô]Cópia de controlememodpgp[Ô] & Anoatual & [Ô].txt[Ô]
Open Arq_ContrMemoDPGP For Input As #1
[ô] contadorlinha = 0
Do While Not EOF(1)
[ô] contadorlinha = contadorlinha + 1
Line Input #1, linha
[ô]Txtmemosfeitos.Text = Txtmemosfeitos.Text & linha & vbCrLf
Txtmemosfeitos.Text = linha & vbCrLf & Txtmemosfeitos.Text [ô]Resolvido com esta linha de código
Loop
Close #1
End Sub
Obrigado a todos que responderam!
Tópico encerrado , respostas não são mais permitidas