Pascal/Turbo Pascal - Ayuda para guardar datos en fichero

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 11/01/2013 21:57:10
Mira el proceso es como el de salvar te explico

1
2
3
4
5
6
7
8
9
10
11
12
13
14
assign(fichero, Nfichero);
       {$I-}   reset(fichero);  {$I+}  esto es para manejar los errores que pudieran darse
   if  ioresult <> 0 then    esto seria un error
   begin
           writeln('El archivo no existe');
            exit;   salimos sin aver nada
         end
   else
           begin
                   read(fichero,mi_cesta[0]);
                    a qui  realizamos todas las modificaciones que sean
                    write(fichero,mi_cesta[0]);  guardamos los cambios
                     close(fichero);
           end;


esto es todo ojo solo si cada fichero es único si tiene en el mas de 1 la cosa cambia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 11/01/2013 23:51:41
Y todo eso que has dicho, tengo que ponerlo dentro del procedimiento donde hago los cambios al final verdad ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 12/01/2013 13:21:20
begin
read(fichero,mi_cesta[0]);
>>>>>>>> a qui realizamos todas las modificaciones que sean
write(fichero,mi_cesta[0]); guardamos los cambios
close(fichero);
end;

Los cambios los tienes que realizar dentro de este donde lo indico puesto que aqui los as tomado
para su modificación y luego las salvas y cierras el archivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 12/01/2013 14:47:20
Aqui hay algo que no esta bien, porque me esta fallando algo.
Mira vamos hacerlo asi, yo te digo las cosas de nuevo y haber si ahora sale bien.

Esto es asi. Este es mi menu principal.

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
107
108
109
110
111
112
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. Cesta entregada.');
           writeln('  11. Estadísticas totales.');
           writeln('  12. Datos de un producto.');
           writeln('  13. 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(mi_cesta, Nfichero)
                            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);
 
           if (opcion=11) then
              estadisticas_totales();
 
           num_productos:= 0;
 
           for i:=1 to tamxcesta do
               if (mi_cesta[i].en_cesta=true) then
                  num_productos:= num_productos+1;
 
     until (opcion=13);


Yo le doy a la opcion 3 para empezar una cesta nueva (las cesta solo pueden tener hasta 3 productos maximo). En la cesta pongo 1 producto (es decir guardo el nombre, la cantidad y el precio de ese producto). Luego voy a la opcion 8 y guardo la cesta en un fichero.
Luego le doy a la opcion 13 salir del programa. Vuelvo a entrar al programa y le doy a la opcion 2 para abrir la cesta (esa opcion me pide el nombre de la cesta que quiero abrir y yo pongo el nombre y abre dicha cesta). Cuando tengo la cesta abierta, le doy a la opcion 4 para comprobar que el producto que habia introducido sigue ahi, y si sigue ahi sin problemas. Hasta aqui esta todo bien. Ahora, lo que quiero es lo siguiente. Yo despues de haber abierto la cesta, puedo añadir mas productos, eliminar algun producto o modificar algun producto. El problema es que siempre que yo añado un producto nuevo, elimino un producto ya existente o modifico un producto de la cesta, las modificaciones de guardan mientras tango el programa abierto, pero si cierro el programa y vuelvo abrirlo y abro la cesta, las modificaciones no se han guardado. Para que las modificaciones se guarden necesito guardarlo en el fichero y aqui es donde esta mi problema, porque no se como hacerlo.

Este es el procedimiento que he utilizado para guardar la cesta cuando la he creado (la 1º vez que la he guardado).

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 dejo aqui por si tiene algun dato importante. Necesito ayuda para saber como hacer para guardar los cambios en el fichero.

P.S: Por cierto, la cesta esta, por asi decirlo, dividida en 2. Por un lado tenemos las posiciones 1 hasta tamxcesta (tamxcesta es la posicion maxima de la cesta, hasta donde puede llegar) y luego tenemos la posicion 0 de la cesta. Las posiciones 1 hasta tamxcesta es donde se guardan los productos, es decir, es donde estan guardadas las informaciones de los productos (su nombre, su cantidad y su precio). Y la posicion 0 es para una cosa mas especial. La posicion 0 sirve para guardar la fecha, la cantidad total de productos que hay en esa cesta y el precio total de la cesta. Yo quiero guardar las 2 cosas, es decir, quiero guardar los cambios hechos tanto desde las posiciones 1 hasta tamxcesta como de la posicion 0, solo que por separado. Las posiciones 1 hasta tamxcesta y las posicion 0 tienen distintas funciones y trabajan de forma distinta, por eso yo quiero guardar los cambio de las 2 cosas pero por separado.

Me puedes ayudar con esto ??

P.S: Si necesitas mais informacion sobre el programa yo te la doy sin problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 13/01/2013 22:13:55
Pasa tanto las constantes tipes y variables que as creado para saber por donde entrarle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 14/01/2013 02:43:36
Oye, tienes algun email o algo que me puedas dar ??
Asi te envio todo el programa y unas cosas mas para que lo tengas todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 14/01/2013 18:02:32
Lo siento pero solo por este ligar puedo contestar es por atender a todos si una ayuda vale para
barios siempre es mejor.
Si me mandas todo pues podre a tenderte mejor pero tu mismo y disculpa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 14/01/2013 18:44:03
Yo no tengo problema por ponerlo todo aqui, lo que pasa es que es muy grande para ponerlo todo, pero no pasa nada, hago 2 comentarios o 3 y lo pongo todo. Mira aqui te dejo la parte 1 del programa:

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
program Cesta_de_la_compra;
 
uses crt;
 
const
     tamxcesta=3;
 
type
    producto = record
             nombre: string;
             num_unidades: integer;
             precio_unidad: real;
             en_cesta: boolean;
    end;
 
    cesta=array[0..tamxcesta] of producto;
 
    Tfichero=file of producto;
 
var
   mi_producto: producto;
   mi_cesta: cesta;
   nombre_producto, Nfichero: string;
   exito, exito2: boolean;
   posicion, posicion2, num_productos, i: integer;
   opcion: integer;
 
procedure lee_producto(var mi_producto: producto);
          begin
               write('Nombre: ');
               readln(mi_producto.nombre);
               write('Cantidad: ');
               readln(mi_producto.num_unidades);
               write('Precio: ');
               readln(mi_producto.precio_unidad);
               mi_producto.en_cesta:= true;
 
               writeln;
          end;
 
procedure escribe_producto(var mi_producto: producto);
          begin
               writeln('Nombre: ',mi_producto.nombre);
               writeln('Cantidad: ',mi_producto.num_unidades);
               writeln('Precio por unidad: ',mi_producto.precio_unidad:0:2);
               writeln('Precio total: ',(mi_producto.num_unidades*mi_producto.precio_unidad):0:2);
          end;
 
procedure inicializa_cesta(var mi_cesta: cesta);
          var
             i: integer;
 
          begin
               for i:=1 to tamxcesta do
                   mi_cesta[i].en_cesta:= false;
          end;
 
procedure mostrar_cesta(var mi_cesta: cesta);
          var
             i: integer;
 
          begin
               writeln('Los productos de la cesta son:');
               writeln;
 
               for i:=1 to tamxcesta do
                   if (mi_cesta[i].en_cesta=true) then
                      begin
                           writeln('Producto: ',i);
                           escribe_producto(mi_cesta[i]);
 
                           writeln;
                      end;
          readln;
          clrscr;
          end;
 
procedure cuenta_productos(var mi_cesta: cesta);
          var
             i: integer;
 
          begin
               num_productos:= 0;
 
               for i:=1 to tamxcesta do
                   if (mi_cesta[i].en_cesta=true) then
                      num_productos:= num_productos+1;
 
               write('En la cesta hay ',num_productos,' productos.');
          readln;
          clrscr;
          end;
 
procedure busca_libre(var mi_cesta: cesta; var exito: boolean; var posicion2: integer);
          var
             i: integer;
 
          begin
               i:=0;
               repeat
                     i:=i+1;
                     exito:= mi_cesta[i].en_cesta=false;
                     posicion2:=i;
               until (exito) or (i=tamxcesta);
          end;
 
procedure incluir_producto_en_cesta(var mi_cesta: cesta; var exito: boolean; var posicion2: integer);
          var
             i: integer;
 
          begin
               busca_libre(mi_cesta, exito, posicion2);
 
               i:= posicion2;
 
               if exito then
                  begin
                       writeln('Introduzca los datos de su nuevo producto:');
                       writeln;
                       lee_producto(mi_cesta[i]);
                       writeln('Se ha añadido su nuevo producto.');
                  end
               else
                   write('La cesta esta llena.');
          readln;
          clrscr;
          end;
 
procedure buscar_producto(var mi_cesta: cesta; var exito2: boolean; nombre_producto: string; var posicion: integer);
          var
             i: integer;
 
          begin
               i:=0;
               repeat
                     i:=i+1;
                     exito2:=mi_cesta[i].nombre=nombre_producto;
                     posicion:=i;
               until (exito2) or (i=tamxcesta);
          end;
 
procedure eliminar_producto_de_cesta(var mi_cesta: cesta; var nombre_producto: string; var exito2: boolean; var posicion: integer);
          var
             i: integer;
 
          begin
          write('Introduzca el nombre del producto que quiere eliminar: ');
          readln(nombre_producto);
 
          writeln;
 
          buscar_producto(mi_cesta, exito2, nombre_producto, posicion);
 
          i:= posicion;
 
          if exito2 then
             begin
                  mi_cesta[i].en_cesta:=false;
                  writeln('El producto ha sido eliminado.');
             end
          else
              write('Producto no se ha encontrado.');
          readln;
          clrscr;
          end;
 
procedure modificar_producto(var mi_cesta: cesta; nombre_producto: string; exito2: boolean; posicion: integer);
          var
             opcion: char;
             i: integer;
 
          begin
          write('Introduzca el nombre del producto que quiere modificar: ');
          readln(nombre_producto);
 
          writeln;
 
          buscar_producto(mi_cesta, exito2, nombre_producto, posicion);
 
          i:= posicion;
 
          if exito2 then
             begin
                  clrscr;
                  repeat
                        writeln('A continuacion, puede ver que datos del producto puede cambiar.');
                        writeln;
                        writeln('   1. Nombre');
                        writeln('   2. Cantidad');
                        writeln('   3. Precio');
                        writeln('   4. Finalizar modificacion');
 
                        writeln;
 
                        write(' Elija que datos quiere cambiar: ');
                        readln(opcion);
                        clrscr;
 
                        if (opcion='1') then
                           begin
                                write('Introduzca un nuevo nombre para el producto: ');
                                readln(mi_cesta[i].nombre);
 
                                writeln;
 
                                writeln('Su modificacion se ha realizado con exito.');
                                readln;
                           end;
                        clrscr;
 
                        if (opcion='2') then
                           begin
                                write('Introduzca una nueva cantidad del producto: ');
                                readln(mi_cesta[i].num_unidades);
 
                                writeln;
 
                                writeln('Su modificacion se ha realizado con exito.');
                                readln;
                           end;
                        clrscr;
 
                        if (opcion='3') then
                           begin
                                write('Introduzca el nuevo precio del producto: ');
                                readln(mi_cesta[i].precio_unidad);
 
                                writeln;
 
                                writeln('Su modificacion se ha realizado con exito.');
                                readln;
                           end;
                        clrscr;
                  until (opcion='4');
             end
          else
              begin
                   write('Producto no se ha encontrado.');
                   readln;
              end;
          clrscr;
          end;
 
procedure cesta_de_compra(var mi_cesta: cesta);
          var
             opcion: char;
             i: integer;
 
          begin
               repeat
                     writeln('Utiliza este menu para añadir productos, eliminar productos o modificarlos.');
 
                     writeln;
 
                     writeln('   a. Añadir producto a la cesta.');
                     writeln('   b. Eliminar producto de la cesta.');
                     writeln('   c. Mostrar cesta.');
                     writeln('   d. Modificar producto de la cesta.');
                     writeln('   e. Contar productos de la cesta.');
                     writeln('   f. Volver.');
 
                     writeln;
 
                     write(' Elije una de las opciones anteriores: ');
                     readln(opcion);
                     clrscr;
 
                     if ((opcion='a') or (opcion='A')) then
                        incluir_producto_en_cesta(mi_cesta, exito, posicion2);
 
                     if ((opcion='b') or (opcion='B')) then
                        begin
                             if (num_productos>0) then
                                eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='c') or (opcion='C')) then
                        begin
                             if (num_productos>0) then
                                mostrar_cesta(mi_cesta)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='d') or (opcion='D')) then
                        begin
                             if (num_productos>0) then
                                modificar_producto(mi_cesta, nombre_producto, exito2, posicion)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='e') or (opcion='E')) then
                        cuenta_productos(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='f') or (opcion='F'));
          end;
 
procedure calcula_pedido(var mi_cesta: cesta);
          var
             unidades_total: integer;
             precio_total: real;
             pedido: string;
 
          procedure calcula_unidades(var unidades_total: integer);
                    var
                       i: integer;
 
                    begin
                         unidades_total:=0;
 
                         for i:=1 to tamxcesta do
                             if (mi_cesta[0].en_cesta=true) then
                                unidades_total:=unidades_total+mi_cesta[i].num_unidades;
 
                         unidades_total:= unidades_total;
                    end;
 
          procedure calcula_precio(var precio_total: real);
                    var
                       i: integer;
 
                    begin
                         precio_total:=0;
 
                         for i:=1 to tamxcesta do
                             if (mi_cesta[0].en_cesta=true) then
                                precio_total:= precio_total + mi_cesta[i].precio_unidad;
 
                         precio_total:= precio_total;
                    end;
 
          begin
               calcula_unidades(unidades_total);
               calcula_precio(precio_total);
 
               mi_cesta[0].nombre:= '10/01/2013';
               mi_cesta[0].num_unidades:= unidades_total;
               mi_cesta[0].precio_unidad:= precio_total;
               mi_cesta[0].en_cesta:= false;
 
               writeln('Esta opcion sirve para cerrar la cesta de la compra.');
               writeln;
               writeln('Si cierra ahora su cesta, despues no podra cambiar nada en la cesta.');
               writeln;
               writeln('Recuerde que esta opcion solo sirve para cerrar la cesta, pero no para guardarla.');
               writeln;
               write('Esta seguro que quiere cerrar ahora su cesta (si o no): ');
               readln(pedido);
               clrscr;
 
               if ((pedido='si') or (pedido='Si') or (pedido='sI') or (pedido='SI')) then
                  begin
                       mi_cesta[0].en_cesta:=true;
                       writeln('Su cesta ha sido cerrada.');
                  end;
 
               if ((pedido='no') or (pedido='No') or (pedido='nO') or (pedido='NO')) then
                  begin
                       mi_cesta[0].en_cesta:=false;
                       writeln('Su cesta sigue abierta.');
                       writeln('Vuelva otra vez cuando la quiera cerrar.');
                  end;
          readln;
          clrscr;
          end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 14/01/2013 19:00:42
Aqui dejo la parte 2 del programa:

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
procedure fichero_guardar_pedidos(var Nfichero: string);
          var
             fichero: text;
 
          begin
               assign(fichero, 'indice.txt');
               {$I-}
               reset(fichero);
               {$I+}
 
               if (ioResult<>0) then
                  begin
                       rewrite(fichero);
 
                       writeln(fichero, Nfichero);
 
                       close(fichero);
                  end
               else
                   begin
                        append(fichero);
 
                        writeln(fichero, Nfichero);
 
                        close(fichero);
                   end;
          end;
 
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;
 
procedure recupera_cesta(var Nfichero: string);
          var
             fichero: Tfichero;
             i: integer;
             mi_producto: producto;
 
          begin
               writeln('Esta opcion sirve para abrir una cesta guardado antes.');
               writeln('Para poder modificar la cesta se debe utilizar el menu principal.');
               writeln;
               writeln('Para abrir la cesta, introduzca el nombre de la cesta a continuacion:');
               writeln;
               write('Nombre: ');
               readln(Nfichero);
 
               i:=0;
 
               assign(fichero, Nfichero);
               {$I-}
               reset(fichero);
               {$I+}
 
               if (ioResult=0) then
                  begin
                       read(fichero, mi_cesta[0]);
 
                       while not eof(fichero) do
                             begin
                                  read(fichero, mi_producto);
 
                                  i:=i+1;
 
                                  if (mi_producto.en_cesta=true) then
                                     mi_cesta[i]:=mi_producto;
                             end;
                       writeln;
                       writeln('Su cesta esta abierta.');
                  end
               else
                   begin
                        writeln;
                        writeln('Lo siento, pero esta cesta no existe.');
                   end;
               close(fichero);
               readln;
               clrscr;
          end;
 
procedure fichero_ver_pedidos();
          var
             fichero: text;
             linea: string;
 
          begin
               assign(fichero, 'indice.txt');
               {$I-}
               reset(fichero);
               {$I+}
 
               if ioResult=0 then
                  begin
                       while not eof(fichero) do
                             begin
                                  readln(fichero, linea);
                                  writeln(linea);
                             end;
                       close(fichero);
                  end
               else
                   writeln('Lo siento, pero aun no se ha realizado ningun pedido.');
          readln;
          clrscr;
          end;
 
procedure comenzar_cesta();
          begin
               inicializa_cesta(mi_cesta);
               writeln('Esta opcion sirve para crear una cesta de la compra nueva desde 0.');
               writeln('No te olvides que cada cesta solo puede tener hasta ',tamxcesta,' productos.');
               readln;
               clrscr;
 
               cesta_de_compra(mi_cesta);
          end;
 
procedure anadir_prod(var mi_cesta: cesta; var Nfichero: string);
          var
             fichero: Tfichero;
             i: integer;
 
          begin
               writeln('Esta opcion es solo para añadir productos a una cesta ya existente.');
               writeln('Si quieres empezar una cesta nueva por favor elige la opcion 2 (Comenzar cesta de compra nueva).');
               writeln;
               writeln('No te olvides que solo puedes añadir un producto nuevo si la cesta aun no esta llena.');
               readln;
               clrscr;
 
               incluir_producto_en_cesta(mi_cesta, exito, posicion2);
          end;
 
procedure anadir_prod2();
          begin
               writeln('Esta opcion es solo para añadir productos a una cesta ya existente.');
               writeln('Si quieres empezar una cesta nueva por favor elige la opcion 2 (Comenzar cesta de compra nueva).');
               writeln;
               writeln('No te olvides que solo puedes añadir un producto nuevo si la cesta aun no esta llena.');
               readln;
               clrscr;
 
               writeln('Ahora mismo no hay ninguna cesta abierta.');
               writeln('Para poder añadir productos nuevos primero debes abrir una cesta.');
               readln;
          end;
 
procedure eliminar_prod();
          begin
               writeln('Esta opcion solo sirve para eliminar productos de la cesta abierta en este momento.');
               writeln('Si quiere eliminar productos de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion);
          end;
 
procedure eliminar_prod2();
          begin
               writeln('Esta opcion solo sirve para eliminar productos de la cesta abierta en este momento.');
               writeln('Si quiere eliminar productos de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               writeln('Ahora mismo no hay ninguna cesta abierta.');
               writeln('Para poder eliminar los productos primero debes abrir una cesta.');
               readln;
          end;
 
procedure ver_cesta();
          begin
               writeln('Con esta opcion puedes ver los productos de la cesta abierta en este momento.');
               writeln('Para ver los productos de otra cesta primero debes abrir dicha cesta.');
               readln;
               clrscr;
 
               mostrar_cesta(mi_cesta);
          end;
 
procedure ver_cesta2();
          begin
               writeln('Con esta opcion puedes ver los productos de la cesta abierta en este momento.');
               writeln('Para ver los productos de otra cesta primero debes abrir dicha cesta.');
               readln;
               clrscr;
 
               writeln('Ahora mismo no hay ninguna cesta abierta.');
               writeln('Para poder ver los productos primero debes abrir una cesta.');
               readln;
          end;
 
procedure modificar_prod();
          begin
               writeln('Esta opcion solo sirve para modificar el producto de la cesta abierta en este momento.');
               writeln('Si quiere modificar el producto de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               modificar_producto(mi_cesta, nombre_producto, exito2, posicion);
          end;
 
procedure modificar_prod2();
          begin
               writeln('Esta opcion solo sirve para modificar el producto de la cesta abierta en este momento.');
               writeln('Si quiere modificar el producto de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               writeln('Ahora mismo no hay ninguna cesta abierta.');
               writeln('Para poder eliminar los productos primero debes abrir una cesta.');
               readln;
          end;
 
begin
     writeln('--------------------------------- HOLA ---------------------------------');
     readln;
     clrscr;
     writeln('------------------------ Bienvenido a PromCesta ------------------------');
     writeln;
     writeln('El programa donde puedes crear y gestionar tus propias cestas de la compra.');
     readln;
     clrscr;
 
     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. Entregar cesta.');
           writeln('  11. Estadísticas totales.');
           writeln('  12. Datos de un producto.');
           writeln('  13. 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(mi_cesta, Nfichero)
                            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=13);
 
readln;
end.


Aqui dejo mi problema:

Mira aqui te dejo todo el programa. Por cierto, si ves alguna cosa que esta como comentario, no le hagas caso y haz como si no existiera.

Lo que necesito como te dije antes es poder guardar las cosas nuevas en la cesta.
Yo cuando ejecuto el programa, en el menu principal le doy a la opcion 3 para empezar una cesta nueva. Despues el programa me lleva al menu secundario y en el menu secundario yo añado producto a la cesta, elimino o modifico. Luego, en el menu secundario elijo la opcion f para volver al menu principal. Despues de estar otra ves en el menu principal, elijo la opcion 8 para guardar la cesta en un fichero. Guardo la cesta. Cuando termino de guardar la cesta, salgo del programa. Luego vuelvo a entrar al programa y en el menu principal elijo la opcion 2 para abrir la cesta que he guardado antes. Despues de tener la cesta abierta, yo puedo añadir productos a la cesta con la opcion 5 (claro solo puedo añadir si la cesta no esta llena, pero el programa ya esta configurado para eso), puedo eliminar productos con la opcion 6 y puedo modificar productos con la opcion 7.
El problema es que si yo añado los productos, los elimino o los modifico (con la opcion 5, 6 y 7) esos cambio que he hecho no se guardan en el fichero y luego, cuando salgo del programa y despues vuelvo a entrar, le doy a la opcion 2 para abrir la cesta y las cosas nuevas no estan.

Yo necesito ayuda para eso. Necesito que me digas como hago para que siempre que añada (opcion 5), elimine (opcion 6) o modifique (opcion 7) un producto, los cambios tambien se guarden en el fichero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 14/01/2013 21:49:28
Mira lo poco que llevo mirado en este punto dendrias que poner algo de esto.

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
procedure cesta_de_compra(var mi_cesta: cesta);
          var
             opcion: char;
             i: integer;
 
          begin
               repeat
                     writeln('Utiliza este menu para añadir productos, eliminar productos o modificarlos.');
 
                     writeln;
 
                     writeln('   a. Añadir producto a la cesta.');
                     writeln('   b. Eliminar producto de la cesta.');
                     writeln('   c. Mostrar cesta.');
                     writeln('   d. Modificar producto de la cesta.');
                     writeln('   e. Contar productos de la cesta.');
                     writeln('   f. Volver.');
 
                     writeln;
 
                     write(' Elije una de las opciones anteriores: ');
                     readln(opcion);
                     clrscr;
 
                     if ((opcion='a') or (opcion='A')) then
                        incluir_producto_en_cesta(mi_cesta, exito, posicion2);
 
                     if ((opcion='b') or (opcion='B')) then
                        begin
                             if (num_productos>0) then
                                eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='c') or (opcion='C')) then
                        begin
                             if (num_productos>0) then
                                mostrar_cesta(mi_cesta)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='d') or (opcion='D')) then
                        begin
                             if (num_productos>0) then
                                modificar_producto(mi_cesta, nombre_producto, exito2, posicion)
                             else
                                 begin
                                      write('No hay productos en la cesta.');
                                      readln;
                                 end;
                        clrscr;
                        end;
 
                     if ((opcion='e') or (opcion='E')) then
                        cuenta_productos(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='f') or (opcion='F'));
{A QUI}
          writeln('Desea Guardar Los Datos [S/N]');
           repeat
                    readln(opcion);
           until in['s','S','n','N'];
          if opcion in['S'.'s'] then
           {A qui guardas}
           end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 14/01/2013 22:13:47
Pero ese procedimiento es para empezar una cesta nueva, y para las cesta nuevas tengo la opcion 8 del menu principal para guardarlas (las tengo que guardo con la opcion 8 porque si me lo pide el ejercicio).

Mi problema esta con el procedimiento "anadir_prod()", "eliminar_prod()" y "modificar_prod()", porque es en esos procedimientos donde puedo añadir, eliminar o modificar un producto en una cesta ya creada y guardada en un fichero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 14/01/2013 22:37:11
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
procedure eliminar_producto_de_cesta(var mi_cesta: cesta; var nombre_producto: string; var exito2: boolean; var posicion: integer);
          var
             i: integer;
 
          begin
          write('Introduzca el nombre del producto que quiere eliminar: ');
          readln(nombre_producto);
 
          writeln;
 
          buscar_producto(mi_cesta, exito2, nombre_producto, posicion);
 
          i:= posicion;
 
          if exito2 then
             begin
                  mi_cesta[i].en_cesta:=false;
                  writeln('El producto ha sido eliminado.');
     {En este punto mi_cesta[i].en_cesta queda como false pero solo temporal tienes que
      guardar los cambios sino se perderán en el momento que salgas del programa
      esto lo tienes que realizar en los tres procesos que marcas siempre que termines cada uno
      de ellos }
             end
          else
              write('Producto no se ha encontrado.');
          readln;
          clrscr;
          end;


lo otro es una sugerencia de aseguramiento de que no se perderán los datos por descuido}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 15/01/2013 02:31:21
Amigo, no has leido lo que te dije antes. Yo en ese procedimiento no necesito ayuda. Yo solo necesito ayuda con el procedimiento "añadir_prod()", "eliminar_prod()" y "modificar_prod()".
Que son estos 3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure anadir_prod(var mi_cesta: cesta; var Nfichero: string);
          var
             fichero: Tfichero;
             i: integer;
 
          begin
               writeln('Esta opcion es solo para añadir productos a una cesta ya existente.');
               writeln('Si quieres empezar una cesta nueva por favor elige la opcion 2 (Comenzar cesta de compra nueva).');
               writeln;
               writeln('No te olvides que solo puedes añadir un producto nuevo si la cesta aun no esta llena.');
               readln;
               clrscr;
 
               incluir_producto_en_cesta(mi_cesta, exito, posicion2);
          end;


1
2
3
4
5
6
7
8
9
procedure eliminar_prod();
          begin
               writeln('Esta opcion solo sirve para eliminar productos de la cesta abierta en este momento.');
               writeln('Si quiere eliminar productos de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion);
          end;



1
2
3
4
5
6
7
8
9
procedure modificar_prod();
          begin
               writeln('Esta opcion solo sirve para modificar el producto de la cesta abierta en este momento.');
               writeln('Si quiere modificar el producto de otro cesta primero debe abrir dicha cesta.');
               readln;
               clrscr;
 
               modificar_producto(mi_cesta, nombre_producto, exito2, posicion);
          end;


En estos 3 procedimientos, dentro de ellos se utiliza otro procedimiento, es decir, dentro de "anadir_prod()" se utiliza el incluir_producto_en_cesta(mi_cesta, exito, posicion2);,. Dentro de "eliminar_prod()" se utiliza eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion);. Y dentro de "modificar_prod()" se utiliza modificar_producto(mi_cesta, nombre_producto, exito2, posicion);.

Pero, yo lo que quiero es guardar los cambios pero dentro de los 3 procedimientos "anadir_prod()", "eliminar_prod()" y "modificar_prod()". Poner algo para que guarde los cambios en el fichero al final de estos 3 procedimientos para que guarden los cambios.

No puedo poner ese algo para guardar los cambios dentro de los otros 3 (ncluir_producto_en_cesta(mi_cesta, exito, posicion2);, eliminar_producto_de_cesta(mi_cesta, nombre_producto, exito2, posicion); y modificar_producto(mi_cesta, nombre_producto, exito2, posicion);) porque estaria modificando muchas cosas que no quiero modificar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 15/01/2013 17:19:00
En los procesos del menú números 5,6,7 que comentas te explico,
cuando terminas los procesos las modificaciones son correctas
pero si no las guardas es como si no las realizaras puesto que
al salir del programa como solo están en memoria adiós datos
tienes que guardar cada vez que terminas uno de los procesos
teniendo siempre encenta donde lo debes guardar o sea que
archivo es el abierto.
Fíjate que cuando guardas el pedido cierras el archivo por
ello tienes que abrirlo otra vez y guardar los cambios que
realices sean cual sean estos.

1
2
3
4
5
6
7
8
9
10
11
12
procedure guarda_cambios(nom : string; cest : cesta);
  var
    fichero : Tfichero;
  begin
      assign(fichero,nom);
      reset(fichero);
      write(fichero, cest[0]);
      for i := 1 to tamxcesta do
        if (cest[i].en_cesta = true) then
         write(fichero, cest[i]);
         close(fichero);
  end;


El nombre sera el tomado al abrirle para modificación de datos y la cesta
la abierta en ese momento.
Si vuelves a guardar desde el menú general también lo realiza pero te tienes
que acordar de guardarlos, mientras que si lo realizas como te digo te
desentiendes de ello.
Todo esto es sobre tu programa sin tocarte nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 15/01/2013 18:51:10
Hm ok. Entonces solo tengo que añadir esto:

1
2
3
4
5
6
7
8
9
10
11
12
procedure guarda_cambios(nom : string; cest : cesta);
var
fichero : Tfichero;
begin
assign(fichero,nom);
reset(fichero);
write(fichero, cest[0]);
for i := 1 to tamxcesta do
if (cest[i].en_cesta = true) then
write(fichero, cest[i]);
close(fichero);
end;


Al final de la opcion 5, 6 y 7 del menu y los cambios se guardan solos cada ves que utiliza una de estas opciones.
Es eso ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda para guardar datos en fichero

Publicado por ramon (2158 intervenciones) el 15/01/2013 19:56:07
Correcto eso es.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para guardar datos en fichero

Publicado por tugatime (44 intervenciones) el 15/01/2013 21:11:49
Ok, gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar