Anzeige:
Ergebnis 1 bis 5 von 5

Thema: char* Variable in ein GTK Textfeld ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.01.2004
    Ort
    Neuenstein
    Beiträge
    19

    popen Variable in ein GTK Textfeld ?

    Hallo Leute !
    Ich möchte die Variable localmsn in ein gtk_entry eintragen aber nach dem die Variable im Textfeld ist seht an letzter Stelle immer so ein kasten im Textfeld ich glaub ich habe was falsch gemacht nur was ?

    char locamsn[20];
    FILE* number=popen("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print $1 } ' | cut -b 10-20","r");

    fgets(localmsn,sizeof(localmsn),number);
    gtk_entry_set_text (GTK_ENTRY (entry), localmsn);

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.01.2004
    Ort
    Neuenstein
    Beiträge
    19
    Also vieleicht könnt ihr euch nicht viel Vorstellen unter meinem Problem. Hinter der Nummer steht immr so ein Kasten wo 000a drin steht aber wegen einem Datenbankfehler kann ich leider keinen Screenshot machen.

    Hier ist der Quellcode:

    #include <gtk/gtk.h>
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <unistd.h>
    #include <stdio.h>

    using namespace std;

    void connect (GtkWidget *widget,
    GtkWidget *text)

    {
    string device1;
    const gchar *entry_text;
    entry_text = gtk_entry_get_text (GTK_ENTRY (text));
    device1 = entry_text;
    system("/etc/init.d/isdnutils start ");
    system(("/usr/sbin/isdnctrl dial " + device1).c_str());
    }

    void disconnect( GtkWidget *widget,
    GtkWidget *text)
    {
    string device2;
    const gchar *entry_text;
    entry_text = gtk_entry_get_text (GTK_ENTRY (text));
    device2 = entry_text;
    system(("/usr/sbin/isdnctrl hangup " + device2).c_str());
    system("/etc/init.d/isdnutils stop");
    }


    static void quit( GtkWidget *widget,
    GdkEvent *event,
    gpointer data )
    {
    gtk_main_quit ();
    }

    int main( int argc, char *argv[] )
    {


    GtkWidget *window;
    GtkWidget *button1;
    GtkWidget *button2;
    GtkWidget *button3;
    GtkWidget *text;
    GtkWidget *table;

    int id;
    id = getuid();
    if (id!=0)
    {
    printf("You must be root!\n");
    exit(EXIT_FAILURE);
    }

    char localmsn[20];
    FILE* number=popen("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print$1 }' | cut -b 10-20","r");
    fgets(localmsn,sizeof(localmsn),number);


    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    gtk_window_set_title (GTK_WINDOW (window) , "Dial-0.1-alpha");

    gtk_container_set_border_width (GTK_CONTAINER (window), 25);

    table = gtk_table_new (4, 0, TRUE);
    gtk_container_add (GTK_CONTAINER (window), table);

    text = gtk_entry_new();
    gtk_entry_set_max_length (GTK_ENTRY (text), 15);
    gtk_entry_set_text (GTK_ENTRY (text), localmsn);


    button1 = gtk_button_new_with_label ("connect");
    button2 = gtk_button_new_with_label ("disconnect");
    button3 = gtk_button_new_with_label ("exit");

    gtk_table_attach_defaults (GTK_TABLE (table), button1, 0, 1, 0, 1);
    gtk_widget_show(button1);
    gtk_table_attach_defaults (GTK_TABLE (table), button2, 0, 1, 1, 2);
    gtk_widget_show(button2);
    gtk_table_attach_defaults (GTK_TABLE (table), button3, 0, 1, 2, 3);
    gtk_widget_show(button3);
    gtk_table_attach_defaults (GTK_TABLE (table), text, 0, 1, 3, 4);
    gtk_widget_show(text);


    g_signal_connect (G_OBJECT (button1), "clicked",
    G_CALLBACK (connect),
    (gpointer) text);
    g_signal_connect (G_OBJECT (button2), "clicked",
    G_CALLBACK (disconnect),
    (gpointer) text);
    g_signal_connect (G_OBJECT (button3), "clicked",
    G_CALLBACK (quit), NULL);

    g_signal_connect (G_OBJECT (window), "delete_event",
    G_CALLBACK (quit), NULL);


    gtk_widget_show (table);
    gtk_widget_show (window);
    gtk_main ();
    return 0;
    }

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    000a ist ein Newline-Zeichen (\n). Entweder du änderst dein egrep Aufruf so das keine neue Zeile danach ausgegeben wird oder du schneidest beim String das letzte Zeichen weg.

    HTH

    Tobias

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.01.2004
    Ort
    Neuenstein
    Beiträge
    19
    Und wie kann das aussehen ?

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.01.2004
    Ort
    Neuenstein
    Beiträge
    19
    Also ich habe jetzt schon alles mögliche versucht '\n' wohin zu setzten aber es geht einfach nicht. Und in popen kann ich das doch nicht einfach reinmachen, weils nen Systembefehl ist. Es wird doch jemand wissen wo ich das hinsetzten muss !!!!!!!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •