In Ada, perché sono i miei tentativi di aprire un file per la scrittura di fallimento?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Quando si tenta di aprire un file di scrivere a ottengo un Ada.IO_Exceptions.Name_Error.

Il nome del file è "C: \ CC_TEST_LOG.TXT". Questo file non esiste.

Questo è il Windows XP in una partizione NTFS. L'utente dispone di autorizzazioni per creare e scrivere nella directory. Il nome del file è ben al di sotto della lunghezza massima WIN32 percorso.

 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;
È stato utile?

Soluzione

Al largo della parte superiore della mia testa:

  • Al momento Create si chiama, file non è già associato a un altro file aperto è?
  • Cosa compilatore stai usando? Gnat è mingw-based, e potrebbe non come le finestre "C: \" designatore. Prova a prendere quella parte e vedere se si crea il file (da qualche parte).
  • Come accennato Xandy, il file potrebbe essere già aperto da un altro programma. Quella chiamata Create richiede l'accesso esclusivo al file.

Per inciso, qual è il punto di che Put_Line subito dopo la Create? successo di aprire il file anche un errore per qualche motivo? Sembra che potrebbe forse essere fuorviante, facendo pensare il programma è riuscito ad aprire il file quando in realtà è riuscito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top