LER ARQUIVO TXT DO FINAL PARA O COMECO

PAMALAGOLI 10/03/2010 11:11:34
#336521
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?
SINKERTEC 10/03/2010 11:17:43
#336524
Resposta escolhida


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?
MARCIO.TEIXEIRA 10/03/2010 11:25:34
#336526
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
PAMALAGOLI 10/03/2010 11:31:32
#336527
Obrigado por responder. Entendi a lógica. Vou testar quando chegar em casa. Deve funcionar!
Valeu!
MARCIO.TEIXEIRA 10/03/2010 11:36:10
#336529
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
PAMALAGOLI 12/03/2010 10:21:00
#336742
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!
Tópico encerrado , respostas não são mais permitidas