La pregunta más o menos lo dice todo. Dada la siguiente estructura de registro:¿Debo asignar y liberar registros cuando uso TList <T> en Delphi?
type
TPerson = record
Name: string;
Age: Integer;
end;
PPerson = ^TPerson;
TPersonList = TList<TPerson>;
¿Es válido el siguiente código?
procedure ReadPeople(DataSet: TDataSet; PersonList: TPersonList);
begin
PersonList.Count := DataSet.RecordCount;
if DataSet.RecordCount = 0 then
Exit;
DataSet.First;
while not DataSet.Eof do begin
PersonList[DataSet.RecNo].Name := DataSet.FieldByName('Name').AsString;
PersonList[DataSet.RecNo].Age := DataSet.FieldByName('Age').AsInteger;
DataSet.Next;
end;
end;
¿Tengo que usar GetMem
/FreeMem
a asignar y liberar registra una instancia de TPersonList
, o soy libre para acceder directamente a las entradas directamente TPersonList
? Mi intuición dice que el código debería ser válido, aunque no estoy seguro de si hay arrugas relacionadas con la inicialización o finalización del registro.
Impresionante. ¡Gracias! Ahora debo decidir si los registros o las clases tendrían más sentido para mis objetos comerciales. – afrazier