![]() |
Como trabajar con los ensamblados en Delphi
Mi objetivo es dado un objeto(cualquiera), obtener sus properties(o métodos, o atributos), tomar la que deseo y extraer el valor, también en algún momento setearle un valor, se como hacerlo en .NET, pero en Delphi ni de cerca le he picado a la solución del problema.
using System.Reflection; Persona p=new Persona(); p.Nombre="lolo"; p.Edad=100; //Esta entidad podría ser cualquier objeto que pase como parámetro, //puse esta como ejemplo Type typeInfo = p.GetType(); foreach (PropertyInfo meto in typeInfo.GetProperties()) { if (meto.Name=="Nombre") { string nombre=meto.GetValue(p,null).ToString(); //le pregunto el nombre meto.SetValue(p,"lili",null); //le seteo un nuevo nombre } } Help, alguien sabe como hacer lo antes expuesto en Delphi??? |
¡Hola a todos!
En Delphi para Win32 puedes utilizar las funciones GetPropList, GetPropInfo, GetPropValue y SetPropValue de la unidad TypInfo (Delphi 7 y otras versiones). Considera que estas funciones sólo trabajan con las propiedades publicadas (published). Si te surgen más dudas, no dejes de externarlas. He trabajado con la unidad TypInfo en algunas ocasiones. Un abrazo seteado. Al González. :) |
Solucion a ensamblados en Delphi, una de ellas
Esta fue la que use, la que me haz indicado la voy a probar en pocos minutos.
Gracias. procedure ActivateControls(SetTo: string; const ControlsToChange: array of TComponent); var I: integer; PropInfo: PPropInfo; begin for I := Low(ControlsToChange) to High(ControlsToChange) do //recorro el array de componentes begin PropInfo := GetPropInfo(ControlsToChange[i].ClassInfo, 'Text'); //obtengo el property info de la propiedad 'Text' if Assigned(PropInfo) then //devuelve nil en caso de que no exista begin form1.caption:=GetStrProp(ControlsToChange[i], PropInfo); //obtengo el valor de la propiedad 'Text' SetStrProp(ControlsToChange[i], PropInfo, SetTo); //seteo el nuevo valor end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ActivateControls('Deac', [Edit1, Edit2, Edit3]); //setear el texto 'Deac' a los 3 edit end; procedure TForm1.Button2Click(Sender: TObject); begin ActivateControls('Act', [Edit1, Edit2, Edit3]); //setear el texto 'Act' a los 3 edit end; |
La franja horaria es GMT +2. Ahora son las 23:38:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi