iniciar un array en objetos...

iniciar un array en objetos...

Postby goosfancito » Sun May 10, 2009 2:29 am

Hola.
Voy al grano, tengo este codigo:

Code: Select all  Expand view  RUN

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  Expand view  RUN
   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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Postby Daniel Garcia-Gil » Sun May 10, 2009 4:18 am

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}
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: iniciar un array en objetos...

Postby goosfancito » Sun May 10, 2009 4:40 am

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  Expand view  RUN
oPadron:aColumnasOrdenar := {2,3,4}
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Postby Ricardo Ramirez E. » Sun May 10, 2009 10:18 am

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  Expand view  RUN
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
Ricardo Ramirez E.
 
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde

Re: iniciar un array en objetos...

Postby goosfancito » Sun May 10, 2009 1:07 pm

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  Expand view  RUN
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
 
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Postby goosfancito » Sun May 10, 2009 1:35 pm

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  Expand view  RUN
  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  Expand view  RUN
  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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: iniciar un array en objetos...

Postby Ricardo Ramirez E. » Sun May 10, 2009 9:30 pm

"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  Expand view  RUN
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
Ricardo Ramirez E.
 
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde

Re: iniciar un array en objetos...

Postby goosfancito » Sun May 10, 2009 10:32 pm

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  Expand view  RUN
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
 
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests