En Ada, pourquoi mes tentatives d'ouvrir un fichier pour écrire défaut?

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

  •  19-09-2019
  •  | 
  •  

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;
Était-ce utile?

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