Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт май 24, 2016 19:38

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Графика встроенными средствами Forth
Автор Сообщение
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Skokov писал(а):
И снова вопрос что значит это?
Код:
( n ppStmt -- addr u ) \ коментарии что на входе и на выходе наверное


Да. Комментарий к словам.

Skokov писал(а):
а это?
Код:
{ addr u par xt sqh \ pzTail ppStmt i -- }

Нотация в фигурных скобках именованных локальных переменных принятая во многих Форт системах (в ANSI 94 немного не так)
до слеша какие элемента стека как именованы, после разделительного слеша резервирование дополнительных лок. переменных
после (необязательного) -- на выходе комментарии не учитываются (не связываются по имени).
Синтаксис локальных именованных переменных имеет ещё некоторые вариации, например по резервированию участка данных. При начале исполнения слова переменные со стека помещаются в область локальных переменных зависящей от Форт системы (обычно стек возвратов Форт системы.)


Skokov писал(а):
и это
Код:
addr u sqh db3_prepare -> ppStmt -> pzTail


что передает эта стрелка -> и почему у меня на ней ошибка

Скорее доступ к элементу струтуры по значению адреса
Нужно найти где оно определяется или откуда берётся.:)
\ Бывают вариации использования этого варианта присваиванию значений переменной VALUE вместо стандартного слова TO для этого.
Сообщение Добавлено: Пн сен 30, 2013 17:36
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw писал(а):
Всё время не хватает времени.


Вот то то и оно уже три ночи с фортом не спал по хорошему ) и все равно еще ничего толком не понял, но затягивает он интереснее чем все то что я знал раньше.

Спасибо за архив.

И снова вопрос что значит это?
Код:
( n ppStmt -- addr u ) \ коментарии что на входе и на выходе наверное

а это?
Код:
{ addr u par xt sqh \ pzTail ppStmt i -- }

и это
Код:
addr u sqh db3_prepare -> ppStmt -> pzTail


что передает эта стрелка -> и почему у меня на ней ошибка
Сообщение Добавлено: Пн сен 30, 2013 16:57
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Skokov писал(а):
как заполучить вот эту полезную штуку REQUIRE CDECL-CALL ~mgw/mgw_dll.f

На http://qte.ucoz.ru/load архив от 30.09.13. В нем есть каталог SPF. Там два варианта, для Windows и Linux.
По тексту они одинаковые, различаются кодировкой.Там же графическая консоль и смотрелка текстов форта.
В качестве примера использования ~mgw/mgw_dll.f смотри ~mgw/qte.f
Всё собираюсь попробовать подключить JavaScript из Qt. Уже подсоединил QtScript, но дальше сдвинутся не могу. Всё время не хватает времени.
Начал переписывать свою графическую консоль на QtE. Пока в Linux, называется console2.f Планирую вставить
Help, поиск слова по первым буквам и автодополнение, просмотр исходников с подсветкой (всё было в старом варианте).
Что бы в неё такого вставить, жизненно необходимого, но не сложного для программирования?
Сообщение Добавлено: Пн сен 30, 2013 16:06
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Простите зря потревожил. Уже понял в чем ошибка константу надо было заменить на переменную ))
Сообщение Добавлено: Пн сен 30, 2013 08:52
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Подскажите пожалуйста как правильно скомпилировать файл с библиотеками и как заполучить вот эту полезную штуку REQUIRE CDECL-CALL ~mgw/mgw_dll.f
Код:
WINAPI: Tcl_Init C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_CreateInterp C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_Eval C:\Tcl\bin\tcl86.dll

WINAPI: Tk_Init C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainWindow C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainLoop C:\Tcl\bin\tk86.dll
WINAPI: Tk_ConfigureWidget C:\Tcl\bin\tk86.dll

: Tcl_Interp Tcl_CreateInterp ;

Tcl_Interp CONSTANT tcl

: TCL
    tcl Tcl_Init 2DROP
    tcl Tk_Init 2DROP
    tcl Tk_MainWindow 2DROP
;

: Eval DROP tcl Tcl_Eval 2DROP DROP ;

: MAIN
    TCL
    S" package require Tk " Eval
    S" wm title . " Eval
    S" proc x {} {puts exit}" Eval
    S" button .b -text 132154 -command x" Eval
    S" pack .b -fill both " Eval
    S" entry .e " Eval
    S" pack .e -fill both " Eval
    S" after 5000 {x} " Eval
    Tk_MainLoop
;

MAIN
\ 0 TO SPF-INIT?
\ ' ANSI>OEM TO ANSI><OEM
\ TRUE TO ?GUI
\ ' MAIN MAINX !
\ S" go.exe" SAVE 
\ run
\ BYE



пробовал всяко заканчивается вылетанием
Сообщение Добавлено: Пн сен 30, 2013 01:13
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw писал(а):
P.S. По моим наблюдениям в России программистов на Forth в несколько раз больше, чем на D.

Кто все эти люди? :D
Сообщение Добавлено: Вс сен 29, 2013 22:11
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mOleg писал(а):
bla bla bla S" sample string" DUMP

Код:
G:\SPF-420>spf4
SP-FORTH - ANS FORTH 94 for Win95/98/Me/NT/2k/XP/Vista
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru ; Started by A.Cherezov
Version 4.20 Build 001 at 21.Jan.2009

7 S" ABC" DUMP S" ABC" DUMP S" ABC" DUMP

221C25   41 42 43 00 20 44 55 4D  50 20 53 22  20 41 42 43 ABC. DUMP S" ABC
221C32   41 42 43 00 20 44 55 4D  50 20 53 22  20 41 42 43 ABC. DUMP S" ABC
221C3F   41 42 43 00 20 44 55 4D  50 0D 0A 00  00 00 00 00 ABC. DUMP....... Ok
( 7 )


0 дописывает SLITERAL. В общем так, при компиляции проблем нет, это
точно, при интерпретации надо обработать строку в той же строке, где
она и определена:
S" ABC" DUMP \ правильно
S" ABC"
DUMP \ ошибка, пред. строка из буфера уже заменена.

Вывод: S" - работает корректно, но надо понимать, что делаешь
и почему. Вот собственно, почему я остановился на SPF, а не на других
фортах, так это возможность посмотреть любой аспект его работы по исходникам.

P.S. По моим наблюдениям в России программистов на Forth в несколько раз больше, чем на D.
Сообщение Добавлено: Вс сен 29, 2013 19:11
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw писал(а):
Почему SPF-4.20 не гарантирует в слове S" наличие завершающего нуля? Пожалуйста аргументированный пример.
Если разговор о других фортах, то это совсем другое дело, я и не спорю.

Потому что в режиме выполнения для строки не выделяется отдельный блок памяти и фактически строка остается во входном буфере. А в режиме компиляции в конце строки таки записывается ноль.
Сообщение Добавлено: Вс сен 29, 2013 14:59
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw писал(а):
Почему SPF-4.20 не гарантирует в слове S" наличие завершающего нуля?

Смотрите в исходники. СПФ не копирует содержимое строки в промежуточный буфер, а возвращает адрес внутри разбираемой строки. Где-то был вариант с дописыванием в конец завершающего нуля, но он по сути не очень корректен.


Код:
: PARSE ( char "ccc<char>" -- c-addr u )
  CharAddr >IN @
  ROT SkipUpTo
  >IN @ - NEGATE
  >IN 1+! ;

: S"     [CHAR] " PARSE [COMPILE] SLITERAL ; IMMEDIATE


да, прошу заметить, что речь идет о использовании S" в режиме интерпретации, в случае, если строка скомпилирована, в конце обязательно будет завершающий Z.
т.е., если пишется:
: some bla bla bla S" sample string" bla bla bla ; ноль в конце будет всегда
а, если просто:
bla bla bla S" sample string" DUMP
- строка будет без завершающего нуля.
Сообщение Добавлено: Вс сен 29, 2013 14:30
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Почему SPF-4.20 не гарантирует в слове S" наличие завершающего нуля? Пожалуйста аргументированный пример.
Если разговор о других фортах, то это совсем другое дело, я и не спорю.
Сообщение Добавлено: Вс сен 29, 2013 12:50
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw писал(а):
Решил я остановится на следующем варианте.
Коротко и ни каких лишних зависимостей.
Код:
: Z" POSTPONE S" STATE @ IF POSTPONE DROP ELSE DROP THEN ; IMMEDIATE

Еще раз: слово S" не гарантирует наличие нуля в конце строки. Вышеприведенное определение в общем случае некорректно и является костылем. Кроме того, есть коварные винапи вызовы, которые возвращают флаг об успешном своем выполнении при некорректной входящей строке. И в результате можно очень долго ловить плавающие фантомные глюки.
Сообщение Добавлено: Вс сен 29, 2013 00:56
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Спасибо VoidVolker :) Убедил, что надо пользоваться Z" Решил я остановится на следующем варианте.
Коротко и ни каких лишних зависимостей.
Код:
: Z" POSTPONE S" STATE @ IF POSTPONE DROP ELSE DROP THEN ; IMMEDIATE

KPG писал(а):
Можно также задействовать SPF.dll из TCL

А как? Пример?
Сообщение Добавлено: Сб сен 28, 2013 17:14
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
mgw,
Ctrl+Shif+F:
Код:
Searching 4237 files for ": Z"" (case sensitive)

D:\SP-Forth\devel\~ac\lib\win\com\samples\automation+.f:
    1  REQUIRE :: ~yz/lib/automation.f
    2  WARNING @ WARNING 0!
    3: : Z" POSTPONE " ; IMMEDIATE
    4  REQUIRE STR@ ~ac/lib/str2.f
    5  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo2.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo3.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo4.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\ie.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook2.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook3.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\pits.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\xml.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~af\lib\c\zstring.f:
   64 
   65  \ Создает строку, оканчивающуюся нулем
   66: : Z" ( -->") [CHAR] " PARSE [COMPILE] ZLITERAL ; IMMEDIATE
   67 
   68  \ Создает 0-строку, при этом преобразует ее по C-правилам.

D:\SP-Forth\devel\~mak\LIB\ext\dis486.f:
   54 
   55  [IFNDEF] Z"
   56:  : Z" POSTPONE S" POSTPONE DROP ; IMMEDIATE
   57  [THEN]
   58 

D:\SP-Forth\devel\~nn\lib\az.f:
   13  ; IMMEDIATE
   14 
   15: : Z" [CHAR] " PARSE [COMPILE] ZLITERAL ; IMMEDIATE
   16 
   17  : ZPLACE ( a u buf -- )   SWAP 2DUP + 0 SWAP C! CMOVE ;   

D:\SP-Forth\devel\~yz\lib\common.f:
   84  ; IMMEDIATE
   85 
   86: : Z" [COMPILE] " ; IMMEDIATE
   87 
   88  : ASCIIZ ( z -- ; ->bl)

15 matches across 15 files

Это как бы стандартное слово - просто его надо подключать из внешних библиотек:
Код:
REQUIRE Z" ~af\lib\c\zstring.f

Skokov писал(а):
Есть такой вопрос как передавать значение переменной в функцию S"

В простейшем варианте - в строках размером до 256 байт, можно использовать числовой буфер:
Код:
12345 S>D <# CHAR % HOLD S"  Конец строки. Символ: " HOLDS #S S" Начало строки, число: " HOLDS #> TYPE CR

Либо искать и подключать что-то для работы со строками из ~девел, либо писать своё что-то.Еще могу предложить свои библиотеки - простейший вариант и более новый, но бета-версия.
Сообщение Добавлено: Сб сен 28, 2013 09:50
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Skokov писал(а):
Так кое что заработало правда пока в одностороннем порядке
Есть такой вопрос как передавать значение переменной в функцию S"

Eval наверное можно "скормить" всё, а так наверное придётся погрузиться в изучение С TCL API ? (Tcl_SetVar Tcl_GetVar Tcl_LinkVar Tcl_Invoke ...)

P.S. Встретился ещё такой проект Tcl Windows API extension
Код:
Tcl Windows API (TWAPI) расширение предоставляет Tcl привязку к более чем 500 функций в Windows API.

Расширение предоставляет доступ к Windows API на двух уровнях.
Прямой интерфейс для поддерживаемых Windows API предусмотрен где Tcl команды напрямую указывают на окна функции, как описано в Microsoft Windows SDK. Рекомендуемый интерфейс высокоуровневый интерфейс, который является более удобным, мощным и гораздо проще в использовании, чем сырые Windows API.
В сочетании с TCL, TWAPI позволяет написать широкий спектр приложений для Windows, начиная от настольных приложений на веб-серверы запускаются как службы Windows.

Можно также задействовать SPF.dll из TCL
Сообщение Добавлено: Сб сен 28, 2013 09:01
  Заголовок сообщения:  Re: Графика встроенными средствами Forth  Ответить с цитатой
Так кое что заработало правда пока в одностороннем порядке
Код:
WINAPI: Tcl_FindExecutable C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_CreateInterp C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_Eval C:\Tcl\bin\tcl86.dll
WINAPI: Tk_Init C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainWindow C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainLoop C:\Tcl\bin\tk86.dll


Tcl_CreateInterp CONSTANT interpr

interpr Tk_Init
interpr Tk_MainWindow

S" package require Tk " DROP interpr Tcl_Eval
S" wm title . " DROP interpr Tcl_Eval
S" proc x {} {exit}" DROP interpr Tcl_Eval
S" button .b -text 132154 -command x" DROP interpr Tcl_Eval
S" pack .b -fill both " DROP interpr Tcl_Eval

Tk_MainLoop


Есть такой вопрос как передавать значение переменной в функцию S"
Сообщение Добавлено: Сб сен 28, 2013 00:56

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


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