Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 02:51

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 00:16 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
В SPF аргументы идут в противоположном порядке ...

Таким образом для SPF правильным будет:
Код:
1 s3 argc qteQApplication_create1 VARIABLE app app !  \ app = new QApplication(argc, s3, 1);
....
1 win1 @ qteQWidget_setVisible DROP \ win1.setVisible(true);


Может пригодится: http://mgw.narod.ru/doc.htm


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 06:21 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
mgw писал(а):
В SPF аргументы идут в противоположном порядке ...

Таким образом для SPF правильным будет:
Код:
1 s3 argc qteQApplication_create1 VARIABLE app app !  \ app = new QApplication(argc, s3, 1);
....
1 win1 @ qteQWidget_setVisible DROP \ win1.setVisible(true);

Может пригодится: http://mgw.narod.ru/doc.htm

Поменял последовательность параметров на стеке, теперь qteQApplication_create1 запускается, но не может найти путь к qwindows.dll. Теперь подробнее алгоритм запуска:
1) Скачал rt_Qt5_windows32.zip
2) Распаковал rt_Qt5_windows32.zip в папку rt_Qt5_windows32
3) Скачал QtE5Widgets32.dll (у меня Windows XP 32-bit)
4) Скопировал QtE5Widgets32.dll в папку rt_Qt5_windows32
5) В папке rt_Qt5_windows32 создал файл с исходным кодом от сюда же и запустил.

Выдает следующее сообщение:
Код:
This application failed to start because it could not find or load the Qt platform plugin Windows

и окошко с текстом: "Runtime error!"

Погуглил в сети: самое адекватное решение нашел здесь [https://habrahabr.ru/post/188816/]. Но для этого нужно добавить биндинг для QCoreApplication::libraryPaths(); и для QCoreApplication::setLibraryPaths(paths);
Код:
int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(resources);

    QStringList paths = QCoreApplication::libraryPaths();
    paths.append(".");
    paths.append("imageformats");
    paths.append("platforms");
    paths.append("sqldrivers");
    QCoreApplication::setLibraryPaths(paths);

    QApplication a(argc, argv);

    a.setQuitOnLastWindowClosed(false);

    QDbc::init();

    MainWindow w;
    w.showFullScreen();

    a.exec();

    QDbc::finalize();
}

Это если без установки официального дистрибутива Qt5.

Попробую установить дистрибутив. Видимо вся проблема в путях.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 10:27 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
1 - Скачал чистый дистрибутив SPF-420 и распаковал его в папку C:\SPF420
2 - Скачал c github архив с QtE5. Из него содержимое папки rt_Qt5_windows32 скопировал в каталог C:\SPF420
3 - Cкопировал в каталог C:\SPF420 файл QtE5-master\QtE5Widgets32.dll
4 - Создал файл f.f с примером и запустил прямо в каталоге C:\SPF420

Вот как выглядит:
Код:
Directory of C:\SPF420

13.03.2016      9:17  <DIR>         .
13.03.2016      9:04  <DIR>         ..
13.03.2016      9:04  <DIR>         devel
13.03.2016      9:04  <DIR>         docs
13.03.2016      9:17           881  f.f
22.01.2003      7:19           299  help.fhlp
26.02.2008     11:07        39,424  JPF375C.EXE
13.03.2016      9:04  <DIR>         lib
21.12.2014     19:07       119,822  libgcc_s_dw2-1.dll
21.12.2014     19:07     1,026,062  libstdc++-6.dll
21.12.2014     19:07        49,152  libwinpthread-1.dll
13.03.2016      9:09  <DIR>         platforms
20.02.2016      5:04     5,391,360  Qt5Core.dll
12.10.2015     22:31     5,334,528  Qt5Gui.dll
12.10.2015     22:37     6,541,824  Qt5Widgets.dll
12.03.2016     22:09        37,376  QtE5Widgets.dll
07.03.2016      5:04        33,792  QtE5Widgets32.dll
13.03.2016      9:04  <DIR>         samples
21.01.2009     20:38       112,128  spf4.exe
15.11.2006     22:42           328  spf4.ini
13.03.2016      9:04  <DIR>         src
13.03.2016      9:04        26,233  uninstall.exe
      14 files               18,713,209 bytes
       8 directories     36,530,601,984 bytes free

C:\SPF420>type f.f
1 2 3 4 5 \ ╧ЁютхЁър ёЄхър эр т√їюфх

REQUIRE CAPI: ~af/lib/c/capi.f

3 CAPI: qteQApplication_create1 QtE5Widgets32.dll
1 CAPI: qteQApplication_exec    QtE5Widgets32.dll
1 CAPI: qteQApplication_aboutQt QtE5Widgets32.dll
2 CAPI: qteQWidget_create1      QtE5Widgets32.dll
2 CAPI: qteQWidget_setVisible   QtE5Widgets32.dll

\ ╦хэ№ шчуюЄртыштрЄ№ argc ш argv, яЁюёЄю ьюфхышЁє■ шї
VARIABLE argc 1 argc ! \ ▌Єю argc
VARIABLE s2 VARIABLE s3 VARIABLE s1 0 s1 ! s1 @ s2 ! s2 @ s3 ! \ s3 - ¤Єю argv
1 s3 argc qteQApplication_create1 VARIABLE app app !  \ app = new QApplication(argc, s3
, 1);
app @ qteQApplication_aboutQt  \ app.aboutQt();

0 0 qteQWidget_create1 VARIABLE win1 win1 ! DROP \ win1 = new QWidget(null, 0);
1 win1 @ qteQWidget_setVisible DROP \ win1.setVisible(true);
app @ qteQApplication_exec DROP \ app.exec();

. . . . . \ ╧ЁютхЁър ёЄхър эр т√їюфх

Всё работает ...

Кстати, при запуске:
c:\spf420\spf c:\rt5\ff.f
поиск всех dll начнется в каталоге c:\spf420 а не в каталоге c:\rt5



За это сообщение автора mgw поблагодарил: kzagradskiy
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 19:01 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
mgw писал(а):
Всё работает ...

Кстати, при запуске:
c:\spf420\spf c:\rt5\ff.f
поиск всех dll начнется в каталоге c:\spf420 а не в каталоге c:\rt5

Всё заработало -- спасибо. Нюанса с поиском dll я не знал. Надо бы это в документацию по SP-Forth добавить. Теперь на SP-Forth можно Qt-приложения писать без лишних "танцев с бубнами". Эту программку можно добавить в репозиторий на Github, как действующий пример работы для SP-Forth. Назвать её более информативно чем "ff.f", например "spf_sample.f".

Код:
\ Файл: spf_sample.f
\ Описание: выводит на экран окно About для Qt
\
\ Пошаговый примерный алгоритм:
\ 1 - Скачать чистый дистрибутив SPF-420 и распаковал его в папку C:\SPF420
\ 2 - Скачать c github архив с QtE5. Из него содержимое папки rt_Qt5_windows32 скопировать в каталог C:\SPF420
\ 3 - Cкопировать в каталог C:\SPF420 файл QtE5-master\QtE5Widgets32.dll
\ 4 - Файл spf_sample.f с примером запустил прямо в каталоге C:\SPF420
\ Кстати, при запуске:
\ c:\spf420\spf c:\rt5\spf_sample.f
\ поиск всех dll начнется в каталоге c:\spf420 а не в каталоге c:\rt5

1 2 3 4 5 \ Проверка стека на выходе

REQUIRE CAPI: ~af/lib/c/capi.f

3 CAPI: qteQApplication_create1 QtE5Widgets32.dll
1 CAPI: qteQApplication_exec    QtE5Widgets32.dll
1 CAPI: qteQApplication_aboutQt QtE5Widgets32.dll
2 CAPI: qteQWidget_create1      QtE5Widgets32.dll
2 CAPI: qteQWidget_setVisible   QtE5Widgets32.dll

\ Лень изготавливать argc и argv, просто моделирую их
VARIABLE argc 1 argc ! \ Это argc
VARIABLE s2 VARIABLE s3 VARIABLE s1 0 s1 ! s1 @ s2 ! s2 @ s3 ! \ s3 - это argv
S" app = new QApplication(argc, s3, 1);" TYPE CR
0 s3 argc qteQApplication_create1 VARIABLE app app !  \ app = new QApplication(argc, s3, 1);
S" app.aboutQt();" TYPE CR
app @ qteQApplication_aboutQt  \ app.aboutQt();

0 0 qteQWidget_create1 VARIABLE win1 win1 ! DROP \ win1 = new QWidget(null, 0);
1 win1 @ qteQWidget_setVisible DROP \ win1.setVisible(true);
app @ qteQApplication_exec DROP \ app.exec();

S" --1--" 1+ TYPE \ Визуализация загрузки
. . . . . \ Проверка стека на выходе


Последний раз редактировалось kzagradskiy Вс мар 13, 2016 19:40, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 19:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
kzagradskiy писал(а):
Всё заработало -- спасибо. Нюанса с поиском dll я не знал. Надо бы это в документацию по SP-Forth добавить. Теперь на SP-Forth можно Qt-приложения писать без лишних "танцев с бубнами".

Вообще-то это стандартная логика поиска пути dll в ОС windows - текущий каталог, каталог запуска, системные каталоги.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс мар 13, 2016 19:36 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
kzagradskiy писал(а):
Теперь на SP-Forth можно Qt-приложения писать без лишних "танцев с бубнами".

Это уже осуществимо на более высоком уровне, причем из SPF-420 для Qt 4.8.
http://qte.ucoz.ru/load/qte_ot_080913/1-1-0-4#comments

Если взять и переписать ( немного :D ) модуль qte.f под вызовы Qt-5 .... можно творить чудеса!

Ну а если совсем помечтать, то можно взять forthd и переписать его на 64 разряда. Всё для этого есть :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Qt-5 + Forth
СообщениеДобавлено: Вс апр 10, 2016 09:22 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Консоль для управления forthD. Этакая заявка на IDE.

https://yadi.sk/d/sFSsybY1qs68J

В архиве все необходимое для запуска в Windows 32.
Файлов много, т.к. содержит Qt-5 RunTime 32.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB