Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Gtk_text_buffer_get_text - błąd Itera lub bufora

Ostatnio zmodyfikowano 2014-02-07 17:45
Autor Wiadomość
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:

C/C++
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++ ) // przy 6 sie wylacza
        {
            window->nazwa[ i ] = gtk_text_buffer_get_text( window->bufor[ i ], & window->koniec[ i ], & window->start[ i ], true );
            cout << window->nazwa[ i ] << endl;
        }
    }
}

C/C++
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 :(
P-104128
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).
P-104131
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
P-104144
matiko101
Temat założony przez niniejszego użytkownika
» 2014-02-07 15:14:30
refresh
P-104179
czosnek17
» 2014-02-07 17:14:28
Przekazuj itery w odpowiedniej kolejności. To działa:
C/C++
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
P-104187
matiko101
Temat założony przez niniejszego użytkownika
» 2014-02-07 17:45:46
Dziękuję za pomoc

C/C++
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
P-104189
« 1 »
  Strona 1 z 1