En Ada, pourquoi mes tentatives d'ouvrir un fichier pour écrire défaut?
Question
Quand je tente d'ouvrir un fichier à écrire, je reçois un Ada.IO_Exceptions.Name_Error.
Le nom du fichier est "C: \ CC_TEST_LOG.TXT". Ce fichier n'existe pas.
Ceci est sous Windows XP sur une partition NTFS. L'utilisateur dispose des autorisations pour créer et écrire dans le répertoire. Le nom de fichier est déjà bien la longueur du trajet 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;
La solution
Du haut de ma tête:
- Au moment
Create
est appelé,file
est pas déjà associé à un autre fichier ouvert est-il? - Quel compilateur utilisez-vous? Gnat est basé sur MinGW, et peut ne pas aimer les fenêtres « C: \ » désignateur. Essayez de prendre cette partie et voir si elle crée le fichier (quelque part).
- Comme mentionné Xandy, le fichier peut-être déjà ouvert par un autre programme. Cet appel
Create
nécessite un accès exclusif au fichier.
En aparté, quel est le point de ce Put_Line juste après la Create
? Est avec succès ouvrir le fichier aussi une erreur pour une raison quelconque? Il semble que cela pourrait peut-être trompeur, faisant penser le programme n'a pas réussi à ouvrir le fichier quand il fait réussi.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow