PDA

Ver la Versión Completa : como puedo usar record en delphi


antonio302050
05-02-2010, 22:11:18
disculpen miignorancia soy nuevoen esto de programar
quisiera q me den un ejemplo de como usar record

Casimiro Notevi
05-02-2010, 22:21:17
google->buscar: delphi record ;)


procedure TForm1.Button1Click(Sender: TObject);
type
registroPrueba = record
campo1 : integer;
campo2 : string;
campo3 : double;
campo4 : TStringList;
end;

var
registro : registroPrueba;
listaEjemplo : TStringList;
begin
registro.campo1 := 43;
registro.campo2 := 'Esto es una prueba de registros';
registro.campo3 := 112234;
//inicializamos un TStringList cualquiera y le insertamos valores
listaEjemplo := TStringList.Create;
listaEjemplo.Add('Estro es una prueba');
listaEjemplo.Add('de inserción de una lista');
listaEjemplo.Add('en un tipo "record"');

//inicializamos el TStringList del registro
registro.campo4 := TStringList.Create;
//le insertamos la lista creada anteriormente en el registro
registro.campo4 := listaEjemplo;

//mostramos algún valor del registro
showmessage (registro.campo4.Strings[1]);
showmessage (IntToStr(registro.campo1));
end;
Espero que te sirva.

antonio302050
05-02-2010, 22:32:25
muchas gracias por el ejemplo se muy bueno para entenderlo
una pregunta mas
puedo usar un record dentro de otro record ?
nose si me explique bien
me refiero a esto
un ejemplode lo que quiero
alumno.nombre:=antonio;
alumno.nombre.direccion:="barrio bolivar";
como tu ej
de registro.campo1
pero implementarlo otra variable
registro.campo1.fecha:=020202;
quierosaber si sepuede
te agradezco la ayudade antemano

Casimiro Notevi
05-02-2010, 22:51:15
Supongo que sí, un record en delphi es lo "mismo" que una "estruct" en lenguaje C, así que debe poderse, seguro.

Haz la prueba, así es como se aprende :)

santiago14
06-02-2010, 01:29:46
Yo pondría algo así:



type
registroInterno = record
campo1:integer;
campo2:string;
campo3:TDate;
end;

registroPrincipal = record
principal1:byte;
principal2:integer;
principal3:registroInterno;
end;

De esta forma, luego tendría que declarar la variable:

//....
var
registro:registroPrincipal
begin
//Asignación
registro.principal3.campo1:=33;

//....

Supongo que eso es de lo que se trata ¿no?

Saludos.

DriverOp
06-02-2010, 02:45:53
una pregunta mas
puedo usar un record dentro de otro record ?
Sí, se puede tranquilamente. Por ejemplo:


type
TFecha=record
Dia: byte;
Mes: byte;
Ano: integer;
end;

TPersona=record
Nombre, Apellido: string;
FechaDeNacimiento: TFecha;
end;

Y accedes a los campos como has intuido tú:

var
Persona: TPersona;
begin
Persona.Nombre:='Diego';
Persona.FechaDeNacimiento.Dia:=1;
Persona.FechaDeNacimiento.Mes:=1;
Persona.FechaDeNacimiento.Ano:=2003;
...

Lo que no puedes hacer es esto:

Persona.FechaDeNacimiento:=01012003;

Porque FechaDeNacimiento es de tipo TFecha y 01012003 es un longint.

santiago14
06-02-2010, 17:24:10
Exacto, DriverOp dió un ejemplo más gráfico que el mío. La idea es la misma.

Gracias DriverOp.

Saludos.

antonio302050
08-02-2010, 22:17:29
gracias por las respuestas a todos
me quedo todo clarisimo