Загрузка текста в GtkTextView

Модератор: Модераторы разделов

ironclad
Сообщения: 14
ОС: Fedora 7 x86-64

Загрузка текста в GtkTextView

Сообщение ironclad »

Есть необходимость загрузить файл GtkTextView, ниже привожу кусок кода где эо и пытаюсь делать. Проблема в том что функция чтения из файла read возвращает -1, при том что файл открывается нормально, дескриптор файловый больше 0 (проверял в отладчике). Вопрос следовательно такой: что в коде неверно?

Код:

void on_button2_clicked (GtkButton *button, gpointer user_data) { GtkWidget * filechooserdialog1; filechooserdialog1=create_filechooserdialog1(); if (gtk_dialog_run(GTK_DIALOG(filechooserdialog1))==GTK_RESPONSE_OK) { int fd,len; char buf[1024]; GtkWidget * toplevel=GTK_WIDGET(gtk_widget_get_toplevel(GTK_WIDGET(button))); GtkTextView * textview1=GTK_TEXT_VIEW(lookup_widget(toplevel,"textview1")); char * filename=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooserdialog1)); GtkTextBuffer * textbuffer=gtk_text_view_get_buffer(textview1); gtk_text_buffer_set_text(textbuffer,"",0); fd=open(filename, "r"); while ((len=read(fd,buf,1024))>0) gtk_text_buffer_insert_at_cursor(textbuffer,buf,len); close(fd); g_free(filename); } gtk_widget_destroy(filechooserdialog1); }
Спасибо сказали:
MiK13
Сообщения: 1290
ОС: Linux Debian

Re: Загрузка текста в GtkTextView

Сообщение MiK13 »

ironclad писал(а):
28.11.2008 15:02
Есть необходимость загрузить файл GtkTextView, ниже привожу кусок кода где эо и пытаюсь делать. Проблема в том что функция чтения из файла read возвращает -1, при том что файл открывается нормально, дескриптор файловый больше 0 (проверял в отладчике). Вопрос следовательно такой: что в коде неверно?

Код:

void on_button2_clicked (GtkButton *button, gpointer user_data) { GtkWidget * filechooserdialog1; filechooserdialog1=create_filechooserdialog1(); if (gtk_dialog_run(GTK_DIALOG(filechooserdialog1))==GTK_RESPONSE_OK) { int fd,len; char buf[1024]; GtkWidget * toplevel=GTK_WIDGET(gtk_widget_get_toplevel(GTK_WIDGET(button))); GtkTextView * textview1=GTK_TEXT_VIEW(lookup_widget(toplevel,"textview1")); char * filename=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooserdialog1)); GtkTextBuffer * textbuffer=gtk_text_view_get_buffer(textview1); gtk_text_buffer_set_text(textbuffer,"",0); fd=open(filename, "r"); while ((len=read(fd,buf,1024))>0) gtk_text_buffer_insert_at_cursor(textbuffer,buf,len); close(fd); g_free(filename); } gtk_widget_destroy(filechooserdialog1); }

А что такое

Код: Выделить всё

fd=open(filename, "r");
?
Спасибо сказали:
ironclad
Сообщения: 14
ОС: Fedora 7 x86-64

Re: Загрузка текста в GtkTextView

Сообщение ironclad »

MiK13 писал(а):
28.11.2008 16:22
А что такое

Код: Выделить всё

fd=open(filename, "r");
?
Это вместо

Код: Выделить всё

 fd=open(filename,O_RDONLY);
. с O_RDONLY make выдает ошибку:

Код:

callbacks.c: В функции ‘on_button2_clicked’ callbacks.c:28: ошибка: ‘O_RDONLY’ undeclared (first use in this function) callbacks.c:28: ошибка: (Each undeclared identifier is reported only once callbacks.c:28: ошибка: for each function it appears in.) make: *** [callbacks.o] Ошибка 1
Спасибо сказали:
MiK13
Сообщения: 1290
ОС: Linux Debian

Re: Загрузка текста в GtkTextView

Сообщение MiK13 »

ironclad писал(а):
28.11.2008 16:40
MiK13 писал(а):
28.11.2008 16:22
А что такое

Код: Выделить всё

fd=open(filename, "r");
?
Это вместо

Код: Выделить всё

 fd=open(filename,O_RDONLY);
. с O_RDONLY make выдает ошибку:

А "r" -- это адрес памяти, где находятся байты 'r' и 0.
А в начале man 2 open есть:
КРАТКАЯ СВОДКА
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
Т.е. должны быть эти инклюды, в одном из них и определено значение O_RDONLY ( в fcttl.h, точнее, через него)
Но можно просто поставить 0 (значение O_RDONLY)
Спасибо сказали:
ironclad
Сообщения: 14
ОС: Fedora 7 x86-64

Re: Загрузка текста в GtkTextView

Сообщение ironclad »

[quote]
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
[quote]
Так по идее все эти инклуды у меня есть... я ж в glade проект собирал,
с 0 все заработало конечно...
Спасибо сказали:
MiK13
Сообщения: 1290
ОС: Linux Debian

Re: Загрузка текста в GtkTextView

Сообщение MiK13 »

ironclad писал(а):
28.11.2008 16:47

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

Так по идее все эти инклуды у меня есть... я ж в glade проект собирал,
с 0 все заработало конечно...

А что значит "по идее"? А реально в файле они есть?
Кстати, для read нужен #include <unistd.h>

А при компиляции я уже давно стал добавлять опцию -Wall. Очень помогает
Спасибо сказали:
ironclad
Сообщения: 14
ОС: Fedora 7 x86-64

Re: Загрузка текста в GtkTextView

Сообщение ironclad »

А что значит "по идее"? А реально в файле они есть?
Кстати, для read нужен #include <unistd.h>

А при компиляции я уже давно стал добавлять опцию -Wall. Очень помогает

добавил только #include "fcntl.h" и все работает
Спасибо сказали: