2009-05-31 13 views
5

Utilisation de D1 avec phobosEn D, comment passer une chaîne vide? (À gtkD)

J'ai un champ de saisie de texte, instance de gtk.Entry.Entry,

appelant setText("") déclenche une erreur de temps d'exécution

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

Pourquoi? Il semble être un problème avec D, j'ai essayé ceci:

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

Le programme a pris fin comme l'affirmation a échoué.

Comment puis-je contourner le problème?

Répondre

5

Je ne pense pas que D différencie réellement "chaîne vide" et "chaîne nulle". Une solution de contournement bon marché serait setText ("").

[modifier] Ça ne va pas. C'est un bug dans gtkD. dans trunk/src/glib/Str.d (merci wm4 pour le trouver), changez la ligne 147 pour retourner ""; (supprimez le .dup).

1

J'utilisé "\0" et il semblait travailler,

Je ne sais pas si un caractère invisible est entré dans le champ de texte, mais il est basé sur l'hypothèse qu'une chaîne vide dans C est juste \0

3

Vous devez écrire assert (vide! Is null) au lieu de assert (vide! = Null)