Programación General > ADA
Tratamiento De Ficheros: Errores De Compilacion
(1/1)
forenaits:
Estoy haciendo una práctica y no consigo compilar por culpa de los errores. El último es del tipo
--- Citar ---practica_uno-copia_imagen.adb:48:09: actual for "File" must be a variable
--- Fin de la cita ---
Se trata de un subprograma separate (copia_imagen.adb) del programa principal (practica_uno.adb), os muestro como lo tengo declarado:
--- Código: Text ---PROCEDURE copia_imagen(Ent: in file_type; Sal: out file_type) IS SEPARATE;
Llamada al subprograma:
--- Código: Text --- copia_imagen(F,S);
Dentro del subprograma:
--- Código: Text ---separate (practica_uno)procedure copia_imagen (Ent: in file_type; Sal: out file_type) isBEGIN Open(Ent,In_File,"recullfotos_temp.txt"); ... Close(Ent);END copia_imagen;
¿Se os ocurre a que se debe el error y como puedo solucionarlo? Gracias de antemano.
Gneuromante:
--- Citar ---actual for "File" must be a variable
--- Fin de la cita ---
Este error quiere decir que está pasando una constante o un parámetro in (que ambos son vistas constantes de un objeto) donde se necesita una variable porque se hace una asignación. En este caso es porque el parámetro de tipo file_type en Open es de modo in out y por tanto Ent debe ser de modo in out.
Recuerda que para manejar el fichero las llamadas necesitan poder escribir en el manejador del fichero, es decir en los objetos de tipo file_type. Sin embargo, parece que te has liado con el concepto de fichero de entrada y fichero de salida. Puesto que ambos los tendrás que abrir, los tendrías que pasar como in out. O mejor pasar los nombres de los archivos como parámetros in y las variables file_type las declaras dentro de copia_imagen.
forenaits:
Muchas gracias, ya esta solucionado.
--- Citar ---O mejor pasar los nombres de los archivos como parámetros in y las variables file_type las declaras dentro de copia_imagen.
--- Fin de la cita ---
¿Me podrías poner un ejemplo?
**No me funciona la mensajeria privada ni el correo :blink:
Navegación
Ir a la versión completa