في ADA، لماذا محاولاتي لفتح ملف لفشل الكتابة؟
سؤال
عندما أحاول فتح ملف للكتابة ليحصل على 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
ب يكون بنجاح فتح الملف أيضا خطأ لسبب ما؟ يبدو أنه قد يكون مضللا، مما يجعل المرء يعتقد أن البرنامج فشل في فتح الملف عند نجاحه بالفعل.
لا تنتمي إلى StackOverflow