estructura de datos

Post Reply
jponce
Posts: 193
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala
Contact:

estructura de datos

Post by jponce »

Hola nuevamente a todos en el foro,

Tengo un problema actualmente estoy trabajando en una aplicacion que tiene el siguiente segmento de programación.
DEFINE STRUCT oServi
STRUCT FIELD "nofactura" INIT 0
STRUCT FIELD "fecha" INIT Space(10)
STRUCT FIELD "vendedor" INIT 0
STRUCT FIELD "marcav" INIT space(30)
STRUCT FIELD "idplaca" INIT space(30)
STRUCT FIELD "color" INIT space(30)
STRUCT FIELD "obs" INIT space(100)
STRUCT FIELD "agencia" INIT 0
STRUCT FIELD "serie" INIT space(2)
END STRUCT

Lo que me permite es trabajar una estructura de datos como si fuera una dbf por ejemplo

oServicios := TMsTable():New( oDb, "ordenserv" )
cSql := "select no_factura,fecha,id_vendedor,marcav,id_placa,color,obs,id_agencia,serie from ordenserv where "
cSql += "nit = '"+oBase:FieldGet(1)+"'"
cSql += "order by fecha desc"
if !oServicios:Open( cSql )
return( nil )
endif

oServicios:GoTop:Read()
While !oServicios:Eof()
oServi:Blank()
oServi:nofactura := oServicios:Fieldget(1)
oServi:fecha := oServicios:Fieldget(2)
oServi:vendedor := oServicios:Fieldget(3)
oServi:marcav := oServicios:Fieldget(4)
oServi:idplaca := oServicios:Fieldget(5)
oServi:color := oServicios:Fieldget(6)
oServi:obs := oServicios:Fieldget(7)
oServi:agencia := oServicios:Fieldget(
oServi:serie := oServicios:Fieldget(9)
oServi:Insert()
oServicios:Fetch()
end

oServi:GoTop()

y siquiero modificar
while !oServi:Eof()
if oServi:noFactura = 12345

oServi:marcav := "Mazda"
oServi:Save()

endif

oServi:Skip()
End





con esto lo que hago es llenra la estructura con una consulta, la cuestion es que quite varias librerias del archivo de compilacion hasta que encontre una libreria que es la que contiene esta clase para poder trabajar de esta forma, el problema es que no tengo los fuentes de esa libreria y necesito separar la aplicacion para otro segmento y no quiero compilar esta libreria.

Alguien conoce esta forma de hacer estructuras?

de antemano muy agradecido

Atentamente,
Julio Ponce
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Julio,

xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:

Code: Select all

#include "hbstruct.ch"

function Main()

    local oServi

    STRUCTURE oServi 
       MEMBER "nofactura" INIT 0 
       MEMBER "fecha" INIT Space(10) 
       MEMBER "vendedor" INIT 0 
       MEMBER "marcav" INIT space(30) 
       MEMBER "idplaca" INIT space(30) 
       MEMBER "color" INIT space(30) 
       MEMBER "obs" INIT space(100) 
       MEMBER "agencia" INIT 0 
       MEMBER "serie" INIT space(2) 
    ENDSTRUCTURE 

    MsgInfo( "ok" )

return nil
FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:

Code: Select all

#include "FiveWin.ch"
#include "struct.ch"

function Main()

    local oStruct

    STRUCT oRect
       MEMBER nLeft   AS LONG
       MEMBER nTop    AS LONG
       MEMBER nRight  AS LONG
       MEMBER nBottom AS LONG
    ENDSTRUCT

    MsgInfo( oRect:ClassName() )

return nil
De todas formas, como me comentastes, si necesitas que esas estructuras hagan más cosas, lo idóneo es que te construyas una Clase propia, salvo que encuentres los CH y PRGs que usabas.
regards, saludos

Antonio Linares
www.fivetechsoft.com
jponce
Posts: 193
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala
Contact:

Estructura de Datos

Post by jponce »

Gracias solo con una consulta mas, me parece bien la idea de utilizar la estructura de xHarbour, pero como hago para insertar,modificar y recorrer la estructura.

de Antemano muy agradecido
Antonio Linares wrote:Julio,

xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:

Code: Select all

#include "hbstruct.ch"

function Main()

    local oServi

    STRUCTURE oServi 
       MEMBER "nofactura" INIT 0 
       MEMBER "fecha" INIT Space(10) 
       MEMBER "vendedor" INIT 0 
       MEMBER "marcav" INIT space(30) 
       MEMBER "idplaca" INIT space(30) 
       MEMBER "color" INIT space(30) 
       MEMBER "obs" INIT space(100) 
       MEMBER "agencia" INIT 0 
       MEMBER "serie" INIT space(2) 
    ENDSTRUCTURE 

    MsgInfo( "ok" )

return nil
FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:

Code: Select all

#include "FiveWin.ch"
#include "struct.ch"

function Main()

    local oStruct

    STRUCT oRect
       MEMBER nLeft   AS LONG
       MEMBER nTop    AS LONG
       MEMBER nRight  AS LONG
       MEMBER nBottom AS LONG
    ENDSTRUCT

    MsgInfo( oRect:ClassName() )

return nil
De todas formas, como me comentastes, si necesitas que esas estructuras hagan más cosas, lo idóneo es que te construyas una Clase propia, salvo que encuentres los CH y PRGs que usabas.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Julio,

Entiendo que cuando te refieres a "insertar,modificar y recorrer la estructura" de alguna forma tienes asociada esa estructura a una base de datos ó a un recordset de ADO, si ?

Una estructura no tiene ninguna relación con una base de datos. Es una forma de organizar la información.

Por eso te indico que lo idóneo es crearte la Clase que necesites en el caso de que no localices el código fuente que de la Clase que estás usando.

Has podido encontrar "DEFINE STRUCT" en alguno de tus ficheros CH ? Tiene que estar ó no podrias compilarlo. Otra opción, como te indiqué, es que compiles con /p para que genere un fichero .ppo y dentro veamos en que se traduce ese comando.
regards, saludos

Antonio Linares
www.fivetechsoft.com
derpipu
Posts: 93
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico
Contact:

La clase se llama TArray

Post by derpipu »

Hola, esa clase de la que hablas se llama TArray, si gustas mandame un correo y te la hago llegar..

Saludos
Luis Fernando Rubio Rubio
derpipu
Posts: 93
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico
Contact:

Liga de Descarga TArray

Post by derpipu »

Hola no se quien sea el creador de esta clase, ni me acuerdo de donde la saque, asi que solo aclaro que no es mia..

Saludos

http://www.4shared.com/file/64476829/2 ... =f7cf9d59
Luis Fernando Rubio Rubio
User avatar
Maurizio
Posts: 705
Joined: Mon Oct 10, 2005 1:29 pm
Contact:

Post by Maurizio »

With xHarbour you cann use HASH

aDati := TAssociativeArray()
aDati:c1 := "WWWW"
aDati:c2 := "eeeeee"

You cann simulate Scatter and gather of the record

//-------------------------------------------------------------------------
FUNCtion Scatter()
Local aVars := {=>}
LOcal nField := FCount()
LOcal nX := 1
FOR nX := 1 TO nField
aVars[FIELDNAME(nX)] := FieldGet(nX)
NEXT
RETURN aVars

Function Gather(aVars)
lOCAL Nx := 1

FOR Nx := 1 TO LEN(aVars)
FieldPut(nX,aVArs[FIELDNAME(nX)] )
NEXT


RETUrn TRUE


Maurizio
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Bueno, ya que ha aparecido, guardémosla bien para que no se pierda :-)

www.fivetechsoft.com/files/utilities/tarray.rar
regards, saludos

Antonio Linares
www.fivetechsoft.com
toninhofwi
Posts: 161
Joined: Tue Oct 18, 2005 10:01 am

Post by toninhofwi »

xHarbour te proporciona soporte de estructuras, parecidas a las que usas.
Olá Antonio.

Added to Harbour (Adicionado ao Harbour ):

2008-09-29 13:11 UTC-0300 Antonio Carlos Pantaglione
<toninho@fwi.com.br>
* contrib/xhb/common.mak
* contrib/xhb/makefile
+ contrib/xhb/hbstruct.ch
+ contrib/xhb/hbstruct.prg
+ STRUCTURE / MEMBER / ENDSTRUCTURE support


Regards,

Toninho.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Toninho,

Bien! :-)

gracias,
regards, saludos

Antonio Linares
www.fivetechsoft.com
jponce
Posts: 193
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala
Contact:

Re: Liga de Descarga TArray

Post by jponce »

Gracias Luis fernando,


Esta clase tiene lo que necesito, y gracias tambien Antonio y por supuesto ya la tengo guardada para que no se pierda.

Atentamente,
Julio Rodrigo Ponce Hinestroza
www.suproye.com


derpipu wrote:Hola no se quien sea el creador de esta clase, ni me acuerdo de donde la saque, asi que solo aclaro que no es mia..

Saludos

http://www.4shared.com/file/64476829/2 ... =f7cf9d59
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

JPonce:

Por ahí tambien existe una clase TPUblic(), Desconozco quien sea el autor aunque se mencionan varios nombres, _ CHACON, RAY ISLAS, EDUARDO RIZZOLO, DANIEL ANDRADE, tal vez tambien te pueda servir.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply