OberonCore
https://forum.oberoncore.ru/

Ошибка при передаче параметра типа CHAR на форме из кнопки
https://forum.oberoncore.ru/viewtopic.php?f=35&t=4948
Страница 1 из 1

Автор:  sasha-kulov [ Суббота, 25 Январь, 2014 20:24 ]
Заголовок сообщения:  Ошибка при передаче параметра типа CHAR на форме из кнопки

Сын пишет программу калькулятора, я помогаю.
На форме в свойстве "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 КБ]
Скачиваний: 649
Комментарий к файлу: Модуль
Calc.odc [2.15 КБ]
Скачиваний: 664

Автор:  Пётр Кушнир [ Суббота, 25 Январь, 2014 20:28 ]
Заголовок сообщения:  Re: Ошибка при передаче параметра типа CHAR на форме из кноп

Цитата:
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].

Автор:  sasha-kulov [ Суббота, 25 Январь, 2014 20:45 ]
Заголовок сообщения:  Re: Ошибка при передаче параметра типа CHAR на форме из кноп

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

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/