matiko101 Temat założony przez niniejszego użytkownika |
Gtk_text_buffer_get_text - błąd Itera lub bufora » 2014-02-06 21:04:16 Witam ponownie, Heh dwa tematu wciągu dwóch dni :D Siedzę i kombinuję od 2 godzin, ale nie mam pomysłu co może być nie tak: http://zapodaj.net/652f86dd99091.jpg.html Kawałek kodu: int zmiana_nazwy( GtkWidget * button, gpointer dane ) { if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ) ) ) { Okna * window = static_cast < Okna *>( dane ); for( int i = 0; i != 1; i++ ) { window->nazwa[ i ] = gtk_text_buffer_get_text( window->bufor[ i ], & window->koniec[ i ], & window->start[ i ], true ); cout << window->nazwa[ i ] << endl; } } }
for( int i = 0, j = 0; i != 6; i++ ) { getline( plik_nazwy, window->nazwa_globalna[ i ] ); window->view[ i ] = gtk_text_view_new(); window->bufor[ i ] = gtk_text_view_get_buffer( GTK_TEXT_VIEW( window->view[ i ] ) ); gtk_text_buffer_get_end_iter( window->bufor[ i ], & window->koniec[ i ] ); gtk_text_buffer_get_start_iter( window->bufor[ i ], & window->start[ i ] ); gtk_text_buffer_insert( window->bufor[ i ], & window->koniec[ i ], window->nazwa_globalna[ i ].c_str(), - 1 );
Domyślam się, że w właśnie w tym kawałku jest problem, ale nie mam pojęcia jaki. Może źle używam gtk_text_view :( |
|
czosnek17 |
» 2014-02-06 21:32:02 W funkcji gtk_text_buffer_get_text najpierw podaje się bufor start, a potem koniec. Masz to na odwrót. gtk_text_buffer_insert( window->bufor[ i ], & window->koniec[ i ] Tu jesteś pewny 2 argumentu? Sprawdź w których dokładnie linijkach są błędy (ja to robię wypisując tekst). |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-02-06 22:34:56 Właśnie na początku miałem najpierw start potem koniec, ale tez nie działało.Tego drugiego argumentu nie jestem pewien, bo nie do końca rozumiem działanie tej funkcji tzn. Jej argumentów.czytałem dokumentację ale mój angielski nie jest na tak wysokim poziomie i nie wszystko zrozumiałem :P EDIT: Dlaczego mój temat został zamknięty ? EDIT: window->nazwa[ i ] = gtk_text_buffer_get_text( window->bufor[ i ], & window->koniec[ i ], & window->start[ i ], true ); tu jest błąd tzn. przy tym wypisuje ten komunikat |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-02-07 15:14:30 refresh |
|
czosnek17 |
» 2014-02-07 17:14:28 Przekazuj itery w odpowiedniej kolejności. To działa: GtkTextIter its; GtkTextIter itk; gtk_text_buffer_get_start_iter( bufor, & its ); gtk_text_buffer_get_end_iter( bufor, & itk ); gchar * tekst = gtk_text_buffer_get_text( bufor, & its, & itk, FALSE ); cout << tekst << endl;
I jeszcze raz popacz tu http://cpp0x.pl/kursy/Kurs-GTK+-C++/GtkTextView/380 |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-02-07 17:45:46 Dziękuję za pomoc getline( plik_nazwy, window->nazwa_globalna[ i ] ); window->view[ i ] = gtk_text_view_new(); window->bufor[ i ] = gtk_text_view_get_buffer( GTK_TEXT_VIEW( window->view[ i ] ) ); gtk_text_buffer_get_iter_at_offset( window->bufor[ i ], & window->iter[ i ], 0 ); gtk_text_buffer_insert( window->bufor[ i ], & window->iter[ i ], window->nazwa_globalna[ i ].c_str(), - 1 ); gtk_text_buffer_get_start_iter( window->bufor[ i ], & window->start[ i ] ); gtk_text_buffer_get_end_iter( window->bufor[ i ], & window->koniec[ i ] );
Take musi być ułożenie kodu inaczej wywalało błąd |
|
« 1 » |