Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Leer Una Linea Completa De Un TextArea
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Leer Una Linea Completa De Un TextArea 
 
Hola, buenas noches!!
Llevo un buen rato buscando la solución pero no hay manera . Haber mi situación es la siguiente, tengo un archivo .txt subido a un servidor, he conseguido que dicho archivo sea leido por gambas y pasado a un TextArea, pero ahora viene el problema, y es que lo quiero es que en el texto de un label sea el texto de una cierta linea de dicho textarea. En Visual Basic esto se hacia facilmente con un comando, pero en gambas me es imposible hallar la formula. Haber si me podeis ayudar  

Aquí el codigo:

Public Sub Process_Read()

  Dim sCad As String
  Read #Last, sCad, -99999999999
  TextArea1.Text = sCad

End

Public Sub Button7_Click()
Dim hProc As Process
Dim sCad As String
TextArea1.Text = ""
hProc = Exec ["curl", "radietor.16mb.com/Radietor-configuracion.txt"] For Read As "Process"
Do While hProc.State = Process.Running
  Label1.text = "Descargando archivo de configuracion, espere"
  Wait 0.1
Loop
  If TextArea1.text = "" Then
    Label1.Text = "Sin conexión a Internet"
  Else
    Label1.Text = "Descargado archivo correctamente"
  Endif
End
 


con este código consigo que se descargue el archivo en el texarea pero el problema está en leer una sola lina de dicho textarea.

Un saludo y Feliz Navidad   ,
Alejandro Moya
 



 
última edición por Radietor el Martes, 24 Diciembre 2013, 14:19; editado 2 veces 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
Radietor:

Citar:
el problema está en leer una sola lina de dicho textarea.


Prueba con esto:

public sub ObtenerLineas()
dim a as integer
dim lineas as new string[]

lineas=split(TextArea1.Text ,gb.crfl)

'ahora el array lineas, continen las lineas

'escribo la primera linea
print lineas[0]

for a=0 to lineas.max
'escribo en consola todas las lineas
print lineas[a]
next

end


Con la instrucción split, "partes" el texto cuando encuentra el caracter gb.crlf (  ver split  y gb.crlf )

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
jsbsan escribió: [Ver mensaje]
Radietor:

Citar:
el problema está en leer una sola lina de dicho textarea.


Prueba con esto:

public sub ObtenerLineas()
dim a as integer
dim lineas as new string[]

lineas=split(TextArea1.Text ,gb.crfl)

'ahora el array lineas, continen las lineas

'escribo la primera linea
print lineas[0]

for a=0 to lineas.max
'escribo en consola todas las lineas
print lineas[a]
next

end


Con la instrucción split, "partes" el texto cuando encuentra el caracter gb.crlf (  ver split  y gb.crlf )

Saludos


Muchas gracias!! Me ha funcionado perfecto, pero para evitar gb.crlf, lo he sustituido por Chr$(10) y así funciona perfecto y evito usar un nuevo componente    .

Un saludo,
Alejandro Moya
 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
Radietor escribió: [Ver mensaje]
para evitar gb.crlf, lo he sustituido por Chr$(10) y así funciona perfecto y evito usar un nuevo componente  


Hola

gb.crlf no es un componente, sino una constante de gambas que se sustituye en tiempo de ejecución por los caracteres que citas. No hace falta habilitar nada más y es más corto y elegante.

Por otra parte, quizás sea más eficiente analizar las cadenas que buscas dentro del evento read del proceso, usando funciones típicas de cadenas o expresiones regulares, en lugar de buscar una determinada línea dentro de un control textarea, aunque sin conocer tu proyecto no puedo aconsejarte mejor.

Por cierto, gambas tiene clases nativas para descarga de ficheros y páginas web, echa un vistazo a httpclient. Es mucho suponer que tus clientes o usuarios van a tener instalado en su sistema el programa curl, por tanto fallará estrepitosamente si no lo tienen. Siempre que puedas, es mejor evitar el uso de herramientas externas, sobre todo cuando gambas tiene soporte para hacer lo mismo.

Saludos y feliz Navidad
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
Muchas gracias por ayudarme con mi problema, a continuación os pongo el código y os explico que quiero hacer:

Codigo:
Public Sub Form_Open()
  WebSettings.IconDatabase.Path = File.Dir(File.Dir(24
">Temp$()))
  WebSettings[WebSettings.PluginsEnabled] = True
  WebSettings[WebSettings.JavascriptEnabled] = True
  WebSettings[WebSettings.JavaEnabled] = True
  ArchivoRadietorconfiguracion
End

Public Sub Process_Read()

  Dim sCad As String
  Read #Last, sCad, -99999999999
  TextArea1.Text = sCad

End

Public Sub ArchivoRadietorconfiguracion()
Dim hProc As Process
Dim sCad As String
TextArea1.Text = ""
hProc = Exec ["curl", "http://radietor.16mb.com/Radietor-configuracion.txt"] For Read As "Process"
Do While hProc.State = Process.Running
  Label1.text = "Descargando archivo de configuracion, espere"
  Wait 0.1
Loop
  If TextArea1.text = "" Then
    Label1.Text = "Error al conectar con el Servidor de Actualizaciones. Por favor compruebe su conexión a Internet"
  Else
    Label1.Text = ""
    ObtenerLineas
  Endif
End

Public Sub ObtenerLineas()
Dim lineas As New String[]
lineas = Split(TextArea1.Text, Chr$(10))
Label6.Text = lineas[1]
Label5.Text = lineas[50]
Label1.Text = lineas[3]
Actualizadorautomatico
End

Public Sub Actualizadorautomatico()
  
  If Label2.Text = Label6.Text Then
  
  Else If Label2.Text > Label6.Text Then
    Message("Posee una versión Beta del programa")
  Else If Label2.Text < Label6.Text Then
    Label1.Text = "Posee una versión antigua del programa, por favor actualicela"
  Endif
  
End


Haber yo tengo alojado un archivo .txt en mi servidor (este archivo es el archivo de configuración de Radietor, que comparte tanto la versión de Windows como la de Linux, entre una de las funciones que tiene este archivo, y es la función que hago uso en Linux, es la actualizador), dicho archivo quiero que al arrancar el programa se descargue el contenido de dicho archivo en un TexArea, y luego desde este textarea ir cogiendo las lineas que me interesan para hacer uso de las diferentes funciones, entre ellas, y es la que me interesa, es de actualizador. Al descargarse el archivo en el textArea, coge la linea 2 del text area y la compara con un label para ver si es el mismo número, si es mayor o si es menor, y asi sacar los mensajes correspondientes.

Esto es mas o menos la idea de lo que quiero hacer, esto mismo ya lo tengo hecho en Visual Basic con Windows, pero los problemas vienen ahora con Linux    , más o menos con el codigo que os he puesto antes funciona como yo quiero, pero me gustaria hacer uso del consejo de jguardon (no usar curl y hacer uso del httpclient), pero no tengo ni idea de como hacerlo.
Con lo que me costo hacer que el ordenador descargase el contenido y lo metiese en el textarea    y ahora vuelta a empezar xD , de todos modos, muchas gracias por su consejo y así hacer las cosas tal y como se deberían hacer.

Un saludo,
Alejandro Moya
 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
Radietor:

Citar:
entre una de las funciones que tiene este archivo, y es la función que hago uso en Linux, es la actualizador)"

Mira, en mi blog publique algo que uso para lo mismo, usando el httpclient:
Enlace update

Saludos

Nota:
El archivo con la información la guardo en una direccion pagina de blog realizada en blogger para que asi permanezca mas tiempo y no se borre (lo cual es muy habitual en alojamientos gratuitos).
Ejemplo:  http://constructordiploma.blogspot.com.es/2013/02/version.html
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 24 Diciembre 2013, 16:19; editado 2 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Leer Una Linea Completa De Un TextArea 
 
jsbsan escribió: [Ver mensaje]
Radietor:

Citar:
entre una de las funciones que tiene este archivo, y es la función que hago uso en Linux, es la actualizador)"

Mira, en mi blog publique algo que uso para lo mismo, usando el httpclient:
Enlace update

Saludos

Nota:
El archivo con la información la guardo en una direccion pagina de blog realizada en blogger para que asi permanezca mas tiempo y no se borre (lo cual es muy habitual en alojamientos gratuitos).
Ejemplo:  http://constructordiploma.blogspot.com.es/2013/02/version.html


Muchas gracias!!! Creo que ya he conseguido lo que quería, he tenido que retocar un poco el código para hacer que descargase el contenido en el textarea. A continuación os pongo el código, y haber si veis algún fallo más:

' gambas class file

Public Sub Form_Open()
  WebSettings.IconDatabase.Path = File.Dir(File.Dir(24
">Temp$()))
  WebSettings[WebSettings.PluginsEnabled] = True
  WebSettings[WebSettings.JavascriptEnabled] = True
  WebSettings[WebSettings.JavaEnabled] = True
  ArchivoRadietorconfiguracion
End

Private MiHttp As New HttpClient
Public version As String
Public ruta As String
Public programa As String

Public Sub ArchivoRadietorconfiguracion(Optional label1 As Label)
Dim a As Integer
Dim Buffer As String
Dim res As Integer
MiHttp.url = "http://radietor.16mb.com/Radietor-configuracion.txt"
MiHttp.Get()
If label1 <> Null Then label1.Caption = "Espere..."
While (Lof(MiHttp) = False And a < 10)
'espero 1 segundo o que llegue a>10
a = a + 1
Wait 1
Wend
If a = 10 Or Lof(MiHttp) = False Then
Label1.text = "No ha sido posible conectarse al servidor"
Return
Endif
If Lof(MiHttp) Then
Read #MiHttp, Buffer, Lof(MiHttp)
End If
TextArea1.text = Buffer
ObtenerLineas
End

Public Sub ObtenerLineas()
Dim lineas As New String[]
lineas = Split(TextArea1.Text, Chr$(10))
Label6.Text = lineas[1]
Label5.Text = lineas[50]
Label1.Text = lineas[3]
Actualizadorautomatico
End

Public Sub Actualizadorautomatico()
  
  If Label2.Text = Label6.Text Then
  
  Else If Label2.Text > Label6.Text Then
    Message("Posee una versión Beta del programa")
  Else If Label2.Text < Label6.Text Then
    Label1.Text = "Posee una versión antigua del programa, por favor actualicela"
  Endif
  
End


Una vez más, muchas gracias  
Un saludo,
Alejandro Moya
 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Selecionar Que Linea Leer De Un Archivo De... vikobak General 9 Viernes, 18 Junio 2010, 01:43 Ver último mensaje
AnSnarkista
No hay nuevos mensajes Rescatar Linea De Un TextArea DEATH General 3 Viernes, 10 Junio 2011, 14:41 Ver último mensaje
DEATH
No hay nuevos mensajes Se Puede Leer Una Linea Especifica De Un A... v3ctor General 23 Sabado, 06 Diciembre 2014, 21:25 Ver último mensaje
shordi
No hay nuevos mensajes Tener Siempre Visible La Ultima Linea De U... v3ctor General 2 Sabado, 14 Marzo 2015, 21:24 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron