En D, comment passer une chaîne vide? (À gtkD)
Question
Utilisation de D1 avec phobos
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 cela?
La solution
Je ne pense pas que D différencie vraiment entre « chaîne vide » et « string null ». Une solution pas cher serait setText ( » « ).
[modifier] Peu importe que. Il est un bogue dans gtkD. dans le coffre / src / glib / Str.d (grâce WM4 pour trouver ci), la ligne de changement 147 pour revenir ""; (Supprimer la .dup).
Autres conseils
Vous devriez écrire assert (vide! Est nulle) au lieu de assert (vide! = Null)
je "\0"
et il semblait travailler,
Je ne sais pas si un caractère invisible est entré dans le champ de texte, mais ceci est basé sur l'hypothèse qu'une chaîne vide dans C est juste \0