FreePascal и GTK Глюки
Модератор: Модераторы
-
AlexanderS
- незнакомец
- Сообщения: 5
- Зарегистрирован: 13.07.2009 10:00:24
FreePascal и GTK Глюки
Решил попробовать GTK и налетел на такой глюк:
создал окно с многострочным редактором. запускаю. выделяю мышкой в редакторе текст и пытаюсь перетащить. и тут программа падает. аналогичная программа на Си работает нормально. текст переносится мышкой как положено.
Может какой нибудь уважаемый гуру объяснит суть проблемы? Буду очень признателен.
вот код
program Project1;
{$mode objfpc}{$H+}
uses
glib2,gtk2;
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
begin
gtk_main_quit();
end;
var
window, editor : pGtkWidget;
begin
gtk_init (@argc, @argv);
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (pGTKOBJECT (window), 'destroy',
GTK_SIGNAL_FUNC (@destroy), NULL);
editor := gtk_text_view_new();
gtk_container_add(GTK_Container(window), editor);
gtk_widget_show_all (window);
gtk_main();
end.
создал окно с многострочным редактором. запускаю. выделяю мышкой в редакторе текст и пытаюсь перетащить. и тут программа падает. аналогичная программа на Си работает нормально. текст переносится мышкой как положено.
Может какой нибудь уважаемый гуру объяснит суть проблемы? Буду очень признателен.
вот код
program Project1;
{$mode objfpc}{$H+}
uses
glib2,gtk2;
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
begin
gtk_main_quit();
end;
var
window, editor : pGtkWidget;
begin
gtk_init (@argc, @argv);
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (pGTKOBJECT (window), 'destroy',
GTK_SIGNAL_FUNC (@destroy), NULL);
editor := gtk_text_view_new();
gtk_container_add(GTK_Container(window), editor);
gtk_widget_show_all (window);
gtk_main();
end.
-
AlexanderS
- незнакомец
- Сообщения: 5
- Зарегистрирован: 13.07.2009 10:00:24
Пардон. У меня Windows XP
GTK 2.16
Попробовал то же самое в Delphi 7. Тот же глюк. Вроде программа ниче не делает, только вызовы DLL, а не работает. В Си работает.
#include <gtk/gtk.h>
void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit ();
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *editor;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "delete_event", G_CALLBACK (destroy), NULL);
editor = gtk_text_view_new();
gtk_container_add(GTK_CONTAINER (window), editor);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
GTK 2.16
Попробовал то же самое в Delphi 7. Тот же глюк. Вроде программа ниче не делает, только вызовы DLL, а не работает. В Си работает.
#include <gtk/gtk.h>
void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit ();
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *editor;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "delete_event", G_CALLBACK (destroy), NULL);
editor = gtk_text_view_new();
gtk_container_add(GTK_CONTAINER (window), editor);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Народ пользуйтесь тэгом CODE!!!!
-
AlexanderS
- незнакомец
- Сообщения: 5
- Зарегистрирован: 13.07.2009 10:00:24
Попробовал это скомпилить в Delphi без RTL. Заработало. Получается нужно копать в RTL 
AlexanderS писал(а):Попробовал это скомпилить в Delphi без RTL. Заработало. Получается нужно копать в RTL
Вы форумом случайно неошиблись? Причём тут Delphi? Без RTL Вы никак не сможете собрать программу!
-
AlexanderS
- незнакомец
- Сообщения: 5
- Зарегистрирован: 13.07.2009 10:00:24
Я делал как http://www.excode.ru/art2775p7.html
Думаю проблема та же, что и в Delphi. Чего то они там в RTL нахакали. Иначе как объяснить то, что программа которая ничего не делает кроме вызовов DLL в паскале не работает, а в Си работает.
Добавлено спустя 11 минут 14 секунд:
Скомпилил с RTL от KOL http://kolmck.net/rindex.htm
тоже работает нормально. уже можно жить
Думаю проблема та же, что и в Delphi. Чего то они там в RTL нахакали. Иначе как объяснить то, что программа которая ничего не делает кроме вызовов DLL в паскале не работает, а в Си работает.
Добавлено спустя 11 минут 14 секунд:
Скомпилил с RTL от KOL http://kolmck.net/rindex.htm
тоже работает нормально. уже можно жить
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Случайно не в том причина, что в примере на C сигнал называется delete_event, а в примере на Паскале - destroy?
-
AlexanderS
- незнакомец
- Сообщения: 5
- Зарегистрирован: 13.07.2009 10:00:24
а без разницы. все равно глюк происходит во время работы, а не когда окно закрывается
