COMO SABER COMO QUANTAS LINHAS SE REPETE

PEGUDO 29/03/2011 09:52:32
#369556
[txt-size=6]Foram só alguns erros de lógica.
Já está funcional, mas como estou no Trabalho não debuguei para ver possíveis erros.
Faça os testes aí e se encontrar algum erro que não conseguir resolver me avise.

Fiz mudanças no código para dar uma cara mais profissional.
Coloquei Classes e módulos para deixar o Form1 só com as chamadas dos códigos.

Eu ia colocar um ListView para aparecer na tela quais os tópicos estavam repetidos mas não tive certeza de que seria relevante pra você então não fiz.
Baixa aí e faça os testes.[/txt-size]
PROGRAMADORVB6 29/03/2011 19:03:45
#369644
Olá Boa Noite.
Quero desde já agradecer-lhe pelo seu trabalho e também pela sua paciência em estar a ajudar
Quanto ás modificações que faça e também opiniões, são sempre bem vindas.
Estive a ver o código e contém uma estroturação organizada e limpa. (melhor é impossível!)(ainda estou a fazer testes.)
O que eu pretendo com este programa(e como referênciei anteriormente,quem [ô]desenhou[ô] o site, fez questão de não liberar Rss), me informe sempre que se verifique tópicos novos; a sua verificação será efectuada com um intervalo de tempo previamente escolhido pelo utilizador, em um menu de configurações.
A outra parte que também já abordamos, e também colaborou nela, servirá para que o utilizador sempre que opte por participar no forum a página seja aberte de um módo automático tornado assim as coisas + cómodas para quem está a usar.
Obrigado desde já pelo seu empenho e dedicação.
Atentamente.
Programadorvb6
PEGUDO 30/03/2011 14:18:24
#369732
[txt-size=6]Arquivo em anexo
A gora o botão serve para ligar e desligar a atualização automática.
O menu serve para configurar o tempo de espera de cada atualização[/txt-size]
PROGRAMADORVB6 30/03/2011 21:36:23
#369792
Olá Boa Noite.
Obrigado novamente pela sua participação e alguma paciência vinda de sua parte neste meu tópico.
Já vi o novo exemplo deixado por si aqui no tópico. (Obrigado! Está muito bom!Faço ideia o trabalhão que o colega teve!)
Estive também a tentar fazer algo mais com o seu exemplo anterior deixado por si; e seguindo algumas dicas deixadas, resolvi trabalhar algumas rotinas que achei (a meu ver) conveniente.
Gostaria ainda, quando tivesse oportunidade(se não for pedir muito), que desse uma vista de olhos ao código que vou aqui liberar.
Nele fiz alguns ajustes :
- Verificação de conexão de Internet. (Sempre que tente ler uma página)
- Verificação de links (Se não estão quebrados)
- Carregamento de links provenientes de um ficheiro : Links.txt (Aqui ele diz que Escolher_Link não devolve o valor do caminho, não sei o porquê.)
Não sei se com estas implementações que fiz, influência de algum modo a performance do programa, talvez haja alguma maneira de contornar a situação para um processo mais rápido e eficaz.
Quanto ao programa deixado aqui por si, reparei que ele só faz a contagem de um único tópico,de cada vez, e o que pretendia era a soma de todos os tópicos existêntes a quando da actualização, efectuada pela chamada do Timer.
Restante BLZ!! (Melhor é impossivel)
Uma vez + obrigado por toda a ajuda prestada de sua parte.
Atentamente.
Programadorvb6


PEGUDO 31/03/2011 11:42:50
#369865
Resposta escolhida
[txt-size=6]A questão do txt, houve um erro de digitação:

O caracter barra ( / ) não é reconhecido como caminho, o certo é o caracter barra invertida ( \ )

Seu Código:
Escolher_Link = Ler_LinhaFicheiro(GetAppPath() & [Ô][txt-color=#e80000]/[/txt-color]Links.txt[Ô], IndicarNumero)

Código Correto:
Escolher_Link = Ler_LinhaFicheiro(GetAppPath() & [Ô][txt-color=#e80000]\[/txt-color]Links.txt[Ô], IndicarNumero)

As alterações quanto a internet e link quebrado são interessantes e o desempenho é irrelevante já que vai depender da internet usada.
Vai demorar um pouco mais para o programa iniciar pois se ele estiver conectado, ele vai listar os links e depois vai testar para ver se estão quebrados ou não.

Quanto ao timer você quer dizer que o ele deve listar todos os tópicos existentes na página de foruns e não as páginas que os tópicos tem?
Ou seja, ao invés de listar a página 1,2,3,4... do tópico GERAL - NOTÍCIAS, por exemplo
ele checar a lista de tópicos: GERAL - NOTÍCIAS, Fotografia, História e patrimônio, Literatura..., verificar se foi inserido um novo tópico e, caso tenha sido criado, jogar na combobox?[/txt-size]
PROGRAMADORVB6 31/03/2011 12:22:04
#369873
Olá boa tarde.
- De facto tem razão; houve mesmo um erro de digitação. (Já corrigido) e Obrigado.

- Quanto á verificação do status da internet, a ideia surgiu, derivado a não poder comprometer todas as rotinas efectuadas até então, visto todo este processo estar dependente de uma ligação para poderem funcionar correctamente.

- Em relação ao último assunto, o que eu pretendo fazer nomeadamente no botão Actualização : é a checagem geral aos tópicos : GERAL - NOTÍCIAS, Fotografia, História e patrimônio, Literatura..., se foi inserido um novo tópico e, caso se confirme, joge na combobox bem como a soma global do numero de assuntos contidos em todos os topicos.
Isto para que o utilizador seja informado a cada varrimento efectuado pela Timer, se há a existência de novos tópicos + assuntos a serem consultados pelo utilizador, porque á partida, existe uma escolha individual de um tópico específico na combobox,(estamos a dizer indirectamente que só desejamos que seja efectuada um procedimento de checagem individual de assuntos relacionados para esses mesmos tópicos.

Grato desde já pela sua enorme paciência.
Muito Obrigado.
Atentamente.
Programadorvb6
PEGUDO 02/04/2011 22:31:51
#370251
[txt-size=]Olá,
Preciso saber uma coisa:
O usuário usará o WebBrowser para alguma coisa?
Porque se for usar, terei que colocar um WebBrowser2, pois para fazer a contagem de todos os tópicos e assuntos existentes
o programa terá que percorrer cada tópico do forum para verificar quantos assuntos existem e depois somá-los.

Se o usuário for utilizar o webbrowser1, quando o programa for fazer a atualização, o webBrowser mudará de página e o usuário não conseguirá
mexer nele até que se termine a atualização.
[/txt-size]
PROGRAMADORVB6 03/04/2011 10:56:01
#370263
Olá, boa tarde.
Peço desde já as minhas desculpas, pela demora em responder ás suas questões colocadas.
Quanto ao webBrowser, penso que será conveniente, fazer á parte o webBrowser2 (Sem se ver), para as tarefas (contagem) ;como também referênciou.
Caso ache que seja conveniente outro procedimento, faça como achar melhor.
Estive a testar no seu último ficheiro que deixou aqui, e pareceu-me que a programação da contagem efectuada pelo Timer está ao contrário; ou seja o de está definido para15 seg.; está na realidade com 60 seg. etc...
De resto tudo bem.
Agradeço-lhe pela sua paciência e muita dedicação em me estar ajudando.
Melhor é impossivel.
Um bem haja.
Atentamente.
Programadorvb6
PEGUDO 03/04/2011 17:24:53
#370273
[txt-size=6]Olá
Veja estas últimas modificações que eu fiz.
Coloquei vários arquivos novos na pasta Debug onde está o exe:
O arquivo[txt-color=#0000f0] analisegeral.txt [/txt-color]é atualizado junto com o programa e vai guardar a soma de tópicos e assuntos existentes. Este arquivo vai ser lido quando o Form1 for carregado;
O arquivo [txt-color=#0000f0]topico.txt [/txt-color]vai guardar os tópicos existentes atualmente no forum, Se houver um tópico novo, ele será gravado neste arquivo e depois adicionado no ComboBox Links.
Por fim. coloquei um [txt-color=#0000f0]WebBrowser2[/txt-color] escondido para fazer atualizações.

Na questão da atualização, a lógica é o seguinte:

1. O Timer está habilitado;
2. Quando for hora de atualizar, o Timer será desabilitado para não dar erro de execução;
3. Programa atualiza;
4. Timer habilitado de novo.

Ou seja, o programa só conta os segundos DEPOIS da atualização.
supondo que o timer foi programado para 30 segundos e o programa demore 20 segundos para atualizar, ao todo são 50 segundos entre esperar e atualizar.
Eu desabilito o Timer para evitar que ele faça atualização em cima de atualização.

Verifiquei o que você disse sobre os 15 seg virarem 60 seg. Aqui tá normal, mesmo porque eu não pego o índice do item da combobox e sim o texto
Desta forma se eu escolher [Ô]25[Ô], eu transformo esta string em inteiro [txt-color=#0000f0]Val(ComboBox1.Text)[/txt-color] e jogo na variável [txt-color=#0000f0]Tempo_Espera[/txt-color].
Pode ser que seu PC esteja lendo de outra maneira. Se você puder debugar e tentar contonar este erro seria mais fácil, pois o programa está lendo perfeitamente aqui no meu.

Baixe dê uma olhada e faça os testes
[/txt-size]
PROGRAMADORVB6 04/04/2011 18:49:35
#370402
Olá boa noite.
Estive a testar o programa que postou aqui, ao consultar o código reparei, que assinala em uma da rotina da classes , mais propriamente na rotina : [ Verificar_Topicos() ] a seguinte observação.



      [ô][ô][ô] <summary>
[ô][ô][ô] Varre os links da página http://www.montargilforum.com/ncforum/archive/index.php e conta quantos links de tópicos existem
[ô][ô][ô] </summary>
[ô][ô][ô] <value></value>
[ô][ô][ô] <returns>Retorna uma lista com os links dos tópicos existentes na página</returns>
[ô][ô][ô] <remarks></remarks>
Protected Friend ReadOnly Property Verificar_Topicos() As Collection
Get
Dim Verificar_Topicos_Temp = New Collection
Dim TopicosExistentes As New Collection
Dim InserirNovoTopico As Boolean [ô]Se True insere novo tópico
Dim Arquivo As New StreamReader(Application.StartupPath & [Ô]    opicos.txt[Ô], System.Text.Encoding.Default)
Dim Gravar As StreamWriter
Dim Contador As Integer = 1

With Form1.WebBrowser2
Dim Divs As HtmlElementCollection = .Document.GetElementsByTagName([Ô]div[Ô])

For A = 0 To Divs.Count - 1
If Divs(A).Id = [Ô]content[Ô] Then
Dim Links As HtmlElementCollection = Divs(A).Document.Links

[ô]Inicia o loop em 5 para começar já do Link GERAL - NOTÍCIAS
[ô]Termina em -2 para não pegar o link [Ô]Antigo Blog Vila de Montargil[Ô]
For B = 5 To Links.Count - 2
If Not Links(B).InnerText = Nothing Then Verificar_Topicos_Temp.Add(Links(B).InnerText)
Next
Exit For
End If
Next

While Not Arquivo.EndOfStream [ô]Loop na lista de tópicos para adicioná-los à coleção temporária
TopicosExistentes.Add(Arquivo.ReadLine)
End While

Arquivo.Close() [ô]Fecha o StreamReader

[ô]Loop entre a lista de tópicos retornada da internet e a gravada no disco
[ô]Caso a lista da internet retorne algum tópico diferente da lista gravada
[ô]o novo tópico será inserido no arquivo e adicionado à ComboBox Links
For Each Topico In Verificar_Topicos_Temp
If Not Trim(Topico) = Trim(TopicosExistentes(Contador)) Then
Gravar = New StreamWriter(Application.StartupPath & [Ô]    opicos.txt[Ô]) [ô]Abre o arquivo para gravação
Gravar.WriteLine(Topico) [ô]Grava o novo tópico no arquivo
Form1.Links.Items.Add(Topico) [ô]Insere o novo tópico no arquivo
End If
Contador += 1 [ô]Incremente 1 para a lista de tópicos existentes possa verificar cada item
Next

Try
Gravar.Close() [ô]Fecha o Stream caso esteja aberto
Catch ex As Exception

End Try

End With
Verificar_Topicos = Verificar_Topicos_Temp
Return Verificar_Topicos
End Get
End Property


Já tentei colocar no inicio assim :
 Dim Gravar as New StreamWriter(Application.StartupPath & [Ô]    opicos.txt[Ô]) [ô]Abre o arquivo para gravação

Mas não consegui com que o erro desaparecesse.
Como posso fazer uma redefinição mais apropriada?
- Estive a ver também o Total de assuntos...... Já corrigido (erro meu) ao debugar..
Grato desde ja pela ajuda e a sua enorme paciência.
Atenciosamente.
Programadorvb6
Página 2 de 4 [36 registro(s)]
Tópico encerrado , respostas não são mais permitidas