Pascal/Turbo Pascal - Ejer pascal ficheros MUY URGENTE.GRACIAS

   
Vista:

Ejer pascal ficheros MUY URGENTE.GRACIAS

Publicado por almudena (64 intervenciones) el 15/11/2012 21:16:08
Hola me podeis echar una mano?
me piden
Realizar un programa que abra un fichero de texto, cree una copia del mismo y añada al final de la copia una cadena de caracteres.

El programa deberá:
1. Solicitar el nombre del fichero de entrada, y abrirlo para lectura.
2. Solicitar el nombre del fichero destino, comprobar que es distinto del nombre del fichero de entrada, y si es así abrirlo para escritura.
3. Solicitar la línea a añadir al final del fichero.
4. Leer línea a línea el fichero de entrada: en cada iteración del bucle leerá una línea del fichero de entrada y escribirá esa misma línea en el fichero destino.
5. Una vez alcanzado el final del fichero origen, se cerrará el mismo y a continuación, se añadirá una línea adicional al fichero destino. Tras añadir esta línea, se cerrará también el fichero destino.


GRACIAS
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

Ejer pascal ficheros MUY URGENTE.GRACIAS

Publicado por ramon (2072 intervenciones) el 15/11/2012 23:01:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{Esto puede servir }
 
program lector_texto;
   uses
      crt, dos;
   var
     f : text;
     nombreorigen, nombredestino : string;
 
   procedure leerfichero;
   var
     t : text;
     fichero : string;
     car : char;
     lineas, caracteres : longint;
   begin
      lineas := 0;
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

Ejer pascal ficheros MUY URGENTE.GRACIAS

Publicado por almudena (64 intervenciones) el 16/11/2012 12:50:59
Hice 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
Program Archivo;
Uses Crt;
 
const
	nombreFichero = 'C:\prueba.txt';
 
var
	nombreFicheroEntrada, nombreFicheroDestino, texto : String;
 
PROCEDURE procesar_archivos(nombreFicheroEntrada,nombreFicheroDestino,texto:String);
VAR
	archivoE, archivoD:Text;
	linea:String;
	c:integer;
BEGIN
 
	{$i-} // desactiva la comprobacion de errores de entrada/salida
	Assign(archivoE, nombreFicheroEntrada); // asignación del fichero a procesar
	Reset(ArchivoE);
	Assign(archivoD, nombreFicheroDestino);
	ReWrite(ArchivoD); // creamos el archivo de destino
	{$i+} // activa la comprobacion de errores de entrada/salida
 
	if (IoResult <> 0) then // comprobamos si hubo algún error en la E/S
		begin
			writeln('*** file2.pas: error.');
			halt(1)
		end;
 
 
	c:=0; // contador de línea
	WHILE NOT EOF(archivoE) DO // mientras no se termine el archivo
	BEGIN
		c:=c+1; // incrementamos contador linea
		readln(archivoE, linea); // leemos el fichero de entrada
		writeln(archivoD, linea); // escribimos en el fichero de destino
	end;
	Close(archivoE); // cerramos el archivo de entrada
	writeln(archivoD, texto); // escribimos la nueva linea en el archivo de destino
	writeln('La operacion se ha realizado con exito'); // mensaje de exito
	Close(archivoD); // cerramos el fichero de destino
 
end;
 
BEGIN
	clrscr;
 
	// petición de datos
	write('Introduzca la ruta del archivo de entrada: ');
	readln(nombreFicheroEntrada);
	write('Introduzca la ruta del fichero de destino: ');
	readln(nombreFicheroDestino);
 
	// comprobamos que los ficheros sean diferentes
	if nombreFicheroEntrada <> nombreFicheroDestino then begin
		write('Linea a insertar: '); // pedimos la linea a insertar
		readln(texto); // guardamos la linea en texto
		procesar_archivos(nombreFicheroEntrada, nombreFicheroDestino, texto); // procesamos la operación
	end
	else // error, ficheros iguales
		writeln('El fichero de entrada y el fichero de destino deben ser diferentes');
	readln;
END.


pero no funciona como debiera, q estoy haciendo mal?igual es q no estoy poniendo bien las rutas o no se...
de todas maneras esto
1
2
3
4
5
if (IoResult <> 0) then // comprobamos si hubo algún error en la E/S
		begin
			writeln('*** file2.pas: error.');
			halt(1)
		end;

podria ponerlo de otra manera, pq esa estructura la encontre pero no di ni el loResult ni el halt
gracias
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

Ejer pascal ficheros MUY URGENTE.GRACIAS

Publicado por ramon (2072 intervenciones) el 16/11/2012 18:05:27
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
{Revisarlo funciona si esto no loas dado qui talo desde a qui    pero deja el reset  {$I-} reset(resultado); {$I+}
    if ioresult <> 0 then
    begin
       writeln('*** error. ',nombreFicheroEntrada,'   Pulsa [Enter]');
       readln;
       halt(1);
    end
  else
     begin en donde aparezca y un end por este begin}
 
Program Archivo;
Uses Crt;
 
const
	nombreFichero = 'C:\prueba.txt';
 
var
	nombreFicheroEntrada, nombreFicheroDestino, texto : String;
        resultado : text;
 
PROCEDURE procesar_archivos(nombreFicheroEntrada,nombreFicheroDestino,texto:String);
VAR
	archivoE, archivoD:Text;
	linea:String;
	c:integer;
      BEGIN
	{desactiva la comprobacion de errores de entrada/salida}
	Assign(archivoE,nombreFicheroEntrada); {asignación del fichero a procesar}
      {$i-} Reset(ArchivoE); {$i+}
      if ioresult <> 0 then
      begin
         writeln('*** error. ',nombreFicheroEntrada,'   Pulsa [Enter]');
         readln;
	 halt(1);
      end
    else
       begin
	Assign(archivoD, nombreFicheroDestino);
	ReWrite(ArchivoD); {// creamos el archivo de destino}
	 {// activa la comprobacion de errores de entrada/salida}
	c := 0; {// contador de línea}
	WHILE NOT EOF(archivoE) DO {// mientras no se termine el archivo}
	BEGIN
	   readln(archivoE, linea); {// leemos el fichero de entrada}
	   writeln(archivoD, linea); {// escribimos en el fichero de destino}
           c:=c+1; {// incrementamos contador linea}
	end;
	Close(archivoE); {// cerramos el archivo de entrada}
	writeln(archivoD, texto); {// escribimos la nueva linea en el archivo de destino}
	writeln('La operacion se ha realizado con exito'); {// mensaje de exito}
	Close(archivoD); {// cerramos el fichero de destino}
      end;
    end;
 
    procedure muesta_archivo_creado(nombrearchi : string);
    var
      tex : string;
    begin
       assign(resultado,nombrearchi);
    {$I-} reset(resultado); {$I+}
    if ioresult <> 0 then
    begin
       writeln('*** error. ',nombreFicheroEntrada,'   Pulsa [Enter]');
       readln;
       halt(1);
    end
  else
     begin
         WHILE NOT EOF(resultado) DO
         begin
            readln(resultado,tex);
            writeln(tex);
         end;
         writeln;
         writeln('  Pulse [Enter]');
         close(resultado);
     end;
    end;
 
 
     BEGIN
	clrscr;
	{// petición de datos}
	write('Introduzca nombre del archivo de entrada: ');
	readln(nombreFicheroEntrada);
	write('Introduzca nombre del fichero de destino: ');
	readln(nombreFicheroDestino);
 
	{// comprobamos que los ficheros sean diferentes}
	if nombreFicheroEntrada <> nombreFicheroDestino then
        begin
	  write('Linea a insertar : '); {// pedimos la linea a insertar}
	  readln(texto); {// guardamos la linea en texto}
	  procesar_archivos(nombreFicheroEntrada, nombreFicheroDestino, texto); {// procesamos la operación}
          clrscr;
          muesta_archivo_creado(nombreFicheroDestino);
	end
	else {// error, ficheros iguales}
	  writeln('El fichero de entrada y el fichero de destino deben ser diferentes');
	readln;
    END.
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

Ejer pascal ficheros MUY URGENTE.GRACIAS

Publicado por almudena (64 intervenciones) el 16/11/2012 22:46:50
Solucionado
gracias
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