• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

EneMy

[Resolvido] Comparando texto linha por linha em um txt

10 mensagens neste tópico

Ola pessoal, estou desenvolvendo um auto-update em visual basic 6, mais estou com um problema..

Preciso fazer uma função que verifique se em um arquivo de texto tem um certo texto a ser comparado, eu criei uma função mais ela esta muito bugada e eu não estou conseguindo resolver, tentei ultilizar o comando OPEN normalmente, mais não consegui, então optei pelo FileSystemObject e nada =/

Public Function VerificarAtualizaçao(sArquivo As String, sData As String) As Boolean

Dim sLista As String
Dim sListaSplit() As String
Dim sSplit() As String
Dim i As Integer
Dim tsArquivo As TextStream

Set tsArquivo = fso.OpenTextFile(App.Path & "\" & sArquivoUPD, ForReading, True)
sLista = tsArquivo.ReadAll

sSplit = Split(sLista, vbCrLf)
For i = LBound(sSplit) To UBound(sSplit)
sListaSplit() = Split(sSplit(i), "|")
MsgBox sSplit(i)
If sListaSplit(0) = sArquivo And sListaSplit(1) = sData Then
VerificarAtualizaçao = False
Else
VerificarAtualizaçao = True
Exit Function
End If
Next
End Function

Bom.. e uma simples função que eu não encontro a solução, vou dar um exemplo doque eu preciso.

Em um arquivo de texto tenho o seguinte conteudo:

Data\Teste5.exe|11/11/08 16:40:00 AM
Data\Arquivo6.txt|11/11/08 13:52:00 AM

Agora eu Rodo a função:

if VerificarAtualizaçao("Data\Arquivo6.txt", "11/11/08 13:52:00 AM") then
MsgBox "Update ja foi baixado"
else
MsgBox "Update ainda não baixado"
end if

São so exemplos, se alguem poder me ajudar usando o FileSystemObject ou o OPEN, tanto faz o importante e que funcione  :)

Obrigado  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só tens uma referência a "sArquivoUPD" no código que mostraste.

Se calhar é uma variável global?

MsgBox sSplit(i)

Os MsgBox "funcionam"? Isto é: mostram o resultado que tu esperavas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ahh, o 'sArquivoUPD' e um Const Global:

Public Const sArquivoUPD As String = "Updates.txt"

Bom.. Quando eu coloco  codigo 'MsgBox sSplit(i)' so aparece a Primeira Linha do arquivo de texto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta meter o MsgBox depois do VerificarAtualizaçao

'MsgBox sSplit(i)
If sListaSplit(0) = sArquivo And sListaSplit(1) = sData Then
VerificarAtualizaçao = False
MsgBox sSplit(i) 'pmg
Else
VerificarAtualizaçao = True
MsgBox sSplit(i) 'pmg
MsbBox sArquivo 'pmg
MsbBox sData 'pmg
Exit Function
End If

Ah! ... O VB Aceita variáveis com cedilhas? ? ? ? ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O VB aceita sim Variaveis com cedilha, ate onde eu sei sim ^^

Bom.. eu coloquei isso mais a primeira msgbox apareceu a primeira linha do arquivo de texto, depois a mesma coisa, depois a variavel sArquivo que foi colocada quando chamamos a função e o sData tambem.

Tipo eu estava Observando e vi que isso acontece porcausa do Exit Function, porque esta em um Loop e se tiver o Exit Function o Loop so vai execultar uma vez assim so mostrando a primeira linha, mais quando eu tiro o Exit Function o Valor da função sera enviada pelo resultado a comparação da ultima linha do arquivo de texto.

Alguma Ideia ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então

Preciso fazer uma função que verifique se em um arquivo de texto tem um certo texto a ser comparado

if VerificarAtualizaçao("Data\Arquivo6.txt", "11/11/08 13:52:00 AM") then
MsgBox "Update ja foi baixado"
else
MsgBox "Update ainda não baixado"
end if

a tua função está a funcionar!

Ou então não percebi o que queres. Explica lá melhor (como se eu fosse uma criança de 6 anos).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@pmg

Agora que eu percebi o erro besta que eu fiz ¬¬

O Exit Function, não fica embaixo do 'VerificarAtualizaçao = True' e sim do 'VerificarAtualizaçao = False'...

Valeu pela atenção ai pmg =)

Resolvido :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já está resolvido mas já agora ...

Se queres guardar informações para mais tarde leres, então usar ficheiros de texto (*.txt) não é sem dúvida a melhor opção.

Podes utilizar ficheiros INI (que são também ficheiros de texto mas com métodos mais práticos para ler/escrever) ou mesmo o Registry do windows.

Podes ver este pequeno artigo que fiz para ver se ajuda a clarificar: Guardar Configurações - INI vs Registry

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora