|
Прочие вопросы Вопросы не касающиеся программирования (установка, настройка...) |
27.03.2012, 15:28
|
#1
|
Нуждающийся
Регистрация: 12.10.2009
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Неработает код
program complex;
var n11,n22,n1,n1j,n2,n2j,op,otvet:integer;
d1,m1,d2,m2,res1,res2:integer;
oper,itog1,itog2:string;
cl,cm,resh:command;
begin
n11:=FormAddString('N1');
n1:=FormAddTextField('deystvit','0',50,TF_NUMERIC);
n1j:=FormAddTextField('+j','0',50,TF_NUMERIC);
n22:=FormAddString('N2');
n2:=FormAddTextField('deystvit','0',50,TF_NUMERIC);
n2j:=FormAddTextField('+j','0',50,TF_NUMERIC);
op:=FormAddTextField('operaciya','-',50,TF_ANY);
ShowForm;
d1:=FormGetValue(n1);
m1:=FormGetValue(n1j);
d2:=FormGetValue(n2);
m2:=FormGetValue(n2j);
oper:=FormGetText(op);
resh:=CreateCommand('reshit',CM_SCREEN,2);
AddCommand(resh);
repeat
cl:=GetClickedCommand;
until cl=resh;
if oper='+' then
begin
res1:= d1 + d2;
res2:= m1 + m2;
end;
if oper='-' then
begin
res1:=d1-d2;
res2:=m1-m2;
end;
itog1:= integerToString(res1) ;
itog2:= integerToString(res2) ;
otvet:=FormAddString(itog1+'+j'+itog2);
ShowForm;
cm := createCommand('Exit', CM_OK, 1);
addCommand(cm);
repeat
delay(100);
until getClickedCommand = cm;
end.
Нерешает
if oper='+' then
begin
res1:= d1 + d2;
res2:= m1 + m2;
end;
if oper='-' then
begin
res1:=d1-d2;
res2:=m1-m2;
end;
или какая ни-ть другая часть кода. Может не вытаскивает значения из TextField
d1:=FormGetValue(n1);
m1:=FormGetValue(n1j);
d2:=FormGetValue(n2);
m2:=FormGetValue(n2j);
oper:=FormGetText(op);
Скрин на эмуляторе
|
(Offline)
|
|
27.03.2012, 15:47
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Неработает код
Не знаю, как на счет вычислительного кода, но FormGetValue используется для получения позиции Gauge, он не предназначен для получения значений из TextField. Нужно использовать FormGetText.
|
(Offline)
|
|
27.03.2012, 15:57
|
#3
|
Нуждающийся
Регистрация: 12.10.2009
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Неработает код
Сообщение от ViNT
Не знаю, как на счет вычислительного кода, но FormGetValue используется для получения позиции Gauge, он не предназначен для получения значений из TextField. Нужно использовать FormGetText.
|
Исправил на
program complex;
var n11,n22,n1,n1j,n2,n2j,op,otvet:integer;
d1,m1,d2,m2,res1,res2:integer;
oper,itog1,itog2,d11,m11,d22,m22:string;
cl,cm,resh:command;
begin
n11:=FormAddString('N1');
n1:=FormAddTextField('deystvit','0',50,TF_NUMERIC);
n1j:=FormAddTextField('+j','0',50,TF_NUMERIC);
n22:=FormAddString('N2');
n2:=FormAddTextField('deystvit','0',50,TF_NUMERIC);
n2j:=FormAddTextField('+j','0',50,TF_NUMERIC);
op:=FormAddTextField('operaciya','-',50,TF_ANY);
ShowForm;
d11:=FormGetText(n1);
m11:=FormGetText(n1j);
d22:=FormGetText(n2);
m22:=FormGetText(n2j);
oper:=FormGetText(op);
d1:=StringToInteger(d11);
d2:=StringToInteger(d22);
m1:=StringToInteger(m11);
m2:=StringToInteger(m22);
resh:=CreateCommand('reshit',CM_SCREEN,2);
AddCommand(resh);
repeat
cl:=GetClickedCommand;
until cl=resh;
if oper='+' then
begin
res1:= d1 + d2;
res2:= m1 + m2;
end;
if oper='-' then
begin
res1:=d1-d2;
res2:=m1-m2;
end;
itog1:= integerToString(res1) ;
itog2:= integerToString(res2) ;
otvet:=FormAddString(itog1+'+j'+itog2);
ShowForm;
cm := createCommand('Exit', CM_OK, 1);
addCommand(cm);
repeat
delay(100);
until getClickedCommand = cm;
end.
а ответ 0+j0
Может условие if неработает
Да нет. Убрал Условие if оставив лишь операции сложения а он всё равно мне нули показывает.
|
Последний раз редактировалось reyn90, 27.03.2012 в 16:20.
Причина: Предположение
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:12.
|