En Ada, ¿por qué son mis intentos de abrir un archivo para escritura falla?
Pregunta
Cuando intento abrir un archivo para escribir en recibo un Ada.IO_Exceptions.Name_Error.
El nombre del archivo es "C: \ CC_TEST_LOG.TXT". no existe este archivo.
Este es el Windows XP en una partición NTFS. El usuario tiene permisos para crear y escribir en el directorio. El nombre de archivo es bien bajo la longitud del camino WIN32 max.
name_2 : String := "C:\CC_TEST_LOG.TXT"
if name_2'last > name_2'first then
begin
Ada.Text_IO.Create(file, Ada.Text_IO.Out_File, name_2);
Ada.Text_IO.Put_Line(
"CC_Test_Utils: LogFile: ERROR: Open, File "
& name_2);
return;
exception
when The_Error : others =>
Ada.Text_IO.Put_Line(
"CC_Test_Utils: LogFile: ERROR: Open Failed; "
& Ada.Exceptions.Exception_Name(The_Error)
& ", File " & name_2);
end;
end if;
Solución
De la parte superior de mi cabeza:
- En la
Create
tiempo se llama,file
no está asociado con otro archivo abierto es? - ¿Qué compilador está usando? Mosquito está basado en MinGW, y no le gusta la ventanas "C: \" designador. Trate de tomar esa parte y ver si se crea el archivo (en algún lugar).
- Como se ha mencionado Xandy, el archivo podría estar ya abierto por otro programa. Esa llamada
Create
requiere acceso exclusivo al archivo.
Como acotación al margen, ¿cuál es el punto de que Put_Line justo después de la Create
? Es éxito abrir el archivo también un error por alguna razón? Parece que tal vez podría ser engañoso, haciendo pensar el programa no ha podido abrir el archivo cuando lo que realmente sucedió.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow