Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2016
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
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....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
codigo de lazarus windows a lazarus linux anubis Lazarus, FreePascal, Kylix, etc. 5 20-04-2013 22:33:55
record jocey Varios 3 06-05-2008 00:38:02
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 04:31:09
¿Mejor heredar de una Lista o mejor introducir la Lista en un campo? Jome OOP 8 24-11-2005 18:11:16
Implemetar tabla con fechas icecold2 SQL 6 11-05-2003 22:22:54


La franja horaria es GMT +2. Ahora son las 01:38:07.


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
Copyright 1996-2007 Club Delphi