في د، كيف تمر سلسلة فارغة؟ (إلى GTKD)
سؤال
باستخدام D1 مع phobos
لدي حقل إدخال نصي، مثيل gtk.Entry.Entry
,
دعا setText("")
يثير خطأ وقت التشغيل
Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
لماذا ا؟ يبدو أن مشكلة مع D، حاولت هذا:
string empty = "";
assert (empty != null);
my_entry.setText(empty)
تم إنهاء البرنامج كما فشل التأكيد.
كيف يمكنني العمل حول هذا؟
المحلول
لا أعتقد أن D يميز حقا بين "سلسلة فارغة" و "سلسلة فارغة". الحل البديل الرخيص سيكون starnext ("").
تحرير] لا يحدث ذلك. إنه خطأ في GTKD. في Trunk / SRC / GLIB / Str.D (شكرا WM4 للعثور عليها)، تغيير خط 147 للعودة ""؛ (إزالة .dup).
نصائح أخرى
يجب أن تكتب تأكيدا (فارغ! فارغ) بدلا من تأكيد (فارغ! = NULL)
انا إستعملت "\0"
ويبدو أن العمل،
لا أعرف ما إذا كان أي شخصية غير مرئية دخلت في حقل النص، ولكن هذا يعتمد على افتراض أن سلسلة فارغة في C هي فقط \0
لا تنتمي إلى StackOverflow