¿Cómo guardar registros en pascal? en lazarus
Publicado por sebastian (1 intervención) el 13/10/2020 04:33:09
estoy tratando de guardar un registro en un archivo de texto, pero soy nuevo en pascal y realmente no entiendo cómo hacer este proceso. Me explico:
Tengo un formulario donde quiero agregar 5 alumnos, en el record la información se llena por alumno y con un array trato de guardar la información de 5 alumnos y separarla por equipos (hasta 10 equipos). Entiendo cómo hacer ese registro, revisarlo y asignarle valor a los campos, mi problema es que no sé cómo guardarlo correctamente.
No sé si un archivo de texto puede contener un array que tenga un registro dentro con campos de varios tipos. Realmente agradecería su orientación, acabo de comenzar en pascal.
Esto es lo que he hecho:
Me suelta este error: unit3.pas (147,24) Error: Incompatible types: got "Array [1..5] Of alumnos" expected "alumnos".
Y si cambio write(tDatos,datos) por write(tDatos,alumnos), me dice: unit3.pas (147,26) Error: Can't read or write variables of this type
El proyecto que busco lograr es crear un programa que pueda ingresar 10 equipos de 5 alumnos cada uno donde se conozca el nombre, apellido, tiempo de carrera a 200m (tiempoA), tiempo de carrera a 1500m (tiempoB), la suma de estos dos tiempos (tiempoT), las notas de cada lapso (lapsoA, lapsoB, lapsoC) y el promedio (la suma de los lapsos entre 3). Al ingresar los equipos hay que validar que los estudiantes de dicho equipo no pasen un tiempo límite para cada carrera, ya que si se pasa alguno, el equipo completo queda descalificado.
Trabajando con los equipos calificados, hay que determinar el tiempo total por equipo (sumando cada tiempoT de cada miembro) y encontrar el que haya tenido menor tiempo. Si se da el caso de que el equipo con menor tiempo tenga alumnos con un promedio menor a 16, se debe dar la opción de eliminar y agregar alumnos.
Eso es básicamente lo que requiere el programa. Espero me ayuden con alguna cosa. Gracias
Tengo un formulario donde quiero agregar 5 alumnos, en el record la información se llena por alumno y con un array trato de guardar la información de 5 alumnos y separarla por equipos (hasta 10 equipos). Entiendo cómo hacer ese registro, revisarlo y asignarle valor a los campos, mi problema es que no sé cómo guardarlo correctamente.
No sé si un archivo de texto puede contener un array que tenga un registro dentro con campos de varios tipos. Realmente agradecería su orientación, acabo de comenzar en pascal.
Esto es lo que he hecho:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
type
alumnos = record
nombre,apellido:string[60];
id,tiempoA,tiempoB,tiempoT,promedio,lapsoA,lapsoB,lapsoC:integer;
end;
var
datos: array[1..5]of alumnos;
procedure TForm3.ingresarEquipoClick(Sender: TObject);
var
tA,tB,lA,lB,lC,prom:integer;
begin
if (nombre1.text<>'') and (apellido1.text<>'') and (tiempoA1.text<>'') and
(tiempoB1.text<>'') and (lapsoA1.text<>'') and (lapsoB1.text<>'') and
(lapsoC1.text<>'') then
begin
AssignFile(tDatos,'datos.txt');
rewrite(tDatos);
{Guardo la informacion de un estudiante por ahora}
tA:=StrToInt(tiempoA1.text);
tB:=StrToInt(tiempoB1.text);
lA:=StrToInt(lapsoA1.text);
lB:=StrToInt(lapsoB1.text);
lC:=StrToInt(lapsoC1.text);
datos[1].id:=1;
datos[1].nombre:=nombre1.text;
datos[1].apellido:=apellido1.text;
datos[1].tiempoA:=tA;
datos[1].tiempoB:=tB;
datos[1].tiempoT:=tA+tB;
datos[1].lapsoA:=lA;
datos[1].lapsoB:=lB;
datos[1].lapsoC:=lC;
write(tDatos,datos);
closeFile(tDatos);
end
else
begin
ShowMessage('Insert content');
end;
end;
Me suelta este error: unit3.pas (147,24) Error: Incompatible types: got "Array [1..5] Of alumnos" expected "alumnos".
Y si cambio write(tDatos,datos) por write(tDatos,alumnos), me dice: unit3.pas (147,26) Error: Can't read or write variables of this type
El proyecto que busco lograr es crear un programa que pueda ingresar 10 equipos de 5 alumnos cada uno donde se conozca el nombre, apellido, tiempo de carrera a 200m (tiempoA), tiempo de carrera a 1500m (tiempoB), la suma de estos dos tiempos (tiempoT), las notas de cada lapso (lapsoA, lapsoB, lapsoC) y el promedio (la suma de los lapsos entre 3). Al ingresar los equipos hay que validar que los estudiantes de dicho equipo no pasen un tiempo límite para cada carrera, ya que si se pasa alguno, el equipo completo queda descalificado.
Trabajando con los equipos calificados, hay que determinar el tiempo total por equipo (sumando cada tiempoT de cada miembro) y encontrar el que haya tenido menor tiempo. Si se da el caso de que el equipo con menor tiempo tenga alumnos con un promedio menor a 16, se debe dar la opción de eliminar y agregar alumnos.
Eso es básicamente lo que requiere el programa. Espero me ayuden con alguna cosa. Gracias
Valora esta pregunta


0