代码之家  ›  专栏  ›  技术社区  ›  hasen

在D语言中,如何传递空字符串?(到GTKD)

  •  5
  • hasen  · 技术社区  · 15 年前

    与Phobos一起使用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 回复  |  直到 15 年前
        1
  •  5
  •   FeepingCreature    15 年前

    我认为D并没有真正区分“空字符串”和“空字符串”。一个便宜的解决方法是settext(“”)。

    [编辑]不允许这样做。这是GTKD的一个漏洞。在trunk/src/glib/str.d中(感谢wm4找到它),将第147行更改为返回“;”(删除.dup)。

        2
  •  3
  •   stanleyxu2005    15 年前

    你应该写断言(空!为空)而不是断言(空!=空)

        3
  •  1
  •   hasen    15 年前

    我用过 "\0" 它似乎起作用了,

    我不知道文本字段中是否有任何不可见的字符,但这是基于C中的空字符串只是 \0