LER UM FICHEIRO DE TEXTO EM URL

SERGIOVIEIRA 25/08/2013 16:13:53
#428085
Aqui na faculdade estamos a desenvolver um apequena aplicação para gerir a Biblioteca. Agradecendo desde já toda a ajuda que nos possam prestar, trago uma nova questão:

Precisamos de abrir um ficheiro de texto numa url cujo valor será de 0 , se entretanto não tiver sido alterado, ou será de 1 se tiver tido alguma alteração.

Através do Shell execute, conseguimos abrir e fazer o download do ficheiro, mas não conseguimos ler o ficheiro de texto, o que torna inútil esta acção. Pretendia-mos algo assim:

No evento click de um botão:

1- Acede à URL e abre o ficheiro de texto para leitura (ver.txt)

2- Se o valor for 0 - aborta, se for 1, navega para a nova URL (.../manuais.doc) e informa os utilizadores que existem alterações efectuadas nos manuais e que necessitam substituir os documentos.

Isto seria muito útil pois todas as semanas existem alterações e todas as segundas feiras os utilizadores devem substituir os documentos. Os utilizadores estão espalhados na faculdade, mas também podem estar em outro lugar qualquer, motivo pelo qual estamos a pensar na DropBox para efectuar isto.

Estavamos a fazer assim, mas como é óbvio não está funcionando:
Dim Ficheiro As Integer, Linha, NomeFicheiro As String
Dim Status As String
Dim lReturn As Long
lReturn = ShellExecute(hWnd, [Ô]open[Ô], _
[Ô]
https://www.dropbox.com/s/clhogyf0zxluti4/ver.txt[Ô], _
vbNull, vbNull, SW_SHOWNORMAL)
Ficheiro = FreeFile
Open [Ô]ver.txt[Ô] For Input As #Ficheiro
Line Input #Ficheiro, Linha
MsgBox Linha
If Status > 0
MsgBox([Ô]Por favor actualizem os manuais[Ô],vbinformation[Ô],[Ô]Manuais[Ô])
ShellExecute Me.hWnd, [Ô]open[Ô], [Ô]https://www.dropbox.com/s/trdkp9fwt2s3ewl/Manuais.doc[Ô], [Ô][Ô], [Ô][Ô], 1
End If
Close #Ficheiro


Agradeciamos a vossa preciosa ajuda.
TECLA 25/08/2013 16:31:53
#428086
Resposta escolhida
Tente o seguinte:

No VB6, clique no menu Project > Components e marque o componente Microsoft Internet Transfer Control (Inet).
No formulário, adicione o controle Inet e as linhas de código abaixo para obter o conteúdo do arquivo de texto.

Private Sub Command1_Click()
On Error GoTo erro
Dim valor As String
valor = Inet1.OpenURL([Ô]https://sites.google.com/site/programacaoonline/arquivoweb.txt[Ô])
MsgBox valor
Exit Sub

erro:
MsgBox Err.Description
End Sub


Perceba que adicionei um botão (com o nome Command1) no Form e no evento Click do mesmo é que escrevi o código acima.
SERGIOVIEIRA 25/08/2013 16:41:49
#428088
Obrigado, vou tentar e retorno.
SERGIOVIEIRA 25/08/2013 17:01:44
#428090
Caro amigo

Fiz conforme me disse mas coloquei no evento load e recebi uma mensagem [Ô]programação on line google....etc[Ô]

Se o fizer para o a dropbox, envia-me um script bastante extenso

Private Sub Form_Load()
On Error GoTo erro
Dim valor As String
valor = Inet1.OpenURL([Ô]https://sites.google.com/site/programacaoonline/arquivoweb.txt[Ô])
MsgBox valor
Exit Sub
erro:
MsgBox Err.Description
End Sub

.........................

Private Sub Form_Load()
On Error GoTo erro
Dim valor As String
valor = Inet1.OpenURL([Ô]https://www.dropbox.com/s/clhogyf0zxluti4/ver.txt[Ô])
MsgBox valor
Exit Sub
erro:
MsgBox Err.Description
End Sub

Aqui recebo ao invés do valor [Ô]o[Ô], um script. Se o colega puder experimentar...sou novato nisto e estou atrapalhado.
GANDA.NICK 26/08/2013 13:28:32
#428127
Olá

Altere o link de:

https://www.dropbox.com/s/clhogyf0zxluti4/ver.txt

para:

https://dl.dropboxusercontent.com/s/clhogyf0zxluti4/ver.txt



Outra maneira de fazer é usando a API URLDownloadToFile

Private Declare Function URLDownloadToFile Lib [Ô]urlmon[Ô] Alias [Ô]URLDownloadToFileA[Ô] (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Sub Form_Load()
URLDownloadToFile 0, [Ô]https://dl.dropboxusercontent.com/s/clhogyf0zxluti4/ver.txt[Ô], [Ô]C:\ver.txt[Ô], 0, 0

Dim sFileText As String
Dim iFileNo As Integer
iFileNo = FreeFile

Open [Ô]C:\ver.txt[Ô] For Input As #iFileNo
Input #iFileNo, sFileText
Close #iFileNo

Kill ([Ô]C:\ver.txt[Ô])

MsgBox sFileText

End Sub



SERGIOVIEIRA 26/08/2013 16:25:25
#428132
Muito obrigado amigo, Vou experimentar ainda hoje e retorno o resultado. Muito obrigado.
SERGIOVIEIRA 26/08/2013 18:04:36
#428141
Caro GANDA_NICK, nem sei como lhe agradecer. Foi limpinho, com a função funfou que foi uma maravilha. Muito obrigado. O final ficou desta maneira, mas se o colega vir que existe algo que possa ser melhorado e não for um abuso da minha parte,,,


Private Declare Function ShellExecute Lib [Ô]shell32.dll[Ô] Alias [Ô]ShellExecuteA[Ô] (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function URLDownloadToFile Lib [Ô]urlmon[Ô] Alias [Ô]URLDownloadToFileA[Ô] (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Sub Form_Load()
URLDownloadToFile 0, [Ô]https://dl.dropboxusercontent.com/s/clhogyf0zxluti4/ver.txt[Ô], [Ô]C:\ver.txt[Ô], 0, 0

Dim sFileText As String
Dim iFileNo As Integer
iFileNo = FreeFile

Open [Ô]C:\ver.txt[Ô] For Input As #iFileNo
Input #iFileNo, sFileText
Close #iFileNo

Kill ([Ô]C:\ver.txt[Ô])

MsgBox sFileText
If sFileText >= 1 Then
Call MsgBox([Ô]Colegas, estão disponiveis novos manuais. Façam o download[Ô], vbInformation, [Ô]Update[Ô])
ShellExecute Me.hWnd, [Ô]open[Ô], [Ô]https://www.dropbox.com/s/trdkp9fwt2s3ewl/Manuais.doc[Ô], [Ô][Ô], [Ô][Ô], 1 [ô]Open for update
Else
Call MsgBox([Ô]Os manuais estão actualizados[Ô], vbInformation, [Ô]Nenhum Update[Ô])
End If
End Sub

Isto funciona, mas se vir que pode ser melhorado, estou a enviar-lhe o projecto. De qualquer forma renovo os agradecimentos de todos nós, os envolvidos neste projecto.

Tópico encerrado , respostas não são mais permitidas