Verzeichnisse filtern mit glib



  • Hallo

    Ich habe gerade mit C b.z.w GTK+ angefangen.

    Möchte aus einen geöffneten Verzeichnis die Verzeichnisse filtern.
    _________________________________________________________________

    GDir *dir;
    const gchar *homepath = g_get_home_dir();
    const gchar *dirpath;
    dir = g_dir_open(homepath,0,NULL);

    while((dirpath = g_dir_read_name(dir)))
    {

    if((g_file_test(dirpath,G_FILE_TEST_IS_DIR)))
    {
    g_print("%s\n",dirpath);
    }

    }
    g_dir_close(dir);

    ________________________________________________________________

    Leider gibt g_print garnichts aus. Brauch nur einen kleinen Denkanstoss.

    MfG
    Klaus



  • Liefert g_file_test() überhaupt einmal true zurück? (-> Debugger + Hilfsvariable)
    Sind in dem Verzeichnis, dass du liest, überhaupt andere Verzeichnisse?



  • Hallo

    Ich benutze Linux und habe daher einen komplizierten Debugger(gdb) zur Verfügung.
    Da ich noch am Anfang von C stehen weiss ich nicht wie eine Hilfsvariable eingesetzt wird. Wäre schön wenn du mir das erklärst. Im Homeverzeichnis befinden sich auch Verzeichnisse.

    MfG
    Klaus



  • Mit Hilfsvariable meine ich eigentlich nur, dass du das Ergebnis von g_file_test() in einer Variable speicherst; obwohl du das eigentlich nicht bräuchtest, aber im Debugger kann man sich meistens nur die Werte von Variablen anzeigen lassen:

    int h;
    ...
    while((dirpath = g_dir_read_name(dir)))
    {
      h = g_file_test(dirpath,G_FILE_TEST_IS_DIR);
      if(h)
      {
        g_print("%s\n",dirpath);
      }
    }
    

    Im Debugger musst du dir dann also einfach den Wert von h anzeigen, nachdem die Funktion g_file_test() ausgeführt wurde. Mit dem Debugger selber kannst du auch Schritt für Schritt verfolgen was ausgeführt wird. Alles in allem ein wirklich praktisches Werkzeug ;).



  • Hallo AJ

    Danke für deine Hilfe. Habe auch herausgefunden warum die Verzeichnisse nicht ausgegeben. Es liegt daran das g_file_test im aktuellen Verzeichnis die Daten prüft während ich versucht hatte mittels "const gchar *homepath = g_get_home_dir(); " im Homeverzeichnis des User die Daten zu prüfen.

    MfG
    Klaus


Anmelden zum Antworten