2

書き込むファイルを開こうとすると、Ada.IO_Exceptions.Name_Errorが発生します。

ファイル名は「C:\CC_TEST_LOG.TXT」です。このファイルは存在しません。

これは、NTFSパーティション上のWindowsXPにあります。ユーザーには、ディレクトリを作成して書き込むための権限があります。ファイル名は、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 に答える