(Linux/Unix) Brauche Hilfe mit GTK+



  • Ich habe eine Callback funktion welche auf ein Change Signal eines Textfeldes aufgerufen wird. Das Problem ist das ich scheinbar keinen Text aus dem Textfeld lesen kann. Jedesmal wenn ich den String, welcher mit "gtk_editable_get_chars()"
    ausgelesen wird, in einem anderen Textfeld anzeigen lassen will, kriege ich einen GPF und das Programm stürzt ab.

    Hier mal der code des SignalHandlers aus Callbacks.c :

    void
    on_entryVokAbfr_changed                (GtkEditable     *editable,
                                            gpointer         user_data)
    {
        int rc;
        GtkWidget *entryEingabe, *textUebers;
        gchar *eintrag;
        gchar grmbl[] = "GRMBL";
    
        /* Handles auf die beiden Text widgets */
        entryEingabe = lookup_widget(GTK_WIDGET(editable), "entryVokAbfr");
        textUebers = lookup_widget(GTK_WIDGET(editable), "textAbfrage");
    
        /* Text aus dem Widget auslesen welches das Change signal ausgelöst hat */
        eintrag = (gchar *)gtk_editable_get_chars(GTK_EDITABLE(entryEingabe), 0, -1);
    
        /* Eventuellen Text aus dem 2. TextWidget löschen */
        gtk_text_set_editable (GTK_TEXT (textUebers), TRUE);
        gtk_editable_delete_text (GTK_TEXT (textUebers), 0, -1);
        gtk_text_set_editable (GTK_TEXT (textUebers), FALSE);
    
        /* nur zum test */
        gtk_text_insert (GTK_TEXT (textUebers), NULL, NULL, NULL, "Blah blub blubber", -1);
        /* und noch einer */
        gtk_text_insert (GTK_TEXT (textUebers), NULL, NULL, NULL, grmbl, -1);
        /* Das hier bringt das Programm zum absturz */
        gtk_text_insert (GTK_TEXT (textUebers), NULL, NULL, NULL, eintrag, -1);
        /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */
    
        if(init_db == 0)
            db_file_init();
    
        rc = eintrag_suchen(eintrag);
        if(rc > 0)
        {
            gtk_text_insert(GTK_TEXT(textUebers), NULL,NULL,NULL,z_eintraege ,-1);
        }
        else if(rc == 0)
        {
            gtk_text_insert(GTK_TEXT(textUebers), NULL, NULL, NULL, "Kein Eintrag gefunden", -1);
        }
        else if(rc < 0)
        {
            gtk_text_insert(GTK_TEXT(textUebers), NULL, NULL, NULL,"Speicher - Fehler", -1);
        }
    
        g_free(eintrag);
    }
    


  • Ich verschieb das mal in das Linux Forum, da dort mehr Leute mit GTK+ Erfahrung sein sollten.


Anmelden zum Antworten