
Ayuda para guardar datos en fichero
Publicado por tugatime (44 intervenciones) el 11/01/2013 15:09:33
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
repeat
writeln('A continuacion, puedes ver el menu principal del programa.');
writeln('En este menu puedes comenzar una cesta nueva, modificar una ya existente, etc.');
writeln;
writeln(' 1. Mostrar nombres de cestas existentes.');
writeln(' 2. Abrir cesta de compra existente.');
writeln(' 3. Comenzar cesta de compra nueva.');
writeln(' 4. Mostrar cesta actual.');
writeln(' 5. Añadir producto a la cesta.');
writeln(' 6. Eliminar producto de la cesta.');
writeln(' 7. Modificar producto de la cesta.');
writeln(' 8. Guardar cesta.');
writeln(' 9. Cerrar cesta.');
writeln(' 10. Salir del programa.');
writeln;
write(' Elija una de las opciones anteriores: ');
readln(opcion);
clrscr;
if (opcion=1) then
fichero_ver_pedidos();
if (opcion=2) then
recupera_cesta(Nfichero);
if (opcion=3) then
comenzar_cesta();
if (opcion=4) then
begin
if (num_productos>0) then
ver_cesta()
else
ver_cesta2();
clrscr;
end;
if (opcion=5) then
begin
if (mi_cesta[0].en_cesta=false) then
begin
if (num_productos>0) then
anadir_prod()
else
anadir_prod2();
end;
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que la cesta ya esta cerrada.');
readln;
end;
clrscr;
end;
if (opcion=6) then
begin
if (mi_cesta[0].en_cesta=false) then
begin
if (num_productos>0) then
eliminar_prod()
else
eliminar_prod2();
end;
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que la cesta ya esta cerrada.');
readln;
end;
clrscr;
end;
if (opcion=7) then
begin
if (mi_cesta[0].en_cesta=false) then
begin
if (num_productos>0) then
modificar_prod()
else
modificar_prod2();
end;
if (mi_cesta[0].en_cesta=true) then
begin
write('Lo siento pero no se puede modificar este pedido debido a que la cesta ya esta cerrada.');
readln;
end;
clrscr;
end;
if (opcion=8) then
guarda_cesta(mi_cesta, Nfichero);
if (opcion=9) then
calcula_pedido(mi_cesta);
num_productos:= 0;
for i:=1 to tamxcesta do
if (mi_cesta[i].en_cesta=true) then
num_productos:= num_productos+1;
until (opcion=10);
Este es el menu principal de mi programa. Ahora dejo aqui cual es mi problema. Lo que pasa es lo siguiente. Yo elijo la opcion 3 para empezar una cesta de la compra nueva. Luego añado los productos y pongo lo que tenga que poner. Luego lo que hago es utilizar la opcion 8 para guardar la cesta en un fichero.
Este es el procedimiento que utilizo para guardar la cesta en la opcion 8:
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
procedure guarda_cesta(var mi_cesta: cesta; var Nfichero: string);
var
fichero: Tfichero;
i: integer;
begin
writeln('Para guardar una cesta nueva solo tienes que introducir su nombre a continuacion:');
writeln;
write('Nombre: ');
readln(Nfichero);
assign(fichero, Nfichero);
rewrite(fichero);
write(fichero, mi_cesta[0]);
for i:=1 to tamxcesta do
if (mi_cesta[i].en_cesta=true) then
write(fichero, mi_cesta[i]);
close(fichero);
fichero_guardar_pedidos(Nfichero);
writeln;
writeln('Su cesta de la compra se ha guardado con exito.');
readln;
clrscr;
end;
Lo que pasa es lo siguiente. Como dije antes, utilizo la opcion 3 para comenzar una cesta de compra nueva. Luego utilizo la opcion 8 para guardar esa cesta. Despues salgo del programa y me vuelvo a meter para comprobar que la cesta se ha guardado. Y efectivamente, la cesta esta guardada tal y como la habia dejado. El problema esta cuando la intento modificar.
Es decir, yo me vuelvo a meter en el programa y abro la cesta. Despues de tener la cesta abierto como podeis ver en el menu yo puedo añadir, eliminar o modificar los productos de la cesta. El problema es que si yo elimino o modifico o añado un producto a la cesta, luego me salgo del programa y me vuelvo a meter pero los cambios no se guardan. La cesta sigue estando como estaba antes cuando la he creado.
Alguien sabe como se hace para que los cambios que le haga a una cesta ya guardada se guarden en la cesta ???
Valora esta pregunta


0