Страница 2 из 2
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 15:16
kreator
Shur писал(а):Креатор, спасибо, конечно. А замыкания часом не получится? Лучше не стану.
Да, не бойся. Посмотрел в шаблонах CapeSoft, то же самое:
Код: Выделить всё
system{prop:MessageHook} = address(ds_Message)
У них в инициализации класса это.
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 23:18
Shur
Чтобы в теме не было непроверенных вещей, я проверил себя и перенацелил MessageHook на свою процедуру MessageCR (текст процедуры и суть предлагаемого см. выше по теме). Я был прав -- хук привёл к хэнгу, т.е. к сваливанию программы. Впрочем это было очевидно и до теста.

Проблема с MESSAGE()
Добавлено: 26 Апрель 2017, 21:55
ingasoftplus
Нарисовалась тут у меня занятная непонятка по message. Есть стандартная с6 авс прикладуха. И вот стал одну процедуру отлаживать и наткнулся на глюк просто нет слов.
есть в коде, все по ингишу
Код: Выделить всё
message('one')
message('two')
message('three')
так блин окошки с сообщениями вылезают так
two
three
первый мессадж вообще не выводится!!! как будто его нет!!! закоментишь первый - вылезет только
three
как-будто певый месадж съедается в никуда!! Дурка. Сам бы не налетел - никогда не поверил!!
никаких хуков и т.п. Обычный cтандартный message()
Что это???
Проблема с MESSAGE()
Добавлено: 26 Апрель 2017, 22:28
Игорь Столяров
Какие-то грабли конкретного приложения ...
Вставил указанный код и проверил - все работает штатно.
Попробуйте сделать тоже самое в каком-нибудь примере из поставки C63.
Как догадка: здесь может быть что-то с LOCKTHREAD / UNLOCKTHREAD - они могут нарушать обработку сообщений.
Проблема с MESSAGE()
Добавлено: 26 Апрель 2017, 22:44
ingasoftplus
Игорь Столяров писал(а): 26 Апрель 2017, 22:28
Какие-то грабли конкретного приложения ...
Вставил указанный код и проверил - все работает штатно.
Попробуйте сделать тоже самое в каком-нибудь примере из поставки C63.
Как догадка: здесь может быть что-то с LOCKTHREAD / UNLOCKTHREAD - они могут нарушать обработку сообщений.
в том то и дело, никаких локов и т.п. Обычное окошко...
Да, проверил на с10 - конечно все работает. Но тут - просто дурь какая-то. вообще не понятно, как локализовать.
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 10:21
Губин Игорь
ingasoftplus писал(а): 26 Апрель 2017, 22:44 Но тут - просто дурь какая-то. вообще не понятно, как локализовать.
Поставь между message
A#=2
Или т.п.
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 10:52
Yufil
У меня были проблемы - приложение падало, если Message открывалось в окне с OCX, пришлось переписывать.
Код: Выделить всё
If Confirm('Подвердите очистку текста')
?Text{'ResetContents'}
End
...
Say('Пожалуйста, заполните сначала справочник филиалов и укажите текущее подразделение (филиал)')
Код: Выделить всё
Confirm PROCEDURE (MSGText,Caption) ! Declare Procedure
FilesOpened LONG !
Loc:Message Cstring(4000)
Loc:Caption Cstring(1000)
CODE
Hwnd#=0 !{Prop:Handle}
Code#=MB_YesNo+MB_IconQuestion+MB_SystemModal
Loc:Message=Clip(MsgText)
Loop
I#=Instring('|',Loc:Message,1,1)
If I#=0
Break
Else
Loc:Message[I#]='<10>'
End
End
Loc:Caption='Внимание!'
If ~Omitted(2)
Loc:Caption=Caption
End
UnlockThread()
If MessageBox(HWND#,Loc:Message,Loc:Caption,Code#)=IdYes
LockThread()
Return(1)
Else
LockThread()
Return(0)
End
Код: Выделить всё
Say PROCEDURE (MSGtext,Caption) ! Declare Procedure
FilesOpened LONG !
Loc:Message Cstring(4000)
Loc:Caption Cstring(1000)
CODE
Hwnd#=0 ! {Prop:Handle}
Code#=MB_OK+MB_SystemModal
Loc:Message=Clip(MsgText)
Loop
I#=Instring('|',Loc:Message,1,1)
If I#=0
Break
Else
Loc:Message[I#]='<10>'
End
End
Loc:Caption='Внимание!'
If ~Omitted(2)
Loc:Caption=Caption
End
UnlockThread()
If MessageBox(HWND#,Loc:Message,Loc:Caption,Code#).
LockThread()
Confirm FUNCTION(String,<String>),LONG !Задать вопрос и получить ответ
Say PROCEDURE(String,<String>) !Вывод текста
MessageBox PROCEDURE(Long,*Cstring,*Cstring,UNSIGNED),SIGNED,PASCAL,RAW,NAME('MessageBoxA')
MB_ICONQUESTION EQUATE(00000020h)
MB_SYSTEMMODAL EQUATE(00001000h)
MB_YESNO EQUATE(00000004H)
MB_OK EQUATE(0000h)
DWORD EQUATE(ULong)
IDYES EQUATE(6)
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 10:58
Yufil
а грабли точно есть, недавно дебагал программу, расставил сообщения через Message/Stop. И нифига не выводится.
Пришлось пользовать API Debug Output из FreeABC
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 19:20
ingasoftplus
ладно! всем спасибо! буду иметь ввиду. на данные момент закоментил мессаджи, нет времени разбираться.
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 22:26
Shur
Случай интересный.
Если будет время, то можно попробовать с примерно следующим:
Код: Выделить всё
if message('Invisible message',,,BUTTON:Yes+BUTTON:No,BUTTON:No) = BUTTON:No
message('I have not seen anything')
else
message('I have seen you')
end
Ну и доп. вопрос: а нет ли в программе симуляций нажатий клавиш типа PressKey(EnterKey)?
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 22:34
ingasoftplus
Shur писал(а): 27 Апрель 2017, 22:26
Случай интересный.
Если будет время, то можно попробовать с примерно следующим:
Код: Выделить всё
if message('Invisible message',,,BUTTON:Yes+BUTTON:No,BUTTON:No) = BUTTON:No
message('I have not seen anything')
else
message('I have seen you')
end
Ну и доп. вопрос: а нет ли в программе симуляций нажатий клавиш типа PressKey(EnterKey)?
по первому - не совсем уловил мысль.
по второму - нет. обычные рутинки. и мессаджи идут именно один за другим!
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 22:42
Shur
Просто мне кажется, что первый месседж "глотается", т.е. вы не успеваете его увидеть, если, допустим, идет отработка клавиши Enter. Ну и хотелось проверить эту версию.
Проблема с MESSAGE()
Добавлено: 27 Апрель 2017, 23:10
ingasoftplus
Shur писал(а): 27 Апрель 2017, 22:42
Просто мне кажется, что первый месседж "глотается", т.е. вы не успеваете его увидеть, если, допустим, идет отработка клавиши Enter. Ну и хотелось проверить эту версию.
интересно - проверю еще раз!
Проблема с MESSAGE()
Добавлено: 28 Апрель 2017, 14:11
Yufil
Интересно с дебаггером посмотреть. Может быть, первый Message вообще не компилируется, было такое ...
Кстати, глянул - у меня, оказывается, во всех приложениях вместо Message с незапамятных времён используются описанные
выше Say и Confirm.
А вот для отладки нового приложения решил прописать Message, лень было переносить процедуры. И облом...
Проблема с MESSAGE()
Добавлено: 10 Май 2017, 16:09
Kromeshnik
да, тоже напрягало, что на 10 обрезался текст при message. Для себя делаю так, вставляю в конце текста <13,10>:
message('Скопировать с реальной машины файлы<13,10> ')
для своего дебага этого достаточно, ну а если для других нужд, то лучше, кочнено, через winapi