Pascal/Turbo Pascal - ficheros

 
Vista:

ficheros

Publicado por psg (18 intervenciones) el 03/01/2003 13:14:25
tengo un problema

es q tengo q hacer un programa del cual tengo ya hecha la parte principal. Ahora me falta hacer q ese programa lea un numero que hay en otro fichero a parte y hacerlo pasar por todo el programa que ya tengo hecho para realice las operaciones correspondientes, pero resulta que no sé como, o mas bien, sí se, y de hecho lo tengo en un libro (PASCAL de Nell Dale y Chip Weems) pero no me funciona y la verdad es q tp lo entiendo muy bien. Alguien me podría ayudar?
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

RE:ficheros

Publicado por Yopsi (182 intervenciones) el 03/01/2003 17:43:09
Lo que debes de hacer es identificar que tipo de archivo vas a leer, si es de texto o de integer, byte, etc. Una vez que lo has definido declaras un "File of <tipo>" y despues lo assignas (assign) y lo abres (reset) lees el número de ahí y ya nada más lo cargas en una variable (read) para que lo puedas accesar.
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

RE:ficheross

Publicado por psg (18 intervenciones) el 03/01/2003 19:07:44
perdona mi torpeza pero a ver... que sigo sin pillarlo muy bien.

Sería algo así...

PROGRAM MiPrograma (output); <--- debo hacer alguna especificacion sobre los ficheros en cuestion aqui arriba??

VAR
fich_inicial: file of text; (* es correcto? donde debo declararlo, o como?*)

BEGIN
assign(fich_inicial, ???); (* a q debo asignarlo??*)
reset(fich_inicial);
read(variable) (*esa variable q es?? un fichero?? o simplemente una vble declarada arriba en la seccion VAR, aun asi, de q tipo es???*)

rewrite(fich_salida)
write(fich_salida) <---- aqui no sé que es lo que va mal tp.

END.

Y como ultima duda, esos ficheros, debo haberlos creado previamente con Word, Bloc de notas o algo así???

Si me puedes responder, muchísimas 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

RE:ficheross

Publicado por Diego Romero (786 intervenciones) el 04/01/2003 05:34:17
Entiendo que estas programando con el Turbo Pascal asi que te daré una mano con tus dudas, veamos:
>PROGRAM MiPrograma (output); <--- debo hacer alguna especificacion sobre los ficheros en cuestion aqui arriba??
No es necesario especificar program, y de hacerlo solo es necesario un nombre simbolico (8 caracteres máximo).

>VAR
>fich_inicial: file of text; (* es correcto? donde debo declararlo, o como?*)
no, no es correcto, lo correcto es:
fich_inicial: text;

>BEGIN
>assign(fich_inicial, ???); (* a q debo asignarlo??*)
al nombre físico del archivo, por ejemplo:
assign(fich_inicial, 'c:\texto.txt');

>reset(fich_inicial);
Es correcto;
>read(variable) (*esa variable q es?? un fichero?? o simplemente una vble declarada arriba en la seccion VAR, aun asi, de q tipo es???*)
cuando declaras el archivo de tipo text lo que lees son lineas de texto, la sintaxis es:
readln(fich_inicial,variable);
donde "variable" es de tipo string y fich_inicial es la variable de tipo text (nombre lógico del archivo)

>rewrite(fich_salida)
no puedes hacer un rewrite de un archivo que ya está abierto con otro modo, la diferencia es que reset abre el archivo para lectura solamente (en el caso de los archivos definidos como text, es de lectura / escritura en otros casos) pero si resulta que el archivo no existe físicamente da error, rewrite abre el archivo en modo lectura (mismas consideraciones que para reset) excepto que de no existir el archivo físico lo crea con el tipo de la variable lógica que lo representa y lo vacia (pone tamaño cero) si existe.

>write(fich_salida) <---- aqui no sé que es lo que va mal tp.
no puedes hacer un write de un archivo de tipo text abierto en modo reset, tienes que abrirlo con Append.

>END.

>Y como ultima duda, esos ficheros, debo haberlos creado previamente con Word, Bloc de notas o algo así???

No es necesario, lo puedes crear desde Pascal mismo, recuerda que el formato de Word es binario y no text.
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

RE:ficheross

Publicado por pablo (18 intervenciones) el 04/01/2003 11:17:42
Bueno no programo con Turbo Pascal exactamente sino con Irie Pascal, pero lo q quería era emplear GNU aunq no me funciona, no lo doy instalado ni de broma, no soy capaz me da mogollon de fallos al empezar a trabajar con el. Lo q no entiendo es q cuando me dices q no puedo emplear el \"rewrite\" con un fichero q ya abri con \"reset\"... pero con \"reset\" abro el fichero inicial (fich_inicial) y con \"rewrite\" el de salida (fich_final), son diferentes. PEro... con esos ficheros, debo dejarles esos nombres o ponerle el nombre especifico? por ejemplo al de entrada (fich_inicial) le dejo ese o le pongo el mismo q tu dices (texto.txt)?? y al de salida (fich_final) si no lo creo, como hago para nombrarlo??? bufff, perdona q este tan perdido.

Por ultimo con la funcion ORD, si yo tengo...
numero:=numero*10 + (Ord(digito) - (ord(\'0\')); <---- q es ese digito con relacion al numero que yo leo del fichero (lo q quiero es convertir el numero leido como caracter a numero para operar con el) Debo declararlo como variable o algo asi??, de q tipo??

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

RE:ficheross

Publicado por Diego Romero (786 intervenciones) el 04/01/2003 18:50:27
Je, como ya te he comentado en otras respuestas nunca programé en Irie Pascal y no conozco sus mañas, lo mismo con GNU Pascal (de hecho nunca lo pude instalar correctamente).
El archivo que lógicamente tú llamas Fich_final debes asociarlo a un nombre físico con Assign, ¡¡¡ lo mismo que haces con Fich_Inicial !!!
Pregunta de curioso, ¿estas programando sobre Linux?...
Para el resto ya te he respondido via e-mail.
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

RE:ficheross

Publicado por pablo (18 intervenciones) el 04/01/2003 18:58:27
no toi sobre XP,pero pa trabajar luego sobre win 98 aunq, en si esto luego tiene que funcionar sobre Linux,

oye eso de asignar el nombre fisico... no lo pillo ni de coña!, como es exactamente? vamos q es lo q le falta a esto??

BEGIN

assign (fich_inicial, 'D:\Documents and Settings\Pablo\Escritorio\texto.pas');
reset(fich_inicial);
readln(fich_inicial,numero);
rewrite(fich_salida);
writeln(fich_salida, numero);

LeerEntero (fich_inicial, numero, error);

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

RE:ficheross

Publicado por pablo (18 intervenciones) el 04/01/2003 11:17:54
Bueno no programo con Turbo Pascal exactamente sino con Irie Pascal, pero lo q quería era emplear GNU aunq no me funciona, no lo doy instalado ni de broma, no soy capaz me da mogollon de fallos al empezar a trabajar con el. Lo q no entiendo es q cuando me dices q no puedo emplear el \"rewrite\" con un fichero q ya abri con \"reset\"... pero con \"reset\" abro el fichero inicial (fich_inicial) y con \"rewrite\" el de salida (fich_final), son diferentes. PEro... con esos ficheros, debo dejarles esos nombres o ponerle el nombre especifico? por ejemplo al de entrada (fich_inicial) le dejo ese o le pongo el mismo q tu dices (texto.txt)?? y al de salida (fich_final) si no lo creo, como hago para nombrarlo??? bufff, perdona q este tan perdido.

Por ultimo con la funcion ORD, si yo tengo...
numero:=numero*10 + (Ord(digito) - (ord(\'0\')); <---- q es ese digito con relacion al numero que yo leo del fichero (lo q quiero es convertir el numero leido como caracter a numero para operar con el) Debo declararlo como variable o algo asi??, de q tipo??

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