Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср авг 15, 2018 20:25

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - SPF/Linux
Автор Сообщение
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Надо разбираться в классах QWebKit. Я пока еще не копал глубоко. Это просто эксперимент, на время. Хотел понять сколько надо времени на добавление новой функциональности в QtE. Вот на это (см выше) у меня ушло часа 2 где то. Основное время на то, что бы понять
что с чем стыкуется в Qt.
Сообщение Добавлено: Чт окт 17, 2013 22:50
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
О, прикольно. А как получить и обработать результат загрузки? И можно ли, например, повесить свой обработчик на какие-то события на странице?
Сообщение Добавлено: Чт окт 17, 2013 22:41
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Из SPF в Internet.

Добавил в QtE.f пару новых классов из QWebKit.
Код:
// QWebView
     pFunQt[88] = GetPrAddres(bQtE, hQtE, "QT_QWebView"); if (!pFunQt[88]) MessageErrorLoad(showError, "QT_QWebView"w, 2);
     pFunQt[91] = GetPrAddres(bQtE, hQtE, "QT_QWebView_load"); if (!pFunQt[91]) MessageErrorLoad(showError, "QT_QWebView_load"w, 2);
// QUrl
     pFunQt[89] = GetPrAddres(bQtE, hQtE, "QT_QUrl"); if (!pFunQt[89]) MessageErrorLoad(showError, "QT_QUrl"w, 2);
     pFunQt[90] = GetPrAddres(bCore, hQtCore, "_ZN4QUrl6setUrlERK7QString"); if (!pFunQt[90]) MessageErrorLoad(showError, "QUrl::setUrl(QString)"w, 2);

// =============== QWebView ========================
fQWidget SUBCLASS fQWebView
: create     // Инициализация класса
   0 {{ QtE pFunQt_88 }} SUPER p_QObject !
   ;
: load   // ( Astr -- ) Вернуть значение
   SUPER p_QObject @ {{ QtE pFunQt_91 }} DROP
   ;
;CLASS   
// =============== QUrl ========================
fQObject SUBCLASS fQUrl
: create     // ( Aobj --  ) Инициализация класса
   {{ QtE pFunQt_89 }} SUPER p_QObject !
   ;
: setUrl    // ( Astr -- ) Установить URL из QString
   SUPER p_QObject @ {{ QtE pFunQt_90 }} DROP
   ;
;CLASS


Вот такой кусок кода обеспечивает открытие окна и отображение в нем http://www.yandex.ru
Код:
fQString NEW qsTmp2 qsTmp2.create  \ Создали QString
Z" http://www.yandex.ru" SrcCodec.QtObj SWAP qsTmp2.toUnicode  \ и записали в неё адрес сайта
fQUrl NEW url url.create qsTmp2.QtObj url.setUrl  \ подготовили URL для WebKit
fQWebView NEW wv wv.create wv.show   \ отобразили окно браузера на экране
url.QtObj wv.load  \ загрузили в него yandex
Сообщение Добавлено: Чт окт 17, 2013 22:34
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
mgw писал(а):
Нашел как загрузить SO и она грузится, нашел поиск и загрузку функции - работает, а вот как вызвать функцию, так и не нашел.

Пример есть в unix\socket.fs. Там прямо в исходнике *.fs на си пишется код, сопоставляются сишные функции и форт-слова, затем при компиляции исходника к си коду дописываются нужные инклюды и он автоматически компилируется в so. Соответственно скомпилированные либы сохраняются в домашнем каталоге пользователя в каталоге ~/.gforth/libcc-named. При этом gForth почему-то не отслеживает изменения в си коде в форт-исходнике и при изменении си кода необходимо удалить исходники и so-файлы, чтобы gForth их перекомпилировал. Я просто не стал разбираться, как указать gForth перекомпилировать so и просто сделал скриптик:
Код:
#!/bin/sh
rm -f -r ~/.gforth/libcc-named/*.c
rm -f -r ~/.gforth/libcc-named/*.o
rm -f -r ~/.gforth/libcc-named/*.lo
rm -f -r ~/.gforth/libcc-named/*.la

И запускаю его автоматом при запуске gForth-а - все равно оно компилируется достаточно быстро.
Вот тут на гитхабе лежит текущая версия gForth-а, уже с поддержкой многопоточности через ptheards.c.
Сообщение Добавлено: Вс окт 06, 2013 22:45
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Изготовил QtE - 64. Проверил на D в 64 разрядном режиме (Fedora 19 - 64). Всё работает. Покрутил gForth ... сильно запутанно. Нашел как загрузить SO и она грузится, нашел поиск и загрузку функции - работает, а вот как вызвать функцию, так и не нашел. То, что они рекомендуют не работает.
Субъективно конечно, но 32 разрядная система работает заметно быстрее 64 разрядной. (amd Athlon 64 X2, 3gb памяти).


QtE for Dlang 64
http://files.mail.ru/D03386CA294542298B2EDF297B4FF313
Сообщение Добавлено: Вс окт 06, 2013 22:15
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Решил попробовать QtE в 64 разрядах. Поставил 64 разрядную Fedora 19. Пока борюсь с ошибками, но что радует - уже отображается окошко (QWidget) и правильно работают события. Пока работаю на D, но планирую испытать и под фортом. Скорее всего под gForth 64
Сообщение Добавлено: Чт окт 03, 2013 21:12
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Ясно, спасибо! Как будет время - закопаюсь.
Сообщение Добавлено: Вт сен 17, 2013 21:59
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Кавычки - мне так удобнее визуально видеть где имя функции, а где полученное слово. И современные редакторы подсвечивают строку.

Определить что? Если тип вызова, то читай док по конкретной so. Как ее запрограммировали так и надо вызывать. В linux системные библитеки в cdecl
Сообщение Добавлено: Вт сен 17, 2013 20:54
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Для кода есть bb-тег CODE.
mgw писал(а):
if=L Library@ libc6 1 CDECL-Call" malloc" malloc

А зачем кавычки? Все равно в функциях пробелов не бывает - можно же сразу слово забирать из входного потока.
mgw писал(а):
Типы вызовов могут быть разные:
CDECL-Call
CDECL-Call-N
STDCALL-Call
STDCALL-Call-N
WINAPI-Call
WINAPI-Call-N
Extern
THIS-CDECL-Linux-gcc-Call
THIS-CDECL-Win-MinGW-Call

А как определить?
Сообщение Добавлено: Вт сен 17, 2013 20:31
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Скачиваешь архив http://qte.ucoz.ru/load от 08.09.13 (самый свежий). В нем есть каталог spf. В этом каталоге есть папка ~mgw - копируешь её в каталог devel в spf. В этой папке mgw_dll.f

В своём файле пишешь:
REQUIRE CDECL-CALL ~mgw/mgw_dll.f

\ Подготовка к загрузке, реальной загрузки библиотеки нет
if=L Library" libc.so.6" libc6 \ сработает в Linux
if=W Library" libc.dll" libc6 \ сработает в Windows. Имя DLL не помню, пишу для примера

\ Формируем список с описанием вызова.
\ Перед типом вызова количество аргументов для функции
if=L Library@ libc6 1 CDECL-Call" malloc" malloc
if=L Library@ libc6 2 CDECL-Call" calloc" calloc
if=L Library@ libc6 1 CDECL-Call" free" free

: malloc0 1 calloc ; // Выделить память и обнулить её

\ Загрузим и активизируем библиотеку. В этот момент список функций заполняется
\ реальными адресами
LibraryLoad libc6

: ВыделитьВхипеИзанулить ( Nбайт -- A ) \ Выделяет и зануляет в хипе N байт
malloc0
;

Типы вызовов могут быть разные:
CDECL-Call
CDECL-Call-N
STDCALL-Call
STDCALL-Call-N
WINAPI-Call
WINAPI-Call-N
Extern
THIS-CDECL-Linux-gcc-Call
THIS-CDECL-Win-MinGW-Call
Сообщение Добавлено: Вт сен 17, 2013 18:15
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
mgw писал(а):
В тех библиотеках, что я видел в SPF-4.20 подключение в Windows и Linux различаются синтаксисом, что мне не удобно. Я написал свою библиотеку. Она универсальна и работает одинаково в обоих операционках. Если есть необходимость, могу выложить и рассказать как работает.

Да, интересно.
Сообщение Добавлено: Вт сен 17, 2013 16:57
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
1 - задать каталог поиска. Обычно в переменной LD_LIBRARY_PATH
Для установки текущего каталога:
LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH

2 - Загрузить библиотеку и дальше как обычно, поиск функции и т.д.

В тех библиотеках, что я видел в SPF-4.20 подключение в Windows и Linux различаются синтаксисом, что мне не удобно. Я написал свою библиотеку. Она универсальна и работает одинаково в обоих операционках. Если есть необходимость, могу выложить и рассказать как работает.
Сообщение Добавлено: Вт сен 17, 2013 16:09
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Как подключать внешние so-библиотеки в LinuxSPF_x86?
Сообщение Добавлено: Вт сен 17, 2013 08:21
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
SP-Forth x64 на гитхабе: https://github.com/VoidVolker/spf64
Собственно, предлагаю перенести обсуждение спф-64 в отдельную тему.
Сообщение Добавлено: Чт авг 22, 2013 15:21
  Заголовок сообщения:  Re: SPF/Linux  Ответить с цитатой
Очередная версия http://fpauk.narod.ru/LinuxSPF64.3.tar.bz2
Сообщение Добавлено: Ср авг 21, 2013 23:57

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


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