[Resolvido] Comparando texto linha por linha em um txt - Visual Basic Clássico - Portugal-a-Programar
[Resolvido] Comparando texto linha por linha em um txt
Por EneMy, 11 de Novembro de 2008 em Visual Basic Clássico
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 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
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"
MsgBox "Update ainda não baixado"
São so exemplos, se alguem poder me ajudar usando o FileSystemObject ou o OPEN, tanto faz o importante e que funcione
http://msdn.microsoft.com/en-us/library/y9341s4f(VS.80).aspx
Eu ja estou usando Option Explicit no Module onde esta a função.
Só tens uma referência a "sArquivoUPD" no código que mostraste.
Se calhar é uma variável global?
Os MsgBox "funcionam"? Isto é: mostram o resultado que tu esperavas?
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.
Experimenta meter o MsgBox depois do VerificarAtualizaçao
'MsgBox sSplit(i)
MsgBox sSplit(i) 'pmg
MsbBox sArquivo 'pmg
MsbBox sData 'pmg
Ah! ... O VB Aceita variáveis com cedilhas? ? ? ? ?
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.
Preciso fazer uma função que verifique se em um arquivo de texto tem um certo texto a ser comparado
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).
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 =)
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