Автор |
Сообщение |
|
|
Заголовок сообщения: |
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. В первом вводиться код, во втором отображается результат его обработки а в третьем вводимый код и результат вместе. Собственно первое уже реализовано, второе пока разясняется а с третим думаю проблем больших не должно возникнуть. Пока пытаюсь разяснить ключевые моменты
[quote="Mihail"] В Форте интерпритация, она-же и компиляция. И вообще, любая компиляция это порождающая код интерпритация. [/quote] Действительно компиляция работает! Наверное я редактировал код перед тем как бросить сюда и помогло. [quote="Mihail"] Флаткиным реализовано: в каталоге \samples\win\spfwc\ запускаешь: compile.bat[/quote] Спасибо, да верно, я уже давно присматриваюсь к этому исходнику, но очень уж там много "высшего пилотажа". Как бы как то приспособить вывод в мемо(multiedit) результата работы так как реализовано тут (samples\win\spfwc\spf4wc.f) . Я так понял этим там занимается слово [color=#000000]FlushJetBuf[/color]. На самом так сказать "нижнем" уровне выводом занимаются слова из src\win\spf_win_io.f я правильно понимаю? Попытаюсь дальше разбираться с исходниками и хелпами. [quote="in4"][/quote] В будущем есть идея реализовать три элемента multiedit. В первом вводиться код, во втором отображается результат его обработки а в третьем вводимый код и результат вместе. Собственно первое уже реализовано, второе пока разясняется а с третим думаю проблем больших не должно возникнуть. Пока пытаюсь разяснить ключевые моменты
|
|
|
|
Добавлено: Вс авг 22, 2010 15:48 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
GEO писал(а): Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Я делал однострочное edit-поле для EVALUATE . "Программа", которая там вводилась, должна была вернуть одно число на стеке. Оно форматировалось и выводилось в другое edit-поле, т.к. я хотел одновременно видеть и "программу" и результат и иметь возможность редактирования "программы".
[quote="GEO"]Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ?[/quote]Я делал однострочное [b]edit[/b]-поле для [b]EVALUATE[/b] . "Программа", которая там вводилась, должна была вернуть одно число на стеке. Оно форматировалось и выводилось в другое [b]edit[/b]-поле, т.к. я хотел одновременно видеть и "программу" и результат и иметь возможность редактирования "программы".
|
|
|
|
Добавлено: Пт авг 20, 2010 17:03 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
GEO писал(а): Слово EVALUATE только интерпритирует а нужна еще и компиляция
В Форте интерпритация, она-же и компиляция. И вообще, любая компиляция это порождающая код интерпритация. : TST S" : 7. 7 . ;" EVALUATE ; TST 7. GEO писал(а): Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Флаткиным реализовано: в каталоге \samples\win\spfwc\ запускаешь: compile.bat
[quote="GEO"] Слово EVALUATE только интерпритирует а нужна еще и компиляция [/quote]
В Форте интерпритация, она-же и компиляция. И вообще, любая компиляция это порождающая код интерпритация.
[pre]: TST [url=http://fpauk.narod.ru/enc.html#S"]S"[/url] : 7. 7 . ;" [url=http://fpauk.narod.ru/enc.html#EVALUATE]EVALUATE[/url] ; TST 7.[/pre]
[quote="GEO"] Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? [/quote]
Флаткиным реализовано: в каталоге \samples\win\spfwc\ запускаешь: compile.bat
|
|
|
|
Добавлено: Чт авг 19, 2010 16:44 |
|
|
|
|
|
Заголовок сообщения: |
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 ? Тоесть хотелось бы нечто похожее как в консоли но только с оконным интерфейсом как у меня. Пока результат выводиться в консоли рядом с окном программы. Подскажите если кто знает?
Это опять я. Бюсь еще над своим редактором, в коде некоторые вопросы: [code]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[/code] Вынесу вопросы: Слово EVALUATE только интерпритирует а нужна еще и компиляция текста введенного в multiedit. Еще подходит слово EVAL-WORD, но оно компилирует/интерпритирует только одно слово. Возможно надо пройтись по всему тексту в цикле и каждое слово обраотать им? Еще вопрос: как вывести результат выполнения (интерпритации/компиляции) строки назад в multiedit ? Тоесть хотелось бы нечто похожее как в консоли но только с оконным интерфейсом как у меня. Пока результат выводиться в консоли рядом с окном программы. Подскажите если кто знает?
|
|
|
|
Добавлено: Чт авг 19, 2010 15:32 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
GEO писал(а): А вот слова -prop в таблице нет, как оно формируется - загадка Ну, насколько я понял, это в доке просто ПРИМЕР свойства ( PROPerty). В generate-names слово CREATED встречается 3 раза - на каждый вариант, -prop , -prop@ , -prop! . Соответственно, 3 варианта и генерируются. Но в эти тонкости можно и не вдаваться. Разве что когда эту либу переписывать. Я уже несколько раз порывался, но откладывал...
[quote="GEO"]А вот слова -prop в таблице нет, как оно формируется - загадка :([/quote]Ну, насколько я понял, это в доке просто [b]ПРИМЕР[/b] свойства ([b]PROP[/b]erty).
В [b]generate-names[/b] слово [b]CREATED[/b] встречается 3 раза - на каждый вариант, [b]-prop[/b] , [b]-prop@[/b] , [b]-prop![/b] . Соответственно, 3 варианта и генерируются. Но в эти тонкости можно и не вдаваться. Разве что когда эту либу переписывать. Я уже несколько раз порывался, но откладывал... :(
|
|
|
|
Добавлено: Чт авг 05, 2010 14:13 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
in4 ну теперь ясно какое слово генерирует другие слова. Там дальше в тексте идет формирование таблицы и в нем текст: Код: item -text getset тоесть как бы слово endtable берет слово -text и сохраняет его в таблице, как то дописывая еще знаки ! и @ к нему (т.е. получается слово записать текст -text! и взять текст (прочитать в буфер) -text@ ) Вроде немного прояснилось, хотя и самую малость, может есть ошибки в моих предположениях? А вот слова -prop в таблице нет, как оно формируется - загадка :(
in4 ну теперь ясно какое слово генерирует другие слова. Там дальше в тексте идет формирование таблицы и в нем текст: [code] item -text getset [/code] тоесть как бы слово [color=#0000FF]endtable[/color] берет слово [color=#0000FF]-text[/color] и сохраняет его в таблице, как то дописывая еще знаки ! и @ к нему (т.е. получается слово записать текст [color=#0000FF]-text![/color] и взять текст (прочитать в буфер) [color=#0000FF]-text@[/color] ) Вроде немного прояснилось, хотя и самую малость, может есть ошибки в моих предположениях? А вот слова [color=#FF0000] -prop [/color] в таблице нет, как оно формируется - загадка :(
|
|
|
|
Добавлено: Чт авг 05, 2010 02:15 |
|
|
|
|
|
Заголовок сообщения: |
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 ;
Если новичок, я б рекомендовал сначала разобраться в более простых вещах, пописать программки, почувствовать дух, так сказать... Здесь использованы "продвинутые технологии", я такого до этого не встречал, может, просто не смотрел - не надо было... . Да, и рекомендую зарегистрироваться - для читающих будет понятно, один человек спрашивает или разные = надо ли еще раз повторять или нет.
[quote="Гость"]Вопрос где же описываются эти слова " -prop@ " и " -prop! " ?[/quote] [quote="~yz\lib\winlib.f"][code]: 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 ; [/code][/quote]Если новичок, я б рекомендовал сначала разобраться в более простых вещах, пописать программки, почувствовать дух, так сказать... ;) Здесь использованы "продвинутые технологии", я такого до этого не встречал, может, просто не смотрел - не надо было... ;) .
Да, и рекомендую зарегистрироваться - для читающих будет понятно, один человек спрашивает или разные = надо ли еще раз повторять или нет.
|
|
|
|
Добавлено: Ср авг 04, 2010 11:44 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Извините, новичек в Форте, я думаю все когда то ими были. Пытаюсь разобраться, разложить так сказать по полочкам :) . В ~yz/winlib.html сказано : " Библиотека в большой степени базируется на специальных структурах-таблицах. Окна и элементы управления представляются такими таблицами - по большому счету, списками свойств. Часть свойств могут быть прочитаны и записаны, некоторые - только записаны. Свойство -prop читается словом -prop@ и записывается словом -prop!. " Вопрос где же описываются эти слова " -prop@ " и " -prop! " ? Т.е. получается описываются они не через стандартное слово двоеточие " : " а как то по-другому, как и где именно что то не могу понять :(
Извините, новичек в Форте, я думаю все когда то ими были. Пытаюсь разобраться, разложить так сказать по полочкам :) . В ~yz/winlib.html сказано : " Библиотека в большой степени базируется на специальных структурах-таблицах. Окна и элементы управления представляются такими таблицами - по большому счету, списками свойств. Часть свойств могут быть прочитаны и записаны, некоторые - только записаны. Свойство -prop читается словом -prop@ и записывается словом -prop!. " Вопрос где же описываются эти слова " -prop@ " и " -prop! " ? Т.е. получается описываются они не через стандартное слово двоеточие " : " а как то по-другому, как и где именно что то не могу понять :(
|
|
|
|
Добавлено: Ср авг 04, 2010 02:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Гость писал(а): Ктонибудь знает в какой библиотеке определяется слово -text@ ? Рекомендую прочитать WinLibОсобенно 2. Общая организация библиотеки там ответ на вопрос да и вокруг еще мноооого интересного! И еще: Учебник работы с оконной библиотекой WinLib от Валентина Первых
[quote="Гость"]Ктонибудь знает в какой библиотеке определяется слово -text@ ?[/quote]Рекомендую прочитать[url=http://www.forth.org.ru/~yz/winlib.html]WinLib[/url] Особенно [b]2. Общая организация библиотеки[/b] там ответ на вопрос да и вокруг еще мноооого интересного! ;)
И еще: [url=http://www.forth.org.ru/~vsp/winlibs/winlibs.html]Учебник работы с оконной библиотекой WinLib от Валентина Первых[/url]
|
|
|
|
Добавлено: Вт авг 03, 2010 16:51 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Про поиск по форт файлу. По умолчанию ведётся поиск только в зарегистрированных типах файлов. Остальные игнорируются. Нужно внести в реестр: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex "FilterFilesWithUnknownExtensions"=dword:00000001
Про поиск по форт файлу. По умолчанию ведётся поиск только в зарегистрированных типах файлов. Остальные игнорируются. Нужно внести в реестр: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex "FilterFilesWithUnknownExtensions"=dword:00000001
|
|
|
|
Добавлено: Вс авг 01, 2010 19:29 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Ктонибудь знает в какой библиотеке определяется слово -text@ ? Делал поиск по всем либам, нашел только использование его в winctl.f в описании другого слова: Код: : size-of-text { ctl \ [ 255 ] str -- tx ty } str ctl -text@ str ctl text-size ; И что то винда ХП не хочет искать по слову в файлах если разширение у них .f
Ктонибудь знает в какой библиотеке определяется слово -text@ ? Делал поиск по всем либам, нашел только использование его в winctl.f в описании другого слова: [code] : size-of-text { ctl \ [ 255 ] str -- tx ty } str ctl -text@ str ctl text-size ; [/code] И что то винда ХП не хочет искать по слову в файлах если разширение у них .f
|
|
|
|
Добавлено: Вс авг 01, 2010 18:41 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Гость писал(а): 5) Как сделать возможным добавления в multiedit текста большого объема (1 Мбайт например) ? Послать edit-у сообщение wParam= EM_LIMITTEXT , в Edit controls on Windows NT/2000/XP можно удлинить до 0x7FFFFFFE символов (байтовых или 2байтовых). Это для однострочных edit-ов. Для многострочных - -1.
[quote="Гость"]5) Как сделать возможным добавления в multiedit текста большого объема (1 Мбайт например) ?[/quote]Послать [b]edit[/b]-у сообщение [b]wParam[/b]=[b]EM_LIMITTEXT[/b] , в Edit controls on Windows NT/2000/XP можно удлинить до [b]0x7FFFFFFE[/b] символов (байтовых или 2байтовых). Это для однострочных [b]edit[/b]-ов. Для многострочных - [b]-1[/b].
|
|
|
|
Добавлено: Пн июл 26, 2010 16:23 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Гость писал(а): 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку, пытался сделать так: text_in STR@ EVALUATE Решение 1..3 Код: DIS-OPT \ для SPF ниже 4.10 под NT
REQUIRE toolbar ~yz/lib/wincc.f \ 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !??почему так? \ 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? REQUIRE STR@ ~ac/lib/str5.f
SET-OPT
0 VALUE multiedit_in "" VALUE text_multiedit_in
"" VALUE text_in "" VALUE text_out "" VALUE text_in_out
\ процедура запуска скрипта PROC: RunScript S" 2 2 * . CR " text_in STR+ \ заносим в текст в строку text_in STRA multiedit_in set-text \ присваеваем элементу multiedit наш текст \ 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку \ пытался сделать так: text_in STR@ EVALUATE \ 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? \ 5) Как сделать возможным добавления в multiedit текста большого объема( 1 Мбайт например ) ? 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 | \ W: ( ->bl; -- n) Выбрать следующее слово, найти его в списке констант и вернуть значение \ sb_vert (скрул бар вертикальный ) из файла констант винды ( windows.const ) \ this Переменная, в которой хранится последний созданный элемент управления. \ -hwnd Системный дескриптор окна. Часто требуется для прямого вызова \ функций Windows, не предусмотренных в библиотеке. \ -hwnd@ взять дескриптор \ ShowScrollBar из winlib.f ( WINAPI: ShowScrollBar USER32.DLL ) === \ создаем кнопку с надписю " >>" которая будет выполнять определенную нами процедуру 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 ;
run BYE
Но при повторном нажатии на кнопку "Выполнить!" SPF вылетает . Пока не разобрался... Может, кто поможет?
[quote="Гость"]3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку, пытался сделать так: text_in STR@ EVALUATE[/quote]Решение 1..3 [code]DIS-OPT \ для SPF ниже 4.10 под NT
REQUIRE toolbar ~yz/lib/wincc.f \ 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !??почему так? \ 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? REQUIRE STR@ ~ac/lib/str5.f
SET-OPT
0 VALUE multiedit_in "" VALUE text_multiedit_in
"" VALUE text_in "" VALUE text_out "" VALUE text_in_out
\ процедура запуска скрипта PROC: RunScript S" 2 2 * . CR " text_in STR+ \ заносим в текст в строку text_in STRA multiedit_in set-text \ присваеваем элементу multiedit наш текст \ 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку \ пытался сделать так: text_in STR@ EVALUATE \ 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? \ 5) Как сделать возможным добавления в multiedit текста большого объема( 1 Мбайт например ) ? 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 | \ W: ( ->bl; -- n) Выбрать следующее слово, найти его в списке констант и вернуть значение \ sb_vert (скрул бар вертикальный ) из файла констант винды ( windows.const ) \ this Переменная, в которой хранится последний созданный элемент управления. \ -hwnd Системный дескриптор окна. Часто требуется для прямого вызова \ функций Windows, не предусмотренных в библиотеке. \ -hwnd@ взять дескриптор \ ShowScrollBar из winlib.f ( WINAPI: ShowScrollBar USER32.DLL ) === \ создаем кнопку с надписю " >>" которая будет выполнять определенную нами процедуру 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 ;
run BYE [/code]Но при повторном нажатии на кнопку "Выполнить!" SPF вылетает :(. Пока не разобрался... Может, кто поможет? ;)
|
|
|
|
Добавлено: Пн июл 26, 2010 16:09 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
Гость писал(а): 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !?? почему так? Похоже на то как будто вообще не подключается если стоит первой. Из-за разных представлений в библиотеках строк, определенных через ". ~ac писал(а): Слово " [кавычка] возвращает строку не в виде addr u, а в виде одного числа s, которое можно преобразовать в addr u с помощью слова
STR@ [ s -- addr u ]
~yz писал(а): Код: : " ( -->") c: " PARSE ( a #) STATE @ IF POSTPONE ALITERAL HERE DUP >R ESC-CZMOVE R> ZLEN 1+ ALLOT ELSE PAD 512 + ESC-CZMOVE PAD 512 + THEN ; IMMEDIATE
: Z" [COMPILE] " ; IMMEDIATE Гость писал(а): 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй как это исправить? В WinLib для определения констант-строк можно использовать Z" вместо ". Строки будут нормальные, проверил.
[quote="Гость"]1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !?? почему так? Похоже на то как будто вообще не подключается если стоит первой.[/quote]Из-за разных представлений в библиотеках строк, определенных через [b]"[/b]. [quote="~ac"]Слово " [кавычка] возвращает строку не в виде addr u, а в виде одного числа s, которое можно преобразовать в addr u с помощью слова
STR@ [ s -- addr u ] [/quote][quote="~yz"][code]: " ( -->") c: " PARSE ( a #) STATE @ IF POSTPONE ALITERAL HERE DUP >R ESC-CZMOVE R> ZLEN 1+ ALLOT ELSE PAD 512 + ESC-CZMOVE PAD 512 + THEN ; IMMEDIATE
: Z" [COMPILE] " ; IMMEDIATE[/code] [/quote] [quote="Гость"]2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить?[/quote]В WinLib для определения констант-строк можно использовать [b]Z"[/b] вместо [b]"[/b]. Строки будут нормальные, проверил.
|
|
|
|
Добавлено: Пн июл 26, 2010 13:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: Особенности работы WinLib by ~yz+~ygrek |
|
|
in4 спасибо за код. Немного его переработал и дальше возникли некторые вопросы. Вот код, в него по ходу работы вставлял коментарии для себя и возникшие вопросы: Код: DIS-OPT \ для SPF ниже 4.10 под NT
REQUIRE toolbar ~yz/lib/wincc.f \ 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !??почему так? \ 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? REQUIRE STR@ ~ac/lib/str5.f
SET-OPT
0 VALUE multiedit_in "" VALUE text_multiedit_in
"" VALUE text_in "" VALUE text_out "" VALUE text_in_out
\ процедура запуска скрипта PROC: RunScript S" 2 2 * . " text_in STR+ \ заносим в текст в строку text_in multiedit_in set-text \ присваеваем элементу multiedit наш текст \ 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку \ пытался сделать так: \ text_in STR@ EVALUATE \ 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? \ 5) Как сделать возможным добавления в multiedit текста большого объема( 1 Мбайт например ) ? PROC;
MESSAGES: multiedit_in_msg \ назначаем обработку сообщений от элемента multiedit M: en_killfocus multiedit_in TO text_multiedit_in M; MESSAGES;
: make-grids GRID -yfixed " Введите текст (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 | \ W: ( ->bl; -- n) Выбрать следующее слово, найти его в списке констант и вернуть значение \ sb_vert (скрул бар вертикальный ) из файла констант винды ( windows.const ) \ this Переменная, в которой хранится последний созданный элемент управления. \ -hwnd Системный дескриптор окна. Часто требуется для прямого вызова \ функций Windows, не предусмотренных в библиотеке. \ -hwnd@ взять дескриптор \ ShowScrollBar из winlib.f ( WINAPI: ShowScrollBar USER32.DLL ) === \ создаем кнопку с надписю " >>" которая будет выполнять определенную нами процедуру " Выполнить! >> " button (/ -command RunScript /) | GRID; winmain -grid! ;
: 0WINDOWS 0 create-window TO winmain W: color_3dface syscolor winmain -bgcolor! \ серый фон (if станд. цвета) " Редактор" winmain -text!
make-grids winmain wincenter winmain winshow ;
: run WINDOWS... 0WINDOWS ...WINDOWS BYE ;
run BYE
Собственно вынесу интересующие вопросы: 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !?? почему так? Похоже на то как будто вообще не подключается если стоит первой. 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку, пытался сделать так: text_in STR@ EVALUATE 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? 5) Как сделать возможным добавления в multiedit текста большого объема (1 Мбайт например) ?
in4 спасибо за код. Немного его переработал и дальше возникли некторые вопросы. Вот код, в него по ходу работы вставлял коментарии для себя и возникшие вопросы: [code]DIS-OPT \ для SPF ниже 4.10 под NT
REQUIRE toolbar ~yz/lib/wincc.f \ 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !??почему так? \ 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? REQUIRE STR@ ~ac/lib/str5.f
SET-OPT
0 VALUE multiedit_in "" VALUE text_multiedit_in
"" VALUE text_in "" VALUE text_out "" VALUE text_in_out
\ процедура запуска скрипта PROC: RunScript S" 2 2 * . " text_in STR+ \ заносим в текст в строку text_in multiedit_in set-text \ присваеваем элементу multiedit наш текст \ 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку \ пытался сделать так: \ text_in STR@ EVALUATE \ 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? \ 5) Как сделать возможным добавления в multiedit текста большого объема( 1 Мбайт например ) ? PROC;
MESSAGES: multiedit_in_msg \ назначаем обработку сообщений от элемента multiedit M: en_killfocus multiedit_in TO text_multiedit_in M; MESSAGES;
: make-grids GRID -yfixed " Введите текст (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 | \ W: ( ->bl; -- n) Выбрать следующее слово, найти его в списке констант и вернуть значение \ sb_vert (скрул бар вертикальный ) из файла констант винды ( windows.const ) \ this Переменная, в которой хранится последний созданный элемент управления. \ -hwnd Системный дескриптор окна. Часто требуется для прямого вызова \ функций Windows, не предусмотренных в библиотеке. \ -hwnd@ взять дескриптор \ ShowScrollBar из winlib.f ( WINAPI: ShowScrollBar USER32.DLL ) === \ создаем кнопку с надписю " >>" которая будет выполнять определенную нами процедуру " Выполнить! >> " button (/ -command RunScript /) | GRID; winmain -grid! ;
: 0WINDOWS 0 create-window TO winmain W: color_3dface syscolor winmain -bgcolor! \ серый фон (if станд. цвета) " Редактор" winmain -text!
make-grids winmain wincenter winmain winshow ;
: run WINDOWS... 0WINDOWS ...WINDOWS BYE ;
run BYE [/code] Собственно вынесу интересующие вопросы: 1) Если подключить либу str5.f перед wincc.f тогда при работе со строками программа вылетает !?? почему так? Похоже на то как будто вообще не подключается если стоит первой. 2) При подключении либы str5.f все надписи на кнопках, лейблах, мемо пишутся абракадаброй :( как это исправить? 3) Надо как то выполнить введенный текст в multiedit. У меня здесь вылетает, не показав даже ошибку, пытался сделать так: text_in STR@ EVALUATE 4) Как вывести результат выполнения (интерпритации/компиляции) строки в multiedit ? 5) Как сделать возможным добавления в multiedit текста большого объема (1 Мбайт например) ?
|
|
|
|
Добавлено: Пн июл 26, 2010 03:29 |
|
|
|
|