Recent

Author Topic: como usar registros avanzados  (Read 2815 times)

zelda16bit

  • Full Member
  • ***
  • Posts: 118
como usar registros avanzados
« on: February 22, 2023, 02:04:19 pm »
No he usado nunca registros avanzados y me gustaria que me explicarias en profundidad que es lo que tienen y como usarlos correctamente.

Tambien me gustaria saber que diferencia tienen con las clases y que tipo de contenedores hay en generic collection para trabajar con estos registros avanzados.

Edson

  • Hero Member
  • *****
  • Posts: 1314
Re: como usar registros avanzados
« Reply #1 on: February 22, 2023, 03:59:51 pm »
Tampoco he usado Registros avanzados, pero sí he usado los clásicos Objetos (type Object) de Free Pascal.

Los registros avanzados son estructuras de datos que se comportan como los clásicos RECORD pero que tienen la posibilidad de incluir también funciones o procedimientos como las clases:
 
Code: Pascal  [Select][+][-]
  1. type
  2.   TSomeRecord = record
  3.     FSomeField: integer;
  4.     function SomeMethod: integer;
  5.   end;
  6.  

Aquí un ejemplo: https://blog.dummzeuch.de/2017/10/31/advanced-records-in-lazarus-fpc/

Como estructura de datos, se parecen más a los RECORD que a las clases, sobre todo porque se crean de forma estática y no soportan herencia (si mal no recuerdo).

Pero en Free Pascal también se tiene el tipo OBJECT para crear algo similar a los ADVANCED RECORD.

En resumen, los OBJECT son la estructura inicial de objetos que apareció en Pascal como un paso para la implementación final de clases. Por otro lado Delphi creó los Registros Avanzados como una mejora o ta vez como una copia de la funcionalidad que ofrecía C++. Pero fomo Free Pascal trata de seguir la compatibilidad con Delphi, terminó incluyendo, también, a los Registros Avanzados, aunque se necesita un modo especial.

Aquí una discusión al respecto: https://forum.lazarus.freepascal.org/index.php?topic=30686.0

En cuanto a los contenedores, lo que recuerdo es que no se llevan bien con Objetos o Registros Avanzados, porque han sido diseñados para manejar clases, así que mi sugerencia es que uses Clases si piensas usar contenedores, y así te evitarías algunos líos como: https://fpc-pascal.freepascal.narkive.com/6I67LNUK/generic-tfpglist-record-type-gives-me-compiler-error-operator-is-not-overloaded
 
Lazarus 2.2.6 - FPC 3.2.2 - x86_64-win64 on Windows 10

zelda16bit

  • Full Member
  • ***
  • Posts: 118
Re: como usar registros avanzados
« Reply #2 on: February 23, 2023, 03:14:25 pm »
Gracias por la ayuda Edson.  :)

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1191
    • Burdjia
Re: como usar registros avanzados
« Reply #3 on: March 03, 2023, 10:05:19 am »
Efectivamente, los registros avanzados son como objetos pero sin constructor, destructor ni herencia.  En cierto modo sí son como las struct de C++.

Lo digo como confirmación, ya que yo sí las he usado y sigo usando de vez en cuando.
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

 

TinyPortal © 2005-2018