2

当我尝试打开要写入的文件时,我得到一个 Ada.IO_Exceptions.Name_Error。

文件名为“C:\CC_TEST_LOG.TXT”。该文件不存在。

这是在 NTFS 分区上的 Windows XP 上。用户有权创建和写入目录。文件名远低于 WIN32 最大路径长度。

 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;
4

1 回答 1

1

在我的头顶上:

  • Create调用的时候,file是不是已经与另一个打开的文件相关联了是吗?
  • 你用的是什么编译器?Gnat 是基于 mingw 的,可能不喜欢 windows 的“C:\”指示符。尝试取出该部分,看看它是否创建了文件(某处)。
  • 正如 Xandy 提到的,该文件可能已被另一个程序打开。该Create调用需要对文件的独占访问权限。

顺便说一句,在 ?之后的那个 Put_Line 有什么意义Create由于某种原因,成功打开文件是否也是错误?似乎它可能具有误导性,让人认为程序在实际成功时未能打开文件。

于 2010-03-10T13:51:32.527 回答