Forth http://fforum.winglion.ru/ |
|
Особенности работы WinLib by ~yz+~ygrek http://fforum.winglion.ru/viewtopic.php?f=18&t=644 |
Страница 4 из 4 |
Автор: | Гость [ Вс авг 01, 2010 19:29 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Про поиск по форт файлу. По умолчанию ведётся поиск только в зарегистрированных типах файлов. Остальные игнорируются. Нужно внести в реестр: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex "FilterFilesWithUnknownExtensions"=dword:00000001 |
Автор: | in4 [ Вт авг 03, 2010 16:51 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Гость писал(а): Ктонибудь знает в какой библиотеке определяется слово -text@ ? Рекомендую прочитатьWinLibОсобенно 2. Общая организация библиотеки там ответ на вопрос да и вокруг еще мноооого интересного! И еще: Учебник работы с оконной библиотекой WinLib от Валентина Первых |
Автор: | Гость [ Ср авг 04, 2010 02:46 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Извините, новичек в Форте, я думаю все когда то ими были. Пытаюсь разобраться, разложить так сказать по полочкам :) . В ~yz/winlib.html сказано : " Библиотека в большой степени базируется на специальных структурах-таблицах. Окна и элементы управления представляются такими таблицами - по большому счету, списками свойств. Часть свойств могут быть прочитаны и записаны, некоторые - только записаны. Свойство -prop читается словом -prop@ и записывается словом -prop!. " Вопрос где же описываются эти слова " -prop@ " и " -prop! " ? Т.е. получается описываются они не через стандартное слово двоеточие " : " а как то по-другому, как и где именно что то не могу понять :( |
Автор: | in4 [ Ср авг 04, 2010 11:44 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Гость писал(а): Вопрос где же описываются эти слова " -prop@ " и " -prop! " ? ~yz\lib\winlib.f писал(а): Код: : generate-names saved-names @ BEGIN DUP WHILE DUP NAME> >BODY @ >R DUP COUNT ( a a2 n) >R PAD R@ CMOVE PAD R@ CREATED R> R@ , make-constant >R c: @ PAD R@ + C! PAD R@ 1+ CREATED R> R@ , make-getter DUP PAD + c: ! SWAP C! PAD SWAP 1+ CREATED R> , make-setter CDR REPEAT DROP ; : endtable ( a -- ) DROP generate-names saved-names FREE-WORDLIST ; Да, и рекомендую зарегистрироваться - для читающих будет понятно, один человек спрашивает или разные = надо ли еще раз повторять или нет. |
Автор: | GEO [ Чт авг 05, 2010 02:15 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
in4 ну теперь ясно какое слово генерирует другие слова. Там дальше в тексте идет формирование таблицы и в нем текст: Код: item -text getset тоесть как бы слово endtable берет слово -text и сохраняет его в таблице, как то дописывая еще знаки ! и @ к нему (т.е. получается слово записать текст -text! и взять текст (прочитать в буфер) -text@ ) Вроде немного прояснилось, хотя и самую малость, может есть ошибки в моих предположениях? А вот слова -prop в таблице нет, как оно формируется - загадка :(
|
Автор: | in4 [ Чт авг 05, 2010 14:13 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
GEO писал(а): А вот слова -prop в таблице нет, как оно формируется - загадка Ну, насколько я понял, это в доке просто ПРИМЕР свойства (PROPerty).В generate-names слово CREATED встречается 3 раза - на каждый вариант, -prop , -prop@ , -prop! . Соответственно, 3 варианта и генерируются. Но в эти тонкости можно и не вдаваться. Разве что когда эту либу переписывать. Я уже несколько раз порывался, но откладывал... |
Автор: | GEO [ Чт авг 19, 2010 15:32 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Это опять я. Бюсь еще над своим редактором, в коде некоторые вопросы: Код: DIS-OPT \ для SPF ниже 4.10 под NT Вынесу вопросы: REQUIRE toolbar ~yz/lib/wincc.f REQUIRE STR@ ~ac/lib/str5.f \ некторые переменные пока не используются 0 VALUE multiedit_in "" VALUE text_multiedit_in "" VALUE text_in "" VALUE text_out "" VALUE text_in_out \ процедура запуска скрипта PROC: RunScript { \ [ 256 ] TextIn Dlin -- } TextIn multiedit_in -text@ \ СОДЕРЖИМОЕ ВХОДНОЙ СТРОКИ например 2 2 * . CR multiedit_in -text# TO Dlin \ РАЗМЕР ВХОДНОЙ СТРОКИ TextIn Dlin EVALUATE \ выполняем строку. Слово EVALUATE только интерпритирует \ а нужна еще и компиляция текста введенного в multiedit. \ Еще подходит слово EVAL-WORD, но оно компилирует/интерпритирует только одно слово \ Возможно надо пройтись по всему тексту в цикле и каждое слово обраотать им? \ Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? \ Тоесть хотелось бы нечто похожее как в консоли но только с оконным интерфейсом как у меня. \ Пока результат выводиться в консоли рядом с окном программы. PROC; MESSAGES: multiedit_in_msg \ назначаем обработку сообщений от элемента multiedit M: en_killfocus multiedit_in TO text_multiedit_in M; MESSAGES; : make-grids GRID -yfixed Z" Введите текст (in): " label (/ -align right /) -left | === multiedit (/ -name multiedit_in -size 400 200 -notify multiedit_in_msg /) TRUE W: sb_vert this -hwnd@ ShowScrollBar DROP TRUE W: SB_HORZ this -hwnd@ ShowScrollBar DROP | === \ создаем кнопку с надписю " >>" которая будет выполнять определенную нами процедуру Z" Выполнить! >> " button (/ -command RunScript /) | GRID; winmain -grid! ; : 0WINDOWS 0 create-window TO winmain W: color_3dface syscolor winmain -bgcolor! \ серый фон (if станд. цвета) Z" Редактор" winmain -text! make-grids winmain wincenter winmain winshow ; : run WINDOWS... 0WINDOWS ...WINDOWS BYE ; ' ANSI>OEM TO ANSI><OEM TRUE TO ?GUI ' run MAINX ! S" red.exe" SAVE run BYE Слово EVALUATE только интерпритирует а нужна еще и компиляция текста введенного в multiedit. Еще подходит слово EVAL-WORD, но оно компилирует/интерпритирует только одно слово. Возможно надо пройтись по всему тексту в цикле и каждое слово обраотать им? Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Тоесть хотелось бы нечто похожее как в консоли но только с оконным интерфейсом как у меня. Пока результат выводиться в консоли рядом с окном программы. Подскажите если кто знает? |
Автор: | Mihail [ Чт авг 19, 2010 16:44 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
GEO писал(а): Слово EVALUATE только интерпритирует а нужна еще и компиляция В Форте интерпритация, она-же и компиляция. И вообще, любая компиляция это порождающая код интерпритация. : TST S" : 7. 7 . ;" EVALUATE ; GEO писал(а): Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Флаткиным реализовано: в каталоге \samples\win\spfwc\ запускаешь: compile.bat |
Автор: | in4 [ Пт авг 20, 2010 17:03 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
GEO писал(а): Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Я делал однострочное edit-поле для EVALUATE . "Программа", которая там вводилась, должна была вернуть одно число на стеке. Оно форматировалось и выводилось в другое edit-поле, т.к. я хотел одновременно видеть и "программу" и результат и иметь возможность редактирования "программы".
|
Автор: | GEO [ Вс авг 22, 2010 15:48 ] |
Заголовок сообщения: | Re: Особенности работы WinLib by ~yz+~ygrek |
Mihail писал(а): В Форте интерпритация, она-же и компиляция. И вообще, любая компиляция это порождающая код интерпритация. Действительно компиляция работает! Наверное я редактировал код перед тем как бросить сюда и помогло. Mihail писал(а): Флаткиным реализовано: в каталоге \samples\win\spfwc\ запускаешь: compile.bat Спасибо, да верно, я уже давно присматриваюсь к этому исходнику, но очень уж там много "высшего пилотажа". Как бы как то приспособить вывод в мемо(multiedit) результата работы так как реализовано тут (samples\win\spfwc\spf4wc.f) . Я так понял этим там занимается слово FlushJetBuf. На самом так сказать "нижнем" уровне выводом занимаются слова из src\win\spf_win_io.f я правильно понимаю? Попытаюсь дальше разбираться с исходниками и хелпами. in4 писал(а): В будущем есть идея реализовать три элемента multiedit. В первом вводиться код, во втором отображается результат его обработки а в третьем вводимый код и результат вместе. Собственно первое уже реализовано, второе пока разясняется а с третим думаю проблем больших не должно возникнуть. Пока пытаюсь разяснить ключевые моменты
|
Страница 4 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |