Seite 1 von 1
GTK+ Entry in Char
Verfasst: Mi Feb 11, 2009 8:09 pm
von +Fuss+
Mit dem Vokabel-Spiel in GTK+ geht's voran.
Jetzt wollte ich eigentlich nur aus einem GTK+ Entry den Text in einen char kopieren:
die char's ist als globale Var angelegt:
dann die entsprechende Codezeile:
Code: Alles auswählen
//Mannschaftsnamen auslesen
mann_links = gtk_entry_get_text(GTK_ENTRY(entry_links));
mann_rechts = gtk_entry_get_text(GTK_ENTRY(entry_rechts));
die char's werden dann als Labels für einen Button genommen.
Aber auf dem einen Button steht eine Verzeichnis-Angabe und auf dem anderen unleserliche Zeichen.
Woran kann das liegen?
MfG Fuss
Re: GTK+ Entry in Char
Verfasst: Mi Feb 11, 2009 8:21 pm
von cloidnerux
Es kann daran liegen, das mit gtk_entry_get_text du einen Speziellen gtkString bekommst, der Unicodestandart oder andere Spezialldinge benutzt und dein Compiler die Konveration verschweigt.
Re: GTK+ Entry in Char
Verfasst: Mi Feb 11, 2009 8:43 pm
von +Fuss+
Dann müsste das ein "gchar" sein. Ich probier das mal, obwohl char - gchar dasselbe ist.
Gerade noch gemerkt: gibt eine Fehlermeldung wegen UTF-8 String irgendwas
Probiert mit gchar (also nur beim erstellen der Var ein 'g' hinzugefügt):
Dann kommt eine Fehlermeldung von Code-Blocks / GCC:
Code: Alles auswählen
/home/****/Programmierung/Vokabeln/main.c:176: Warnung: Zuweisung streicht Qualifizierer von Zeiger-Zieltyp
MfG Fuss
Re: GTK+ Entry in Char
Verfasst: Mi Feb 11, 2009 10:09 pm
von Xin
+Fuss+ hat geschrieben:Dann kommt eine Fehlermeldung von Code-Blocks / GCC:
Code: Alles auswählen
/home/****/Programmierung/Vokabeln/main.c:176: Warnung: Zuweisung streicht Qualifizierer von Zeiger-Zieltyp
Klingt, als ob Du Dich nicht um die Const-Correctness kümmerst.
Re: GTK+ Entry in Char
Verfasst: Do Feb 12, 2009 11:37 am
von fat-lobyte
+Fuss+ hat geschrieben:Mit dem Vokabel-Spiel in GTK+ geht's voran.
Jetzt wollte ich eigentlich nur aus einem GTK+ Entry den Text in einen char kopieren:
die char's ist als globale Var angelegt:
dann die entsprechende Codezeile:
Code: Alles auswählen
//Mannschaftsnamen auslesen
mann_links = gtk_entry_get_text(GTK_ENTRY(entry_links));
mann_rechts = gtk_entry_get_text(GTK_ENTRY(entry_rechts));
die char's werden dann als Labels für einen Button genommen.
Aber auf dem einen Button steht eine Verzeichnis-Angabe und auf dem anderen unleserliche Zeichen.
Woran kann das liegen?
MfG Fuss
Wer Lesen kann ist klar im Vorteil:
http://library.gnome.org/devel/gtk/unst ... y-get-text
Da steht klipp und klar:
GNOME Documentation Library hat geschrieben:Returns :
a pointer to the contents of the widget as a string. This string points to internally allocated storage in the widget and must not be freed, modified or stored.
Das bedeutet, dass der Text irgendwo intern gespeichert wird. Wenn du danach gtk funktionen aufrufst (oder wenn sie von woanders aufgerufen werden), kann GTK entscheiden dass der speicher nicht mehr benötigt wird und räumt ihn Frei.
Was dabei rauskommt ist, dass du einen undefinierten String erhälst.
Du musst einfach nur den String den du erhälst gleich wieder in einem anderen abspeichern, etwa so:
google zweiter treffer hat geschrieben:Code: Alles auswählen
gchar *id;
id = g_strdup (gtk_entry_get_text (GTK_ENTRY (widget)));
/* mach hier was mit id */
/* und dann id wieder freigeben */
g_free (id);
Das alles hab ich übrigens mit 2 minuten googeln herausgefunden, ohne eine Ahnung von GTK zu haben. Bitte in Zukunft zuerst die Dokumentation der Funktion beachten, dann erst Fragen stellen!
Re: GTK+ Entry in Char
Verfasst: Do Feb 12, 2009 11:39 am
von +Fuss+
also:
1. hab ich den gchar gar nicht als "const" deklariert.
2. Was kann ich gegen den Fehler mit der Zuweisung unternehmen?
Ich hatte das Problem schonmal und habe es nicht richtig gelöst bekommen.
MfG Fuss
EDIT: ich sehe grade erst, dass noch wer geschrieben hat, ich lese mir das jetzt mal durch. Danke für die Hilfe
Re: GTK+ Entry in Char
Verfasst: Do Feb 12, 2009 11:41 am
von fat-lobyte
+Fuss+ hat geschrieben:also:
1. hab ich den gchar gar nicht als "const" deklariert.
2. Was kann ich gegen den Fehler mit der Zuweisung unternehmen?
Ich hatte das Problem schonmal und habe es nicht richtig gelöst bekommen.
MfG Fuss
Ein guter anfang wäre es meinen Post zu lesen.
Re: GTK+ Entry in Char
Verfasst: Do Feb 12, 2009 2:48 pm
von +Fuss+
Nochmal danke für den Tipp, hat genauso geklappt wie du gesagt hast.
In dem Tutorial in dem ich das gelesen habe stand es so drin:
Code: Alles auswählen
gchar *text=gtk_entry_get_text(GTK_ENTRY(widget));
...
label = gtk_label_new(text);
Was ja, wie ich jetzt weiß, falsch ist.
MfG Fuss