[Lazarus-es] buscar valor en array de record

José Mejuto joshyfun en gmail.com
Mar Mayo 25 15:37:12 CEST 2010


Hello Paola,

Tuesday, May 25, 2010, 2:44:14 PM, you wrote:

PB> Hola José..
PB> tendrías algún ejemplo de tobjectloist? si cada elemento fuera un 
PB> trecord, cómo buscaría algo dentro de c/elemento?... (si es que hay
PB> algún método sin ser buscar secuencialmente...)
PB> muchas gracias...

TObjectList te "obliga" a que cada registro sea un objeto, cosa que es
innecesaria en este caso. Si tienes que hacer este proceso muuuuchas
veces hay que optimizar, si sólo afectará unas 200 lineas o así, hazlo
sencillo, hasta haciendolo "mal" será muy rápido. No tiene sentido
ganar 100 ms. en una tarea que se repite cada 5 minutos.

Lo más sencillo es un array dinámico, lo creas de records en plan:

Cosa=record
  Codigo: string;
  descripcion: string;
  cantidad: double;
  LineasExtra: String o i es necesario TStringList
end;

En un for..loop pasas los datos a un record desde cada linea del
TStringList y el registro lo añades al dyn array:

arr: array of Cosa;
while ...do begin
 SetLength(Arr,Length(Arr)+1);
 MyCosa:=CamposTStringList;
 Arr[High(arr)]:=MyCosa;
end;

El manejo de arrays dinámicos es muy parecido a un TStringList, etc...

-- 
Best regards,
 José





More information about the Lazarus-es mailing list