forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Прочие вопросы (http://forum.boolean.name/forumdisplay.php?f=50)
-   -   Неработает код (http://forum.boolean.name/showthread.php?t=16541)

reyn90 27.03.2012 15:28

Неработает код
 
Вложений: 1
Код:

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);

Скрин на эмуляторе

ViNT 27.03.2012 15:47

Ответ: Неработает код
 
Не знаю, как на счет вычислительного кода, но FormGetValue используется для получения позиции Gauge, он не предназначен для получения значений из TextField. Нужно использовать FormGetText.

reyn90 27.03.2012 15:57

Ответ: Неработает код
 
Цитата:

Сообщение от ViNT (Сообщение 223784)
Не знаю, как на счет вычислительного кода, но 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 оставив лишь операции сложения а он всё равно мне нули показывает.


Часовой пояс GMT +4, время: 16:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot