OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 10 Декабрь, 2018 16:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: Суббота, 25 Январь, 2014 20:24 

Зарегистрирован: Четверг, 18 Март, 2010 07:19
Сообщения: 14
Сын пишет программу калькулятора, я помогаю.
На форме в свойстве "Cвязан" кнопок (+ - . =) указываем процедуру Calc.Operation('-') или '+' ...
При нажатии на кнопку получаем сообщение об ошибке
"ошибка команды: несовместимый список параметров в Calc.Operation"
Пример процедуры:
PROCEDURE Operation*(o:CHAR);
BEGIN
CASE o OF
'.':
|'+': |'-': |'*': |'/': |'=':
ELSE
END;
END Operation;

Для проверки ситуации написал такой пример с командером:
MODULE Sample;
IMPORT StdLog;
PROCEDURE Do*(ch:CHAR);
BEGIN
StdLog.Char(ch);
END Do;

END Sample.

Командер"Sample.Do('A')"

При вызове командера получаем подобное же сообщение:
"ошибка команды: несовместимый список параметров в Sample.Do"

При экспериментах попробовал в место Типа CHAR указывать SHORTCHAR вроде все получилось,
но пример не сохранил, а на следующий день ни с CHAR ни с SHORTCHAR ничего не получаеться.
Если бы не положительный результат с SHORTCHAR я бы успокоился и использовал бы целые константы,
Но может кто подскажет, как все таки передать параметр CHAR ИЛИ SHORTCHAR в процедуру при нажатии
кнопки на форме или командера.
Спасибо.


Вложения:
Комментарий к файлу: форма
frmCalc.odc [2.66 КБ]
Скачиваний: 109
Комментарий к файлу: Модуль
Calc.odc [2.15 КБ]
Скачиваний: 91
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Январь, 2014 20:28 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Цитата:
Module StdInterpreter implements a plug-in service for BlackBox: an interpreter for some forms of Component Pascal procedure calls. The text string to be interpreted must conform to the following syntax:

Command = Call { ";" Call }.
Call = ModuleName "." ProcedureName [ "(" Parameter { "," Parameter } ")" ].
Parameter = Integer | String.
Integer = Decimal | Hex.
Decimal = [ "-" ] Digit { Digit }.
Hex = [ "-" ] HexDigit { HexDigit } "H".
String = " ' " { Char } " ' ".

The calls are executed in the given sequence. Parameters corresponding to integers must be of type INTEGER. Parameters corresponding to strings must be value or IN parameters of type ARRAY OF CHAR. The called procedures must not return a value.


Команды в кнопках имеют такие же правила, как и коммандеры, и могут принимать на вход строку/число.
Соответственно, можно например написать
Код:
Operation* (IN o: ARRAY OF CHAR)
, затем вызывать команды как обычно
Код:
(!)"Example.Operation('A')"
В коде процедуры Operation обращаться к первому символу o[0].


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Январь, 2014 20:45 

Зарегистрирован: Четверг, 18 Март, 2010 07:19
Сообщения: 14
Команды в кнопках имеют такие же правила, как и коммандеры, и могут принимать на вход строку/число.
Соответственно, можно например написать
Код:
Operation* (IN o: ARRAY OF CHAR)
, затем вызывать команды как обычно
Код:
(!)"Example.Operation('A')"
В коде процедуры Operation обращаться к первому символу o[0].[/quote]

Спасибо понял.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB