2009-05-31 69 views
5

使用與火衛一在D中,如何傳遞一個空字符串? (以gtkD)

我有一個文本輸入領域,例如gtk.Entry.Entry D1,

調用setText("")產生運行時錯誤

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

爲什麼?這似乎是D的問題,我試過這個:

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

程序因斷言失敗而終止。

我該如何解決這個問題?

回答

5

我不認爲D真的區分「空字符串」和「空字符串」。廉價的解決方法是setText(「」)。

沒關係。這是gtkD中的一個錯誤。在trunk/src/glib/Str.d中(感謝wm4找到它),將第147行改爲「」; (刪除.dup)。

1

我用"\0"和它似乎工作,

我不知道是否有不可見字符鑽進文本字段,但是這是基於這樣的假設,在C空字符串就是\0

3

你應該寫assert(empty!爲null)而不是斷言(empty!= null)

相關問題