Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Registro Con Campos Definidos
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Registro Con Campos Definidos 
 
Hola , es mi primera incursion en gambas y necesito mas que una soga un bote salvavidas.
1) como hago para definir un registro de largo fijo como en VB5
ej
 type mireg
    nombre as string * 50
    apellido as string * 50
global  regi as mireg

'para cargar todo el registro y guardar todo el registro desde una sola variable

2) como bajo una pagina  desde internet para leerlo en forma de texto.
quiero bajar por ejemplo www.dolarhoy
leer la pagina guardada y encontrar una cadena determinada.

Estoy usando gambas 2.16

Desde ya muchas gracias

renovarse es vivir
 



 
Eduardo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Un error y la respuesta de abajo se me duplica... excuse me.
 




===================
No podemos regresar
 
última edición por shordi el Martes, 17 Noviembre 2009, 18:05; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
En lo relativo al tipo de dato, puedes crear un nuevo archivo de clase llamado persona, por ejemplo, que contenga:

PUBLIC nombre as string
PUBLIC apellido as string
 


Luego en tu código, formulario o módulo creas una instancia de esa clase y alimentas las propiedades de la instacia

DIM per as NEW persona
per.nombre ="este es el nombre"
per.apellido="este el apellido"
 


También puedes crear métodos constructores en tu clase (_new) que te alimenten valores por defecto, longitudes, etc.

En lo relativo al fichero de internet, descárgalo con el comando externo wget y luego lo cargas en un string y buscas, dentro de gambas, o buscas con comandos externos como grep, y sólo cargas en gambas el resultado. Las posibilidades son muchas.
 




===================
No podemos regresar
 
última edición por shordi el Martes, 17 Noviembre 2009, 18:04; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Eduardo escribió:  


2) como bajo una pagina  desde internet para leerlo en forma de texto.
quiero bajar por ejemplo www.dolarhoy
leer la pagina guardada y encontrar una cadena determinada.

Estoy usando gambas 2.16

Desde ya muchas gracias

renovarse es vivir


Mira este código:


PRIVATE _downloadAsyncKey AS NEW HttpClient AS "_DownloadKey"
PRIVATE _downloadAsyncData AS NEW HttpClient AS "_DownloadData"
PRIVATE downloadBufferKey AS String
PRIVATE downloadBufferData AS String
PRIVATE csgn AS String

'****PROPERTIES******
PRIVATE $qerror AS String
PRIVATE $qcall AS String
PRIVATE $fname AS String
PRIVATE $name AS String
PRIVATE $addr1 AS String
PRIVATE $addr2 AS String
PRIVATE $country AS String
PRIVATE $state AS String
PRIVATE $grid AS String
PRIVATE $county AS String
PRIVATE $qslmgr AS String
PRIVATE $email AS String

PROPERTY READ qcall AS String
PROPERTY READ name AS String
PROPERTY READ fname AS String
PROPERTY READ qerror AS String
PROPERTY READ addr1 AS String
PROPERTY READ addr2 AS String
PROPERTY READ country AS String
PROPERTY READ state AS String
PROPERTY READ grid AS String
PROPERTY READ county AS String
PROPERTY READ qslmgr AS String
PROPERTY READ email AS String

'*************** QRZ.com Web method ***************

PRIVATE _download AS NEW HttpClient AS "Download"
PRIVATE downloadBuffer AS String
PRIVATE $finished AS Boolean = TRUE

PUBLIC SUB getQRZcomWeb(URL AS String)
    downloadBuffer = ""  
  IF $finished = TRUE THEN
   _download.Async = TRUE
   _download.TimeOut = 5
   _download.URL = URL
   _download.Get()
  ENDIF
END

PUBLIC SUB Download_Read()
  DIM buffer AS String
  $finished = FALSE
  READ #LAST, buffer, Lof(LAST)
  downloadBuffer &= buffer
END

PUBLIC SUB Download_Error()
    _download.Close
  DEBUG "Error downloading " & _download.Status
END

PUBLIC SUB Download_Finished()
    extractData(downloadBuffer)
    $finished = TRUE
    FMain.updateFields()
END
PRIVATE FUNCTION stripField(s AS String) AS String  
  IF s THEN
    s = Trim(s)
    s = Mid(s, InStr(s, "p>") + 2, InStr(s, "</") - (InStr(s, "p>") + 2))
  ENDIF
  RETURN s
END

PUBLIC SUB extractData(S AS String)

    DIM calldata, callsign, id AS String
    DIM regex AS Regexp
    DIM i, j AS Integer
    DIM sArr AS NEW String[]

  
    IF InStr(S, "<!-- begin calldata") THEN    
    
        i = InStr(S, ")\">")
        j = InStr(S, "style=\"margin-top:1.5em;")
        IF j > i THEN calldata = Mid(S, i, (j - i))
        sArr = Split(calldata, "\n", "", TRUE)  
        
        callsign = Replace(sArr[0], ")\"", "p", 1) 'to match stripField() function
        $qcall = stripField(callsign)
        $fname = stripField(sArr[1])
        $addr1 = stripField(sArr[2])
        $addr2 = stripField(sArr[3])
        $country = stripField(sArr[4])
        sArr.Clear
    ELSE
        $qcall = ("Not Found")
    ENDIF
    IF InStr(S, "Info:") THEN $qslmgr = stripField(Upper(Mid(S, InStr(S, "Info:") + 24)))
    IF InStr(S, "Square:") THEN $grid = Upper(Mid(S, InStr(S, "Square:") + 27, 6))
    
    CATCH
        Message.Error(Error.Text & "\n" & Error.Where)
 
END

'**********PROPERTY METHODS***************

PRIVATE FUNCTION name_Read() AS String
    RETURN $name
END

PRIVATE FUNCTION fname_Read() AS String
    RETURN $fname
END

PRIVATE FUNCTION qerror_Read() AS String
    RETURN $qerror
END

PRIVATE FUNCTION addr1_Read() AS String
    RETURN $addr1
END

PRIVATE FUNCTION addr2_Read() AS String
    RETURN $addr2
END

PRIVATE FUNCTION state_Read() AS String
    RETURN $state
END

PRIVATE FUNCTION grid_Read() AS String
    RETURN Upper($grid)
END

PRIVATE FUNCTION county_Read() AS String
    RETURN $county
END

PRIVATE FUNCTION qslmgr_Read() AS String
    RETURN Upper($qslmgr)
END

PRIVATE FUNCTION email_Read() AS String
    RETURN Lower($email)
END

PRIVATE FUNCTION qcall_Read() AS String
    RETURN Upper($qcall)
END

PRIVATE FUNCTION country_Read() AS String
    RETURN $country
END
 


El código completo incluyendo otro método específico para XML lo puedes ver aquí: http://dfhlog.googlecode.com/svn/trunk/QRZ.class

Lo que hago es usar el método asíncrono para descargar una página (la ventaja es que de esta forma, la página se baja por trozos, impidiendo la congelación de la GUI ) y luego es procesada para extraer los datos de interés.

Espero que te sirva, cualquier duda estaré encantado de ayudarte.
 




===================
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: Registro Con Campos Definidos 
 
Gracias por las respuestas y la rapidez
Voy a revisarlas , estudiarlas, comprenderlas y luego les cuento.
Que dificil se hace perder los vicios.
Amplio un poquito, entonces si tengo que guardar todo mi registro de persona en un archivo solo me basta abrirlo para escritura  hacer un print Persona  y cerrarlo? o tengo que concatenar per.nombre & per.apellido?
Sigo en la lucha
 



 
Eduardo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Pues tendrás que concatenarlo, supongo, que una clase es, básicamente, una colección de punteros y no será imprimible de una... pero no lo he probado nunca.
Prueba y nos cuentas.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
DIM per as NEW persona
per.nombre ="este es el nombre"
per.apellido="este el apellido"


Tendrás que poner print per.nombre y luego print per.apellido. No puedes poner print per.

Pero eso es igual en vb.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Empezare probando
Son dos los temas por ahora, pero primero tengo que resolver el de base de datos en archivo texto  con largo fijo
Soplo  en Vb con utilizar Put regi , es suficiente pq engloba todos lo registros (Fijate en mi ejemplo).

Si hay que concatenar se podria hacer una funcion que devuelva el largo del registro ya concatenado habiendole pasado cada uno de los campos ( no haria falta pasar las variables como parametros  pq podrian ser publicas y ya estar cargadas)

Algo asi

Public function concatenonombres as string
returns ( v1 & v2& v3........)
end

entonces al guardar solo me quedaria
Print concatenonombres


Que opinan?



Me estan haciendo pensar..... Eso es bueno y me gusta.... El facilismo oxida  
 



 
Eduardo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Si hay que concatenar se podria hacer una funcion que devuelva el largo del registro ya concatenado habiendole pasado cada uno de los campos

Exactamente esa es la solución adecuada, salvo que no tienes que pasar cada variable. Puedes pasar la clase entera

Dato=concatenar(per)

Private function Concatenar(P as Per) as string
Dim S as string
s=p.nombre & " " & p.apellido
return s
endif
 


Un saludo
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Registro Con Campos Definidos 
 
Soplo

Si per es Publica , no necesitaria siquiera pasarla porque ya esta en memoria o me equivoco
 



 
Eduardo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
2.40 0 10 5
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Borrar Un Registro numero110 Bases de Datos 13 Sabado, 05 Diciembre 2009, 00:45 Ver último mensaje
shordi
No hay nuevos mensajes Llevar Un Registro De Las Temperaturas Del Pc Shell Mundo Linux 2 Lunes, 06 Noviembre 2017, 19:43 Ver último mensaje
Shell
No hay nuevos mensajes Bloquear Registro Mysql alessandri Bases de Datos 10 Lunes, 13 Febrero 2017, 20:18 Ver último mensaje
tincho
No hay nuevos mensajes Eliminar Registro (SOLUCIONADO) billgeorge Bases de Datos 2 Viernes, 23 Marzo 2012, 18:13 Ver último mensaje
billgeorge
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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
No puede descargar archivos
No puede publicar eventos en el calendario