En Ada, ¿por qué son mis intentos de abrir un archivo para escritura falla?

StackOverflow https://stackoverflow.com/questions/2413549

  •  19-09-2019
  •  | 
  •  

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;
¿Fue útil?

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
scroll top