Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: NsTeam en Diciembre 04, 2010, 11:53:21 am
-
Hola amigos
Tengo un problema al tratar de leer el codigo fuente de una Web...
Bueno en si, si puedo llegar a leer el codigo fuente de la pagina la cual esta en formato .txt
ejemplo http://www.example.com/123.txt (http://www.example.com/123.txt)
el codigo de la pagina seria este.. ya que es un documento en formato .txt
http://www.google.com
http://www.192.168.1.1/admin/login.asp
http://www.midominio.com/carpeta1/documento.txt
Logro leerlo en un textbox lo siguiente
(http://www.mundoimg.com/imagenes/musica/257729_mundoimg_1.jpg)
Pero en vez de que se salte al siguiente reglon me manda esa barrita
(http://www.mundoimg.com/imagenes/lugaresyviajes/257730_mundoimg_2.jpg)
Tengo el TexBox con la Propiedad Multiline en true...
Intente leyendolo en un RitchTextBox Lo cual Pude Leerlo Normal
http://www.google.com
http://www.192.168.1.1/admin/login.asp
http://www.midominio.com/carpeta1/documento.txt
Pero al usar un timer para copiar su contenido del Richtextbox al TextBox me copia todo en una linea de nuevo con la barrita Negra
(http://www.mundoimg.com/imagenes/musica/257729_mundoimg_1.jpg)
el problema es que tengo que usar el textbox para leer linea por linea...
ya que si intento leer en el ritchtextbox lo lee todo como una sola linea
Como Podria hacer para reemplazar esa linea por un "Enter" o tendria que modificar algo para que no me aparezca la barrita al leer el codigo fuente de la pagina y en vez de la barra mande... al siguiente reglon
Espero dejarme Entender.. y aver si alguien me da una manito con Esto
Gracias de Antemano
PD: el codigo para leer el codigo fuente de una pagina es el siguiente
Dim strUrl As String
Private Sub Command1_Click()
On Error GoTo manejadorerror
strUrl = txtURLbox.Text
If Len(strUrl) > 11 Then
Screen.MousePointer = 13
txtNote.Text = Inet1.OpenURL(strUrl)
Screen.MousePointer = 0
MsgBox ("Descarga completada"), vbInformation
Else
Screen.MousePointer = 0
MsgBox "Introduzca un nombre de documento válido en el cuadro URL"
End If
Exit Sub
manejadorerror:
Screen.MousePointer = 0
MsgBox "Error en la conexión con el URL", , Err.Description
End Sub
lo cual necesita un CommandButton , un txtURLbox.text y un txtNote.text
Si leen esta pag "http://www.gamerzvip.com/123.txt" veran que les pasa el mismo error
-
Intenta reemplazar el textBox por un RichtText te deberia funcionar creo que esas barritas negrras que decis son saltos de carro.
Dime si te sirvio luego!
-
COn un richtextbox logro hacerlo
Pero al copiar ese contenido del ritchtexbox a un textbox... me copia todo en un a linea con las barritas... el project que andaba haciendo tiene que usar un textbox porque mi project lee linea por linea el contenido de la caja de texto lo cual no logra leer linea por linea en el ritch text box
gracias por responder
-
Mira este ejemplo que te prepare creo que te puede servir :
Debería cargar el contenido de tu control 'txtURLbox' en la variable TEXTO y si los caracteres que como barritas son Chr(10) debiera cuncionar sino te anda reemplaza todos los chr(10) por chr(13) y dime.
Dim M() As String
Dim N
TEXTO = "HOLA 1" & Chr(10) & "HOLA 2" & Chr(10) & "HOLA 3"
M() = Split(TEXTO, Chr(10))
For N = 0 To UBound(M())
Text1.Text = Text1.Text & M(N) & vbNewLine
Next
-
mmm lo probe y no me anda me sigue.. apareciendo esas barritas tanto como Chr(10) y Chr(13) en vez del salto al siguiente reglon u.U
-
el textBox, tiene establecida la propiedad de Multilinea?
en todo caso, en el Api Guide hay un ejemplo de como poder hacer eso, de leer el "source" de una pagina,, InternetReadFile
Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.microsoft.com/index.htm"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
'Create a buffer for the file we're going to download
sBuffer = Space(1000)
'Create an internet connection
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'Open the url
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
'Read the first 1000 bytes of the file
InternetReadFile hFile, sBuffer, 1000, Ret
'clean up
InternetCloseHandle hFile
InternetCloseHandle hOpen
'Show our file
MsgBox sBuffer
End Sub
fijate si eso te sirve adaptandolo a tus necesidades ovbiamente.
PD: cuando estes desarrollamdo un software, es recomendable usar debug.print, te puede evitar muchos dolores de cabeza
-
si amigo... si tengo habilitada la propiedad multiline...
el cuanto al codigo gracias...
pero puedo leer el codigo de la pagina el problema es la barrita negra que impide el salto a la siguiente linea
-
mmmmmmm.... puede ser algo de unicode, o algo asi, ya no me acuerdo como era esa conversion, pero usa esto funciona perfecto:
Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
Debug.Print GetUrl("http://www.gamerzvip.com/123.txt", 1000)
'Text1.Text = GetUrl("http://www.gamerzvip.com/123.txt", 1000)
End Sub
Private Function GetUrl(url As String, Bytes As Long) As String
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
sBuffer = Space(Bytes)
hOpen = InternetOpen(vbNullString, 1, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, url, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
InternetReadFile hFile, sBuffer, Bytes, Ret
InternetCloseHandle hFile
InternetCloseHandle hOpen
GetUrl = Trim(sBuffer)
End Function
-
pero puedo leer el codigo de la pagina el problema es la barrita negra que impide el salto a la siguiente linea
Intenta obtener el codigo ascii de esa barrita (tiene que ser 10 o 13) entonces reemplazas
Text1.Text = Replace$(Text1.Text, Chr$(13), vbNewLine)
-
Mira este ejemplo que te prepare creo que te puede servir :
Debería cargar el contenido de tu control 'txtURLbox' en la variable TEXTO y si los caracteres que como barritas son Chr(10) debiera cuncionar sino te anda reemplaza todos los chr(10) por chr(13) y dime.
Dim M() As String
Dim N
TEXTO = "HOLA 1" & Chr(10) & "HOLA 2" & Chr(10) & "HOLA 3"
M() = Split(TEXTO, Chr(10))
For N = 0 To UBound(M())
Text1.Text = Text1.Text & M(N) & vbNewLine
Next
Hola que raro si pruebas este ejemplo tal como te lo pase veras que funciona! por que no pegas tu codigo completo o el contenido del textbox como texto no como imagen que lo pusiste alli!
-
mm bue voy a la opcion mas bruta:
Creo que era algo asi, puede fallar!!
Split
Dim temp() as string
Dim i as integer
temp = split(Text1.Text, "|")
for i = LBound(temp) to UBound(temp)
debug.print temp(i)
Next
-
pero puedo leer el codigo de la pagina el problema es la barrita negra que impide el salto a la siguiente linea
Intenta obtener el codigo ascii de esa barrita (tiene que ser 10 o 13) entonces reemplazas
Text1.Text = Replace$(Text1.Text, Chr$(13), vbNewLine)
Gracias a Todos por responder...
pero la idea mas facil era la de raul
txtNote.Text = Replace$(txtNote.Text, Chr$(10), vbNewLine)
y me ando de lujo...
de Nuevo gracias a todos y en especial a Raul :)