في ADA، لماذا محاولاتي لفتح ملف لفشل الكتابة؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

عندما أحاول فتح ملف للكتابة ليحصل على ada.io_exceptions.name_error.

اسم الملف هو "C: cc_test_log.txt". هذا الملف غير موجود.

هذا على نظام التشغيل Windows XP على قسم NTFS. المستخدم لديه أذونات لإنشاء والكتابة إلى الدليل. اسم الملف جيد تحت طول مسار Win32 Max.

 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;
هل كانت مفيدة؟

المحلول

خارج الجزء العلوي من رأسي:

  • في الموعد Create يسمى، file لم يرتبط بالفعل مع ملف مفتوح آخر هو؟
  • ما المترجم الذي تستخدمه؟ GNAT مقرها MINGW، وقد لا يعجبذ Windows "C: ". حاول أخذ هذا الجزء ثم معرفة ما إذا كان يخلق الملف (في مكان ما).
  • كما ذكر Xandy، قد يتم بالفعل فتح الملف من قبل برنامج آخر. الذي - التي Create تتطلب المكالمة الوصول الحصري إلى الملف.

جانبا، ما هي نقطة هذا put_line مباشرة بعد Createب يكون بنجاح فتح الملف أيضا خطأ لسبب ما؟ يبدو أنه قد يكون مضللا، مما يجعل المرء يعتقد أن البرنامج فشل في فتح الملف عند نجاحه بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top