FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Crear clase a partir de un array
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Crear clase a partir de un array
Posted: Fri May 16, 2025 10:10 PM

Hola Fivewinners

Me encuentro en un dilema, como puedo crear una clase con valores obtenidos de un array?

Ej.

Arr:={{"ancho",12,Numeric},{"largo",60,Numeric},{"nombre","caja",Character}}

que pueda accederlo asi:

nAncho:=MiClase:ancho  //12

nLargo:=MiClase:largo    //60

cNombre:=MiClase:nombre   //"caja"

El array puede variar, los metodos seran fijos, solo la cantidad de DATA pueden variar

Alguna idea o sugerencia

Desde ya agradecido

Saludos desde Chile

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Crear clase a partir de un array
Posted: Fri May 16, 2025 10:21 PM

Adolfo buenas tardes talvez con hash ?

//con Hash

Arr = { 'ancho' => 12, 'largo' => 60, 'nombre' => 'caja' }

? Arr['ancho' ] // retorna el numero 12

? Arr['largo' ] // retorna el numero 60

? Arr['nombre'] // retorna el caracter caja

solo una idea

saludos

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Crear clase a partir de un array
Posted: Fri May 16, 2025 10:32 PM

Wilson.

Gracias por responder. Habia comentado tu post pero no aparece la respuesta.

La idea de la clase es que tengo metodos que pueden manipular la data y sus valores, habia pensado en el hash pero solo me sirve para devolver el valor.

Eso, saludos

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Crear clase a partir de un array
Posted: Sat May 17, 2025 03:16 AM
Adolfo,
#include "FiveWin.ch"

function Main()

   local o := MiClase():New( { { "ancho", 12 }, { "largo", 60 }, { "nombre", "caja" } } )

   o:ancho = 100
   ? o:ancho
   ? o:largo
   ? o:nombre

return nil

CLASS MiClase

   DATA aArr
   
   METHOD New( aArray ) INLINE ::aArr := aArray, Self
   
   ERROR HANDLER ONERROR()
   
ENDCLASS

METHOD ONERROR( uParam1 ) CLASS MiClase

   local cKey := __GetMessage(), nAt

   if Left( cKey, 1 ) == "_"
      if ( nAt := AScan( ::aArr, { | a | a[ 1 ] == SubStr( Lower( cKey ), 2 ) } ) ) != 0
         ::aArr[ nAt ][ 2 ] = uParam1
      endif     
   else
      if ( nAt := AScan( ::aArr, { | a | a[ 1 ] == Lower( cKey ) } ) ) != 0 
         return ::aArr[ nAt ][ 2 ]
      endif         
   endif

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Crear clase a partir de un array
Posted: Mon May 19, 2025 02:11 PM

Gracias Antonio

Reviso y comento.

Saludos desde Chile

Antonio, funciono perfecto, muchas gracias

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650

Continue the discussion