Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   lista de record genericas [Lazarus] (https://www.clubdelphi.com/foros/showthread.php?t=90310)

BDWONG 15-05-2016 02:12:46

lista de record genericas [Lazarus]
 
Hola desde unos dias venia con la idea de poder implementar Records con las listas genericas que nos proporciona la unit fgl, anduve viendo varios posts en algunos heredaban de la clase de Tlist en otros creaban punteros a Records para poder insertarlos en la lista, hasta que llege a un post del foro de lazarus donde encontre una solucion mas acorde a lo que queria en este link: http://forum.lazarus.freepascal.org/...?topic=20108.0


Pero me obligaba a crear otra unit en modo delphi para poder implementar la lista de records en lo personal me siento raro estar utilizando el modo delphi en una unit y el modo objfpc en el mismo proyecto hasta que llege ha esta solucion.


Código Delphi [-]
{$mode objfpc}{$H+}
{$modeswitch advancedrecords}

uses
  Classes,fgl;

type
  { TPersona }
  TPersona =Record
    nombre:String;
    edad:Byte;
    class operator =(const p1,p2:TPersona):Boolean;
  end;

{ TPersona }

class operator TPersona.=(const p1, p2: TPersona): Boolean;
begin
   Result:=(p1.nombre=p2.nombre) and (p1.nombre=p2.nombre)
end;

Type
 TListaPersona=specialize TFPGList;


var
  lista:TListaPersona;
  p1:TPersona;
begin
   p1.nombre:='Joses Rene';
   p1.edad:=10;

   //Creamos la lista
   lista:=TListaPersona.Create;
   //Anadimos el Record
   lista.Add(p1);
   //Mostramos los datos
   WriteLn(lista[0].nombre);
   WriteLn(lista[0].edad);

   //Liberamos la memoria
   lista.Free;
   ReadLn;
end.

El problema de la listas genericas de TFPGList es que para los records se necesita sobrecargar el operador "=" pero en los records tipicos no se permite hacer la sobrecarga asi que solo tenemos que activar el modo advancedrecords que permite sobrecargar operadores y anadir funciones si se quiere.

Bueno solo queria mostrar esta forma de implementar las listas de records ya que en espanol casi no encontre nada, haber si alguien le sirve, si alquien conoce una mejor forma de hacerlo espero lo mencione.

Saludos....


La franja horaria es GMT +2. Ahora son las 06:37:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi