Por ejemplo, si quiero pasar información sobre una persona de un form a otro, me seria muy útil pasar un solo parámetro que contuviera toda la información de esa persona. Una forma de lograr esto es crear una clase "Persona" que contenga las propiedades para almacenar la información sobre una persona, pero muchas veces queremos lograr lo mismo sin la sobrecarga de crear una clase que en si misma no hace nada.
Ese objeto "temporal" que sirve para almacenar múltiples informaciones relacionadas, es lo que llamo "buffer". La función crearBuffer hace justamente eso: crea un buffer con una lista de propiedades dada y, opcionalmente, inicializa esas propiedades con los datos suministrados; todo en una misma instrucción.
Ejemplo:
LOCAL oPersona oPersona = crearBuffer("nombre,apellido,cedula,fechaNac,cargo","Victor","Espina","12345678",{18-11-1970}) ?oPersona.Nombre --> "Victor" ?oPersona.Apellido --> "Espina"
Práctico, cierto? aqui les dejo el código fuente.
*-- crearBuffer * Funcion para crear un buffer de datos e inicializarlo. Compatible con VFP 5 o superior * * Autor: V Espina * * Ejemplo: * oBuff = CFDBuffer("Nombre,Apellido","Victor","Espina") * ?oBuff.Nombre -> "Victor" * ?oBuff.Apellido -> "Espina" * PROCEDURE crearBuffer LPARAMETERS pcItemList,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19 * LOCAL oBuff,i,cProp oBuff=CREATEOBJECT("Custom") LOCAL cPropName,uPropValue,nCount LOCAL ARRAY aProps[1] nCount = ALINES(aProps,STRT(pcItemList,",",CHR(13)+CHR(10))) FOR i=1 TO MIN(nCount,20) cPropName = aProps[i] uPropValue = EVALUATE("P" + ALLTRIM(STR(i - 1))) oBuff.AddProperty(cPropName, uPropValue) ENDFOR RETURN oBuff * ENDPROC
1 comentario:
Gracias por compartirlo!
PD: Por cierto, viendo éste post, noté que hoy es tu cumpleaños, qué casualidad. Así qué Felicidades, a seguir codificando.
Saludos!
Publicar un comentario