Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con registros record (https://www.clubdelphi.com/foros/showthread.php?t=50866)

Suriu 30-11-2007 02:54:55

Problemas con registros record
 
Hola foro, estoy desarrollando el siguiente código:

Código Delphi [-]
...........
Type
 Datos = Record
  Nombre    : ShortString;
  Apellidos : ShortString;
  Edad      : Byte;
 End;

 Estudiante = Class
 Private
  Alumno : Array of Datos;
  FCant  : Integer;
 Public
  Property Cant : Integer read FCant write FCant;
  Procedure Entrada(aDatos : Datos);
  Function Impresion(aIndice : Integer) : Datos;
 End;

implementation

procedure Estudiante.Entrada(aDatos: Datos);
begin
 Inc(FCant);
 SetLength(Alumno, FCant);
 Alumno[FCant - 1] := aDatos;
end;

function Estudiante.Impresion(aIndice: Integer): Datos;
begin
 Result := Alumno[aIndice];
end;

end.

Al cual quiero agregarle un procedimiento para borrar un determinado registro, o sea quedaría algo así:

Código Delphi [-]
public
 procedure Borrar(aIndice : Integer);
.............
procedure Estudiante.Borrar(aIndice: Integer);
begin
 Alumno[aIncice].delete;
end;

El problema es que así no me sirve y quisiera que alguien me digiera como puedo lograr esto o por lo menos que procedimiento es el que debo usar para borrarlo, espero a verme explicado bien pues soy nuevo en esto de trabajar con los record. Gracias de antemano para quien me pueda ayudar....

Delphius 30-11-2007 04:12:09

Hola Suriu,
El problema de estar empleando un array dinámico es que para borrar una posición determinada debes tu mismo elaborar el algoritmo. No existe el Delete en un array dinámico.
Deberás sobrescribir los valores corriendolos hacia una posición anterior. Y luego realizar un SetLength con el valor anterior. Más o menos así:

Código Delphi [-]
procedure Estudiante.Borrar(aIndice: Integer);
begin
 Desplazar(aIndice);
 dec(FCant);
 SetLength(Alumno, FCant);
end;

Siendo Desplazar el algoritmo que se encarga de ir "corriendo" los datos.

La otra opción es que no emplees los arrays dinámicos y uses TList, o TObjectList. Éstos cuentan con los métodos adecuados para insertar, borrar, etc... Si tienes dudas, con la ayuda de Delphi y una búsqueda en estos foros podrás evacuarlas.

Saludos,

Suriu 30-11-2007 05:41:37

Gracias Delphius, ohora mismo voy a buscar.....

yarielrs 22-01-2008 19:12:36

Sobre registros record...
 
Hola, amigos del foro:
E visto el ejemplo que hay en este enlace http://www.clubdelphi.com/foros/show...ghlight=record el cual es bastante semejante al mio. El problema es que quisiera agregarle una especie de evento OnAdd. Si alguien me pudiera dar una idea o decirme donde puedo encontrar algo referente a esto se lo agradecería mucho. Gracias de antemano....

cHackAll 22-01-2008 20:40:07

Cita:

Empezado por yarielrs (Mensaje 260056)
...El problema es que quisiera agregarle una especie de evento OnAdd...

Pues eso deja de ser una estructura y pasa a ser un objeto.


La franja horaria es GMT +2. Ahora son las 11:51:00.

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