In Ada, warum sind meine Versuche, eine Datei zu öffnen, damit das Nicht zu schreiben?

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

  •  19-09-2019
  •  | 
  •  

Frage

Wenn ich versuche, eine Datei zu öffnen, um zu schreiben, um ich eine Ada.IO_Exceptions.Name_Error erhalten.

Der Dateiname lautet "C: \ CC_TEST_LOG.TXT". Diese Datei ist nicht vorhanden.

Dies ist unter Windows XP auf einer NTFS-Partition. Der Benutzer hat Berechtigungen für das Verzeichnis zu erstellen und zu schreiben. Der Dateiname ist auch unter dem WIN32 max Weglänge.

 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;
War es hilfreich?

Lösung

Aus der Spitze von meinem Kopf:

  • Zu der Zeit Create aufgerufen wird, wird file nicht bereits mit einer anderen geöffneten Datei zugeordnet ist es?
  • Welche Compiler verwenden Sie? Gnat ist mingw-basiert und kann nicht wie die Fenster „C: \“ Bezeichner. Versuchen Sie, dass ein Teil herausgenommen und sehen, ob er die Datei erstellt (irgendwo).
  • Wie Xandy erwähnt, könnte die Datei bereits von einem anderen Programm geöffnet werden. Der Create Anruf erfordert exklusiven Zugriff auf die Datei.

Als beiseite, was ist der Sinn dieser Put_Line direkt nach dem Create? Ist erfolgreich die Datei auch einen Fehler aus irgendeinem Grunde öffnen? Es scheint, wie es vielleicht irreführend sein könnte, so dass man denken, das Programm nicht die Datei zu öffnen, wenn es tatsächlich gelungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top