Как правильно делить?

  • Автор темы Inbox
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

Inbox

#1
Поправте плиз

var
X,Y:Integer;
begin
X:=floattostr(edit1.text);
Y:=X/100;


Если я пишу: Y:=X+100;
То всё считает а деление как правильно реализовать?
 
I

Inbox

#3
procedure TForm1.Button1Click(Sender: TObject);
var
VisPomR,VisSecR1,VisSecR2,VisSecR3,VisSecR4:Integer;
SummSec:Integer;
KoeffR:Integer;


VisPomR:=StrToint(Edit1.Text);
VisSecR1:=StrToint(Edit2.Text);
VisSecR2:=StrToint(Edit3.Text);
VisSecR3:=StrToint(Edit4.Text);
VisSecR4:=StrToint(Edit5.Text);

SummSec:=(VisSecR1+VisSecR2+VisSecR3+VisSecR4);

KoeffR:=(SummSec/416);//здесь выдаёт ошибку

Меняю / на '+' или '*' то всё нормально считает..........

Обьявляетй
X,Y:НЕ Integer; а
X,Y:real;

Ща попробуем!!

Обьявляетй
X,Y:НЕ Integer; а
X,Y:real;

Ща попробуем!!

Ооооо!! Точна
Всё работает........
Спасибо!!
Чо то я запяматовал!!
 
I

Inbox

#4
var
X:Integer;
Н:Real;
begin
X:=floattostr(edit1.text);
Y:=X/100;
Image.top:=(Y+50);

Теперь это не работает!
в чёмдело?
 

morpheus

скриптописец
07.08.2006
3 915
1
#5
Для: Inbox
Что такое Y ?
зачем нужен Н ?

Image.top - это

Delphi syntax:

property Top: Integer;

Читайте хэлп, и вообще в вашем случае надо использовать div

var
X, Y:Integer;

begin
X:=Inttostr(edit1.text);
Y:=X div 100;
Image.top:=(Y+50);
 
I

Inbox

#6
var
VisPomR,VisSecR1,VisSecR2,VisSecR3,VisSecR4:Integer;
MvisSekR1,MvisSekR2,MvisSekR3,MvisSekR4,MvisSekR:Real;
KolSecR:Integer;
SummSec:Real;
KoeffR:Real;

begin
VisPomR:=StrToint(Edit1.Text);
VisSecR1:=StrToint(Edit2.Text);
VisSecR2:=StrToint(Edit3.Text);
VisSecR3:=StrToint(Edit4.Text);
VisSecR4:=StrToint(Edit5.Text);

SummSec:=(VisSecR1+VisSecR2+VisSecR3+VisSecR4);

KoeffR:=(SummSec/416);

MvisSekR1:=(VisSecR1*KoeffR);
MvisSekR2:=(VisSecR2*KoeffR);
MvisSekR3:=(VisSecR3*KoeffR);
MvisSekR4:=(VisSecR4*KoeffR);
Image1.Top:= (MvisSekR4+MvisSekR3+MvisSekR2);// Здесь ошибка........
Image2.Top:= (MvisSekR4+MvisSekR3);// Здесь ошибка........
Image3.Top:= (MvisSekR4)// И Здесь соответственно.....
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
Для: Inbox
ВЫ ПЫТАЕТЕСЬ ПРИСВОИТЬ типу INTEGER (целое значения от 0 до 32 768) - значение типа REAL! канечно у Вас будет ошибка

я же обьяснил как делать, используйте div

Код:
var
X, Y:Integer;

begin
X:=Inttostr(edit1.text);
Y:=X div 100;
Image.top:=(Y+50);
 
I

Inbox

#8
Получилось! спасибо.
Я везде присвоил Integer и использовал div
верно???

У меня Delphi 2007
работает прекрасно, а вот Хелп в нём не работает..........
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Для: Inbox
Верно , но учтите Div дает деление с отчечением остатка
например: 7 div 3 = 2 а не 2,333333
 
I

Inbox

#10
Это я ужезаметил,
Мне не подходит........
перед тем как высчитать я нахожу коэффициент
а он почти всегда получается 0.654....
Как это обойти?

var
X, Y:Integer;

begin
X:=Inttostr(edit1.text);
Y:=200 div х;
Image.top:=(Y+50);
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
Для: Inbox
так а что Вам мешает высчитать коефициент, но ведь в любом случае Image.top примет только целое значение ?! Вам коефициент нужен для того что бы двигать изображение?
Код:
 var
X, Y:Integer;
koef: real;
begin
X:=Inttostr(edit1.text);
Y:=200 div х;
koef := 200 / x;
Image.top:=(Y+50);
 
I

Inbox

#12
У меня высота Image 400пикселей
Надо в этот размер вместить 4 объекта (допустим этажи здания)
пользователь вводит 4размера (Х,Y,S,T) в милиметрах (целое число)
что бы вписать его размер в высоту моего окна применяю вот что:
(400/(Х+Y+S+T)) и получаю коэффициент.
Далее

Х*коэффициент и получаю свой размер,. .этажа что бы попасть в масштаб моих 400пикселей
 
I

Inbox

#13
А как огруллить до целого числа?

Image.Top:=(округлить X);
 

morpheus

скриптописец
07.08.2006
3 915
1
#14
Для: Inbox
Round

Раз у Вас нет хэлпа, то вот пример от туда
Код:
var

S, T: string;

begin

Str(1.4:2:1, T);
S := T + ' rounds to ' + IntToStr(Round(1.4)) + #13#10;
Str(1.5:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(1.5)) + #13#10;
Str(-1.4:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(-1.4)) + #13#10;
Str(-1.5:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(-1.5));
MessageDlg(S, mtInformation, [mbOk], 0, mbOk);
end;
 
S

semenov-aks

#15
А почему IntToStr() и FloatToStr() может наобоот StrToInt() и StrToFloat() ?
 
Статус
Закрыто для дальнейших ответов.