В D, как передать пустую строку? (в gtkD) - PullRequest
5 голосов
/ 31 мая 2009

Использование D1 с Фобосом

У меня есть поле ввода текста, экземпляр gtk.Entry.Entry,

вызов setText("") вызывает ошибку времени выполнения

Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed

Почему? Кажется, проблема с D, я попробовал это:

string empty = "";
assert (empty != null);
my_entry.setText(empty)

Программа завершилась, поскольку утверждение не удалось.

Как я могу обойти это?

Ответы [ 3 ]

5 голосов
/ 31 мая 2009

Я не думаю, что D действительно различает «пустую строку» и «пустую строку». Дешевый обходной путь будет setText ("").

[править] Не обращайте на это внимания. Это ошибка в gtkD. в trunk / src / glib / Str.d (спасибо wm4 за его поиск), измените строку 147, чтобы она возвращала ""; (удалить .dup).

3 голосов
/ 01 июня 2009

Вы должны написать assert (пусто! Равно нулю) вместо assert (пусто! = Пусто)

1 голос
/ 31 мая 2009

Я использовал "\0", и это, кажется, работает,

Я не знаю, попал ли какой-нибудь невидимый символ в текстовое поле, но это основано на предположении, что пустая строка в C равна \0

...