iniciar un array en objetos...

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

iniciar un array en objetos...

Post by goosfancito »

Hola.
Voy al grano, tengo este codigo:

Code: Select all

CLASS tPadron
   ...
   DATA nColOrdenada
   DATA aColumnasOrdenar
   ...
END CLASS

//-------------------

METHOD new(oConexion, cQuery, lGrande) CLASS tPadron

   ::nColOrdenada     := ::aColumnasOrdenar[1]
   ? ::nColOrdenada
   ...

 
Y desde mi codigo lo llamo asi:

Code: Select all

    oPadron                  := tPadron():new(::oConexion, ::cQuery)
   oPadron:aColumnasOrdenar := {2,3,4}
   ...
 
El problema que tengo:
cuando en el metodo NEW se ejecuta ? ::nColordenada me da erro. o sea. los datos que le paso no los considera, porque?

Gracias.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: iniciar un array en objetos...

Post by Daniel Garcia-Gil »

Hola...

Por lo que puedo ver al momento que llamas a New()
::aColumnasOrdenar no tiene ningina infornacion
y estas haciendo
::nColOrdenada := ::aColumnasOrdenar[1] //aqui no hay nada

y despues es que le agregas informacion a esa data

oPadron := tPadron():new(::oConexion, ::cQuery)
oPadron:aColumnasOrdenar := {2,3,4}
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Post by goosfancito »

Daniel Garcia-Gil wrote:Hola...

Por lo que puedo ver al momento que llamas a New()
::aColumnasOrdenar no tiene ningina infornacion
y estas haciendo
::nColOrdenada := ::aColumnasOrdenar[1] //aqui no hay nada

y despues es que le agregas informacion a esa data

oPadron := tPadron():new(::oConexion, ::cQuery)
oPadron:aColumnasOrdenar := {2,3,4}
Exacto,
Entonces no puedo hacer eso directamente en la New?
como hago para pasar luego los valores como los hago aca:
desde mi app.?

Code: Select all

oPadron:aColumnasOrdenar := {2,3,4}
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Ricardo Ramirez E.
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde
Contact:

Re: iniciar un array en objetos...

Post by Ricardo Ramirez E. »

Gosfancito...
El detalle es que
DATA aColumnasOrdenar
aqui no hay nada osea aColumnasOrdenar se queda con NIL y luego en New() estas atribuyendo un valor que realmente no existe.

Puedes declarar asi...
DATA aColumnasOrdenar AS ARRAY INIT {0,0,0}
Es solo un ejemplo quizas en tu caso deves declarar INIT {} y en New() atribuir el tamano del array y los valores, osea que New() deverá tener un argumento más.

Code: Select all

METHOD New(oConexion, cQuery, lGrande, nColOrd) // nColOrd nuevo argumento
DEFAULT ::nColumnasOrdenar :=  {2,3,4} // aqui estas indicando que si nColOrd no fue enviado entonces se queda por defecto con  {2,3,4}
...
...
Return Self
 
Saludos
Ricardo R.
xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Post by goosfancito »

Perfecto. Pruebo
Ricardo Ramirez E. wrote:Gosfancito...
El detalle es que
DATA aColumnasOrdenar
aqui no hay nada osea aColumnasOrdenar se queda con NIL y luego en New() estas atribuyendo un valor que realmente no existe.

Puedes declarar asi...
DATA aColumnasOrdenar AS ARRAY INIT {0,0,0}
Es solo un ejemplo quizas en tu caso deves declarar INIT {} y en New() atribuir el tamano del array y los valores, osea que New() deverá tener un argumento más.

Code: Select all

METHOD New(oConexion, cQuery, lGrande, nColOrd) // nColOrd nuevo argumento
DEFAULT ::nColumnasOrdenar :=  {2,3,4} // aqui estas indicando que si nColOrd no fue enviado entonces se queda por defecto con  {2,3,4}
...
...
Return Self
 
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Post by goosfancito »

Voy a ser mas explicito asi se me entiende.

Quiero lograr pasarle como DATA a la clase tPadron las columnas que permito ordenar, ::aColumnasOrdernar pero tengo error ya que nunca toma el valor que le paso, en cambio en las otras variables (tambien arreglos) si los toma...

Code: Select all

   DATA aColumnasOrdenar      AS Array INIT {} 
   DATA aTamanioColumnas      // Tamaño de las columnas a mostrar.
En la definicion de "aTamanioColumnas" no hago un AS ARRAY INIT {} y sin embargo me toma los valores.

Chequeando un poco veo que aTamanioColumnas si veo su contenido (por debugview) en el metodo NEW tiene valores iniciales que le pongo pero recien en el metodo que las utilizo (cuando defino el browser) ahi recien tiene los valores que le pase al definirlos asi:

Code: Select all

   oPadron                  := tPadron():new(::oConexion, ::cQuery)
   oPadron:aTamanioColumnas := {0, 210, 210, 90}
   oPadron:aColumnasOrdenar := {2,3,4}
 
PREGUNTA: cuando se crea el objeto con new no toma los valores que despues le estas pasando?

Gracias.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Ricardo Ramirez E.
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde
Contact:

Re: iniciar un array en objetos...

Post by Ricardo Ramirez E. »

"Que despues le estas pasando"... como? no entendi.

Pq no pasas como argumentos y luego en ::New() asignas los valores como en el ejemplo que mostré.
A ver si esto sirve, o quizas entendi mal :(

Code: Select all

oPadron := tPadron():new(::oConexion, ::cQuery,{0, 210, 210, 90},{0, 210, 210, 90})

METHOD New(oConexion,cQuery,aTamanioColunas, aColumnasOrdenar) CLASS tPadron
::aTamanioColumnas := aTamanioColunas
::aColumnasOrdenar := ColumnasOrdenar
...
...
Return Self
 
Saludos
Ricardo R.
xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Post by goosfancito »

Porque se me hacia mas claro pasarlo como comunmente se lo hace, por ejemplo, en la tw....
ahora ya lo resolvi. paso los parametros pero no en el NEW.

Ricardo Ramirez E. wrote:"Que despues le estas pasando"... como? no entendi.

Pq no pasas como argumentos y luego en ::New() asignas los valores como en el ejemplo que mostré.
A ver si esto sirve, o quizas entendi mal :(

Code: Select all

oPadron := tPadron():new(::oConexion, ::cQuery,{0, 210, 210, 90},{0, 210, 210, 90})

METHOD New(oConexion,cQuery,aTamanioColunas, aColumnasOrdenar) CLASS tPadron
::aTamanioColumnas := aTamanioColunas
::aColumnasOrdenar := ColumnasOrdenar
...
...
Return Self
 
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Post Reply