![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неудача с делением [D7, XP]
Greenchel © (2007-06-16 13:41:00)Проблема такова, я сейчас пишу программулину для игры, мне в ней надо рассчитывать ресурсы...
В общем проблема в следующем:
в edit1, edit2 и edit3 вводятся целые числа
затем я перевожу строку в число (ни в integer ни в real не помогает) и вычисляю нужные 2 числа по формуле
1) a:= (c-b) div d;
2) x:= (c-b) mod d;
трабл в том, что я объявляю гобальные переменные, считаю, но в итоге выдаётся ошибка [Error] Unit1.pas(221): Operator not applicable to this operand type
какие только типы я не пробовал integer, real :( ничего не помогает
делал strtoint и strtofloat
помогите плиз :(
Greenchel (2007-06-16 14:38:00) [1]учусь на ошибках :)
Германн (2007-06-16 14:34:00) [2]
> Greenchel © (16.06.07 14:20) [12]
>
> элементарные знаю, просто где-то ошибку допустил, а найти
> не могу =(
Оч сильно сомневаюсь. Особенно после такого:
> xa:= ((e-a) div (l div 60)) div 60;
Я бы так не делал расчет чего либо в программе для РС.
{RASkov} (2007-06-16 14:22:00) [3]> [12] Greenchel © (16.06.07 14:20)
> элементарные знаю
> a, b, c, d, e, f, g, k, l, m, n, o: real;
> xa, xb, xc, xd, xe, xf, xg, xk, xl, xm, xn, xo: real;
> a:= strtofloat(edit1.Text);
> xa:= ((e-a)/(l/60)) div 60;
> xb:= ((e-a)/(l/60)) mod 60;
> [Error] Unit1.pas(220): '(' expected but '[' found
НЕ ЗНАЕШЬ! ;)
Greenchel (2007-06-16 14:20:00) [4]элементарные знаю, просто где-то ошибку допустил, а найти не могу =(
спасибо, если что, ещё спрошу =)
{RASkov} (2007-06-16 14:19:00) [5]> в edit1, edit2 и edit3 вводятся целые числа
Ну и юзай все целые
> a:= strtofloat(edit1.Text);
Замени на
a:=StrToInt(edit1.Text);
и соответственно
xa:= ((e-a) div (l div 60)) div 60;
> [0] Greenchel © (16.06.07 13:41)
> я сейчас пишу программулину для игры
Как можно такое писать незная элементарных действий над числами?
{RASkov} (2007-06-16 14:11:00) [6]> [9] Greenchel © (16.06.07 14:08)
Выбери ченить одно :)
Round
Trunc
;)
Greenchel (2007-06-16 14:08:00) [7][Error] Unit1.pas(220): '(' expected but '[' found
{RASkov} (2007-06-16 14:03:00) [8]> xa:= ((e-a) div (l div 60)) div 60;
здесь либо все должны быть Integer
либо так:
xa:= (Round[Trunc](e-a) div (l div 60)) div 60;
где
xa, l : Integer;
e, a : Double;
Greenchel (2007-06-16 14:01:00) [9]:( и как же мне тогда делить?
я пробовал делать всё в integer
xa:= ((e-a) div (l div 60)) div 60;
тут по идее целые числа выходят, но всё равно та же самя ошибка...
{RASkov} (2007-06-16 13:58:00) [10]> [4] Greenchel © (16.06.07 13:48)
Операторы div и mod для целочисленных типов....
Германн (2007-06-16 13:58:00) [11]
> Greenchel © (16.06.07 13:48) [4]
Операторы div и mod применимы толькок целым числам.
Greenchel (2007-06-16 13:48:00) [12]
var
Form1: TForm1;
a, b, c, d, e, f, g, k, l, m, n, o: real;
xa, xb, xc, xd, xe, xf, xg, xk, xl, xm, xn, xo: real;
implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
try
a:= strtofloat(edit1.Text);
except
Edit1.Text:= '0';
MessageBeep(MB_OK);
ShowMessage('Введите верное число');
end;
end;
тоже самое с двумя остальными edit'ами
procedure TForm1.Image5Click(Sender: TObject);
begin
xa:= ((e-a)/(l/60)) div 60;
xb:= ((e-a)/(l/60)) mod 60;
end;
Германн (2007-06-16 13:46:00) [13]
> трабл в том, что я объявляю гобальные переменные, считаю,
> но в итоге выдаётся ошибка [Error] Unit1.pas(221): Operator
> not applicable to this operand type
>
> какие только типы я не пробовал integer, real :( ничего
> не помогает
> делал strtoint и strtofloat
>
> помогите плиз :(
>
Чем помочь-то? Верёвку намылить? Или может покажешь реальный код, который не работает?
Greenchel (2007-06-16 13:46:00) [14]исходники в смысле?
Desdechado (2007-06-16 13:44:00) [15]Тексты проб где?