Pascal/Turbo Pascal - duda sobre ficheros binarios

 
Vista:

duda sobre ficheros binarios

Publicado por sese (7 intervenciones) el 09/10/2003 16:08:41
Necesito ayuda urgentemente.
Tengo una practica de teoria de codigos en la que tengo que sumar dos ficheros y hay dos opciones: que los ficheros sean ASCII o binarios.
¿A alguien se le ocurre como puedo definir los tipos de los archivos para que me sirvan para los dos tipos?
¿Y que se puede hacer para saber por rograma si un archivo existe o no sin que de error al ejecutarlo?
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

RE:duda sobre ficheros binarios

Publicado por Diego Romero (786 intervenciones) el 10/10/2003 01:23:08
Con sumar dos archivos supongo que te refieres a tomas dos archivos y ponerlos en un tercero uno detrás del otro, ¿verdad?. Se puede hacer con ASCII o binario, si es binario aclarame si ambos archivos tienen el mismo formato o no.
Para saber si un archivo físico existe lo mejor es tratar de abrirlo y luego verificar el código de error.
A continuación copio y pego la lista de los errores según la ayuda de Turbo Pascal.
1 Invalid function number
2 File not found
3 Path not found
4 Too many open files
5 File access denied
6 Invalid file handle
12 Invalid file access code
15 Invalid drive number
16 Cannot remove current directory
17 Cannot rename across drives
18 No more files
Para obtener este código de error se podría hacer como sigue:
var
Err: byte;
begin
Assign(Arch, 'Archivo.ext');
{$I-}
Reset(Arch);
{$I+}
Err:=IOResult;
if Err <> 0 then
case Err of
1: WriteLn('Función inválida.');
2:WriteLn('Archivo no encontrado.');
3:...
...
end; { case }
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

necesito un experto

Publicado por sese (7 intervenciones) el 10/10/2003 16:22:26
Necesito saber si es pascal se puede hacer lo siguiente:
al ejecutar un programa poder introducir informacion que va a empeal el programa en la misma directiva.
Por ejemplo, al ejecutar el programa poner:
NombrePrograma <fichero1> <fichero> <opcion>
Tengo entendido que en C se puede hacer. ¿Se puede tambien en pascal? y si se puede ¿como se hace?
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:necesito un experto

Publicado por Ge-ergon (4 intervenciones) el 10/10/2003 21:19:35
Si a lo que te refieres es a pasar parámetros a un programa para "DOS", pues, ciertemente que si se puede.
La manera mas fácil de realizarlo es utilizando las funciones que la
herramienta, Borland Pascal, te brinda.
Para ejemplos busca en el help de Borland Pascal las siguientes funciones:
-ParamStr ()
-ParamCount

Si necesitas hacer pruebas y estas dentro de la interfaz de desarrollo (IDE)
puedes ir al menu -->Run->Parameters, y ahi introducir los parametros.

OK.
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:necesito un experto

Publicado por sese (7 intervenciones) el 11/10/2003 12:12:21
yo trabajo en entorno unix con el fpc.
lo que me piden es crear un programa que uitiliza tres ficheros: dos de entrada y uno de salida; y quieren que estos ficheros se indiquen como parametros en la linea de comandos al invocar el programa para su ejecucion.
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:necesito un experto

Publicado por Ge-ergon (4 intervenciones) el 11/10/2003 14:43:31
Hola
Ciertamente Borland Pascal es una herramienta de desarrollo para sistemas operativos
basados en "DOS". Por lo tanto, la manera de accesar a los parametros esta apegada
segun a las estructuras de datos de "DOS", en este caso seria el PSP (Program Segment Prefix).

Creo que FreePascal (fpc) es una poderosa herramienta, nunca la he utilizado en ninguna de sus versiones,
mucho menos para plataformas basadas en Unix. No conosco nada sobre las estructuras de sistemas tipo Unix.
Pero lo que si es cierto, es que FreePascal debe tener algunas funciones para el manejo de parametros.
Quizas la documentación de FPC tenga alguna referencia o ejemplo.
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:necesito un experto

Publicado por sese (7 intervenciones) el 11/10/2003 19:34:40
gracias por todo. miraré la documentación.
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:necesito un experto

Publicado por Diego Romero (786 intervenciones) el 11/10/2003 21:39:53
Lo confirmo, FPC tiene los procedimientos ParamCount y ParamStr() pues este compilador es ISO standar y el estandar ISO establece esos procedimientos.
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:necesito un experto

Publicado por sese (7 intervenciones) el 12/10/2003 10:09:14
¿Y como se usan esos procedimeintos? Es decir, al crear el programa como hago para llamar a los parametros que invoco en la linea de comandos. He estado buscando en manuales de fpc pero no soy capaz de encontrarlo. SOlo los mencionan.
Gracias por 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

RE:necesito un experto

Publicado por Ge-ergon (4 intervenciones) el 12/10/2003 21:49:45
Uso de la funciones:
-Function ParamCount : Word;
Retorna el numero de parametros que se pasaron al programa desde la linea de comandos

Function ParamStr (index) :string;
El index es un dato tipo Word, devuelve la cadena de caracteres(parametro) especificado por el index.

Ejemplo:
[codigo]

var i:word;
Begin
if ParamCount > 0 then
begin
writeln ('Cantidad de parametros', ParamCount);
writeln ('Parametros:');
for i:=1 to ParamCount do writeln (ParamStr(i));
end
else
writeln ('No se ingresaron parametros');
End.

[codigo]
Nota:ParamStr (0): devuelve la direccion completa y el nombre del programa en ejecución.
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