FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Caso Raro con esta Clase un una matriz
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Caso Raro con esta Clase un una matriz
Posted: Tue Nov 22, 2011 09:43 PM
Caso Raro con esta Clase un una matriz, tengo tres matrices actualizo una y despues otra asi etc..
Cuando actualizo la primera le hago un seguimiento supuesta mente debe actualizar la que estoy indicado y actualiza las demas, adjunto el codigo


Saludos al Forum

Code (fw): Select all Collapse
PUBLIC oP20:= TApp01():New() 

   oP20:madepto := oP20:maciuda := oP20:makarrio:= {}
   oP20:sigrabo := oP20:sigrab1 := oP20:sigrab2 := oP20:sigrab3 := 0

?"depto  "+str(LEN(oP20:madepto),3,0)+" Ciudad"+str(LEN(oP20:maciuda),3,0)+" Barrio"+str(LEN(oP20:makarrio),3,0)
   oP20:IniMAtriz(1);oP20:AddMAtriz(1)
?"depto  "+str(LEN(oP20:madepto),3,0)+" Ciudad"+str(LEN(oP20:maciuda),3,0)+" Barrio"+str(LEN(oP20:makarrio),3,0)
    oP20:madepto , pero veo que las llena las otras dos y asi cade vez , y debe actualziada solamente la matriz oP20:madepto 
   oP20:IniMAtriz(2);oP20:AddMAtriz(2)
?"2-jjjj depto  "+str(LEN(oP20:madepto),3,0)+" Ciudad"+str(LEN(oP20:maciuda),3,0)+" Barrio"+str(LEN(oP20:makarrio),3,0)+" uuuuuu"
   oP20:IniMAtriz(3);oP20:AddMAtriz(3)
?"3-jjjj depto  "+str(LEN(oP20:madepto),3,0)+" Ciudad"+str(LEN(oP20:maciuda),3,0)+" Barrio"+str(LEN(oP20:makarrio),3,0)+" uuuuuu"



METHOD IniMAtriz(opx) CLASS TApp01
   if opx=1
    ::m1[1]:=Space(1);::m1[2]:=Space(03);::m1[3]:=Space(40);::m1[4]:=.t.
    ::m1[5]:=Space(3);::m1[6]:=Space(3);::m1[7]:=Space(3)
  elseif opx=2
    ::m2[1]:=Space(1);::m2[2]:=Space(03);::m2[3]:=Space(40);::m2[4]:=.t.
    ::m2[5]:=Space(3);::m2[6]:=Space(3);::m2[7]:=Space(3)
  elseif opx=3
    ::m3[1]:=Space(1);::m3[2]:=Space(03);::m3[3]:=Space(40);::m3[4]:=.t.
    ::m3[5]:=Space(3);::m3[6]:=Space(3);::m3[7]:=Space(3)
  endif
 Return Nil

METHOD AddMAtriz(opx) CLASS TApp01
    if opx=1
       AADD(::madepto,{(::m1[1]),(::m1[2]),(::m1[3]),(::m1[4]),(::m1[2]),(::m1[2]),(::m1[2]) } ) 
   elseif opx=2
       AADD(::maciuda,{(::m2[1]),(::m2[2]),(::m2[3]),(::m2[4]),(::m2[2]),(::m2[2]),(::m2[2]) } )
   elseif opx=3 
       AADD(::makarrio,{(::m3[1]),(::m3[2]),(::m3[3]),(::m3[4]),(::m3[2]),(::m3[2]),(::m3[2]) } ) 
   endif
 Return Nil
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Caso Raro con esta Clase un una matriz
Posted: Tue Nov 22, 2011 09:52 PM
Hola

falta como creas las matrices..

puede que tengas que usar aClone
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Caso Raro con esta Clase un una matriz
Posted: Wed Nov 23, 2011 07:25 AM
Ruben, puede parecer una tontería, pero cuando haces:
Code (fw): Select all Collapse
oP20:madepto := oP20:maciuda := oP20:makarrio:= {}
Lo mismo le estás asignando una misma dirección de memoria a las tres matrices. A mi me ocurrió algo parecido, pues, internamente, las matrices no se manejan igual que las demás variables; por ejemplo, siempre pasan por referencia en las funciones, y supongo que en los objetos también.

Prueba esto (aunque parzca una tontería):
Code (fw): Select all Collapse
oP20:madepto := {} 
oP20:maciuda := {} 
oP20:makarrio:= {}

Espero que funcione

Saludos.
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Caso Raro con esta Clase un una matriz
Posted: Wed Nov 23, 2011 06:39 PM

Gracias Antolin, este era el problema ya funciona.

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com

Continue the discussion