Estaba haciendo un pequeño proyecto y me surgió hacer una lista de enteros, pensé usar un TList, pero nunca lo había usado y tampoco encontré mucha información, así que me armé un pequeño ejempo, pongo un poco de lo que hice:
// VaciarLista procedure TVprincipal.VaciarLista; var i: integer; n: ^integer; begin for i := 0 to (ListaEnteros.Count - 1) do begin n := ListaEnteros[i]; Dispose(n); end; ListaEnteros.Clear; end; // OnClose procedure TVprincipal.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin VaciarLista; ListaEnteros.Free; CloseAction := caFree; end; // OnShow procedure TVprincipal.FormShow(Sender: TObject); begin ListaEnteros := TList.Create; Randomize; end; // edNum KeyPress // // edNum es un componente TEditMask procedure TVprincipal.edNumKeyPress(Sender: TObject; var Key: char); var n: ^integer; begin if Key = #13 then begin New(n); n^ := StrToInt(edNum.Text); ListaEnteros.Add(n); edNum.Clear; end; end; // bLlenarClick // // mete 10 enteros aleatorios en la lista procedure TVprincipal.bLlenarClick(Sender: TObject); var i: integer; n: ^integer; begin for i := 1 to 10 do begin New(n); n^ := Random(100); ListaEnteros.Add(n); end; end;
Funcionar funciona, mi duda es si lo hago bien, si libero bien toda la memoria y eso, si hay una forma más sencilla, etc.
Saludos