In D, come passare una stringa vuota? (A gtkD)
Domanda
Utilizzo D1 con Phobos
Ho un campo di inserimento del testo, istanza di gtk.Entry.Entry
,
chiamando setText("")
solleva un errore di tempo di esecuzione
Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
Perché? Sembra essere un problema con la D, ho provato questo:
string empty = "";
assert (empty != null);
my_entry.setText(empty)
Il programma terminato come l'asserzione non riuscita.
Come posso ovviare a questo?
Soluzione
Non credo D differenzia davvero tra "stringa vuota" e "stringa nulla". Una soluzione a basso costo sarebbe setText (" ").
[modifica] Nevermind che. Si tratta di un bug in gtkD. nel trunk / src / glib / Str.d (WM4 grazie per la ricerca di esso), cambiare linea 147 per tornare ""; (Rimuovere il .dup).
Altri suggerimenti
Si dovrebbe scrivere affermare (vuoto! È nullo) al posto di assert (vuoto! = Null)
ho usato "\0"
e tutto sembrava funzionare,
Non so se qualsiasi carattere invisibile ottenuto nel campo di testo, ma questo si basa sul presupposto che una stringa vuota in C è solo \0