繁体   English   中英

在Ada中,为什么我打开用于写入文件的尝试失败?

[英]In Ada, why are my attempts to open a file for writing failing?

当我尝试打开要写入的文件时,出现Ada.IO_Exceptions.Name_Error。

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

这是在Windows XP的NTFS分区上。 用户有权创建和写入目录。 文件名在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;

从我的头顶上:

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

顺便说一句,在Create之后该Put_Line有什么意义? 是否由于某些原因成功打开文件还是错误? 似乎可能会产生误导,使人们认为程序实际上成功后无法打开文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM