In Ada, perché sono i miei tentativi di aprire un file per la scrittura di fallimento?
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;
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