www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   Прочие вопросы (http://forum.boolean.name/forumdisplay.php?f=50)
-   -   Да что я не так делаю? (http://forum.boolean.name/showthread.php?t=16544)

reyn90 27.03.2012 14:39

Да что я не так делаю?
 
Код:

program Calk;

var ch1,ch2,ress,ch11,ch22,res:integer;
  //  ch11,ch22,res:real;
    cmdr:command;
    chislo1,chislo2:string;
begin
        ShowForm;
        ch1:=FormAddTextField('Первое число','1.0',50,TF_NUMERIC);
        ch2:=FormAddTextField('Второе число','2.0',50,TF_NUMERIC);
        cmdr:=createCommand('Решить',CM_SCREEN,1);
        addCommand(cmdr);
        repeat
        until GetClickedCommand = cmdr;

chislo1:=formGetText(ch1);
chislo2:=formGetText(ch2);

        ch11:=StringToInteger(chislo1);
  ch22:=StringToInteger(chislo2);

res:=ch11+ch22;
ress:=FormAddTextField('Результат:',IntegerToString(ress),50,TF_NUMERIC);
delay(5000);
end.

В пример складываю 10+2
Результатом является 0
почему неработает команда
Код:

res:=ch11+ch22;

reyn90 27.03.2012 14:56

Ответ: Да что я не так делаю?
 
Хоть кто нить, скопируйте код и проверьте, может он у вас работает? Может с моим компом что не так?

AVL 27.03.2012 14:58

Ответ: Да что я не так делаю?
 
Код:

        ch1:=FormAddTextField('Первое число','1.0',50,TF_NUMERIC);
        ch2:=FormAddTextField('Второе число','2.0',50,TF_NUMERIC);

1.0, 2.0 - испрользуется тип integer, а тут дроби, они в integer не переведутся
Код:

res:=ch11+ch22;
ress:=FormAddTextField('Результат:',IntegerToString(ress),50,TF_NUMERIC);

IntegerToString(ress) ??? результат ведь в переменной res.

reyn90 27.03.2012 15:11

Ответ: Да что я не так делаю?
 
А как осуществить тип real? Например вводят 12.23 и 23.12 нужно чтоб сложились
Код:

program Calk;

var ch1,ch2,ress:integer;{ch11,ch22,}
    ch11,ch22,res:real;
    cmdr:command;
    chislo1,chislo2:string;
begin
        ShowForm;
        ch1:=FormAddTextField('Первое число','1',50,TF_NUMERIC);
        ch2:=FormAddTextField('Второе число','2',50,TF_NUMERIC);
        cmdr:=createCommand('Решить',CM_SCREEN,1);
        addCommand(cmdr);
        repeat
        until GetClickedCommand = cmdr;

chislo1:=formGetText(ch1);
chislo2:=formGetText(ch2);

        ch11:=StringToReal(chislo1);
              ch22:=StringToReal(chislo2);


res:=ch11+ch22;
ress:=FormAddTextField('Результат:',RealToString(res),50,TF_NUMERIC);
delay(5000);
end.

На выделенные строки паскаль ругается

AVL 27.03.2012 16:55

Ответ: Да что я не так делаю?
 
С английским совсем туго?
[Pascal Error] test_project.mpsrc(18): E421 parameter list is too short

Мало параметров. Открываем мануал и видим:
Цитата:

StringToReal

Извлекает вещественное число из строки текста s. Параметр base указывает на разрядность полученного числа (10 для десятичных чисел).

function StringToReal(str:string; base:integer):real;
Функции RealToString в мп нету (наверное...), но можно вместо
RealToString(res)
использовать
''+res

reyn90 28.03.2012 12:21

Ответ: Да что я не так делаю?
 
Цитата:

Сообщение от AVL (Сообщение 223816)
С английским совсем туго?

Англ перевожу сократом.
Цитата:

Сообщение от AVL (Сообщение 223816)
Извлекает вещественное число из строки текста s.

Так почему же ругается?

reyn90 28.03.2012 12:30

Ответ: Да что я не так делаю?
 
вот что получилось
Код:

otvet:=FormAddString(res1 + '' + oper + 'j' + res2);
[Pascal Error] complex.mpsrc(56): E417 operand is wrong type
res1 и res2 - real

reyn90 28.03.2012 14:32

Ответ: Да что я не так делаю?
 
perd1:=StringToReal(FormGetText(textfieldn1,10));
выдаёт
[Pascal Error] complex.mpsrc(26): E422 error on parameter 2

reyn90 28.03.2012 14:47

Ответ: Да что я не так делаю?
 
исправил. я извиняюсь что такие глупые ошибки.

nil0q 29.03.2012 17:14

Ответ: Да что я не так делаю?
 
Если надо вводить в форму дробные числа, то вот
http://forum.boolean.name/showthread.php?t=15018


Часовой пояс GMT +1, время: 03:35.

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