PDA

Ver la Versión Completa : Problemas con registros record


Suriu
30-11-2007, 02:54:55
Hola foro, estoy desarrollando el siguiente código:


...........
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í:


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í:

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
Hola, amigos del foro:
E visto el ejemplo que hay en este enlace http://www.clubdelphi.com/foros/showthread.php?t=50866&highlight=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
...El problema es que quisiera agregarle una especie de evento OnAdd...

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