Fltk_File_Chooser - zapis nazw plików do tablicy


(smian) #1

Witam,

od trzech tygodni uczę się programowania w C++. Obecnie chcę napisać prostą przeglądarkę do zdjęć PNG. Z pomocą przyszła mi biblioteka FLTK. W chwili obecnej bez problemu wczytuję zdjęcia podając w kodzie nawzę pliku, jednak chcę robić to seryjnie. W tym celu wykorzystuję Fltk_File_Chooser. Napotkałem jednak na problem, którego naprawdę nie rozumiem ](*,) i będę wdzięczny za wszelkie wskazówki...

Po pierwsze definiuję globalną tablicę wzkaźników typu char, która będzie mi przechowywała ścieżki do plików i ich nazwę. Rozmiar na razie dowolny.

const char* two[40];

Następnie wczytuję nazwy plików do powyższej tablicy... i tu zaczyna się problem. Nie rozumiem dlaczego tablica ta jest wypełniona poprawnymi danymi tylko w pierwszej pętli for, a w drugiej otrzymuję już krzaki. Gdzie popełniam błąd?

void input_file(Fl_File_Chooser *w, void *){

   for( int k=1; k <= w->count(); k++ )

    {

      //wpisuję wartości do tablicy

        two[k-1]=w->value(k);

        cout<
    }


    //Tu już niestety mam krzaki - w każdym elemencie tablicy jest ta sama, ostatnia wybrana ścieżka

   for( int k=1; k <= w->count(); k++ )

    {

        cout<
    }


}


int main(void){	

  // .......

   Fl_File_Chooser *fc = new Fl_File_Chooser(".", "Image Files (*.png)", Fl_File_Chooser::MULTI, "Please select image");

   fc->callback(input_file);

   fc->show();	

   //.........

return Fl::run();

Będę wdzięczny za wszelką pomoc i sugestie. Jeśli coś jest niejasnego to przepraszam i proszę o pytania.


([alex]) #2

two[k-1]=strdup(w->value(k));


(smian) #3

alex wielkie dzięki, działa! !!

Sprawę uważam za zamkniętą :smiley: