In Ada, warum sind meine Versuche, eine Datei zu öffnen, damit das Nicht zu schreiben?
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;
Lösung
Aus der Spitze von meinem Kopf:
- Zu der Zeit
Create
aufgerufen wird, wirdfile
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