Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выполняется только половина.....


Страницы:   1 2

Nick_serov ©   (2006-04-06 00:21:00) 

У меня тут еще одна проблемка возникла.

begin
 try
  if (d < strtofloat(edit4.Text)) and (d > strtofloat(edit3.Text)) then // d - значение в Edit
  a1 := strtofloat(edit5.Text);
  a22 := d / 100 * a1 + d;
  edit6.Text := floattostr(a22);
 except
 end;
end;

begin
  try
   if (d < strtofloat(edit11.Text)) and (d > strtofloat(edit7.Text)) then
   a2 := strtofloat(edit15.Text);
   a33 := d / 100 * a2 + d;
   edit6.Text := floattostr(a33);
   except
  end;
end;


почему-то выполняет только вторую часть кода, а первую толи пропускает, толи она затирается... что делать???


SergP   (2006-04-08 05:37:00) [1]


> и программка получилась симпатишная =)))


:-)

Симпатишнее некуда...

Кстати: А если бы у тебя была сотня диапазонов, ты бы 100 раз воспользовался копипастом, или додумался бы применить цикл?


Nick_serov   (2006-04-07 21:35:00) [2]


> Плохиш ©   (07.04.06 11:00) [27]


> PS. Не раскрыта тема, что будет/должно быть, если число
> попадает в два диапазона


Раскрываю: такого просто не может быть, потому-что - это диапазоны цен, и пользователь устанавливает значение сам (ну например: от 1500 до 3200, дальше идет ну никак не от 3100 до 5000, а от 3200до 5000)


Плохиш   (2006-04-07 11:00:00) [3]


> Nick_serov   (07.04.06 08:21) [23]

begin/end в своих условиях можешь выкинуть.
PS. Не раскрыта тема, что будет/должно быть, если число попадает в два диапазона
PPS. Но главное, что разобрался какой участок кода надо заключать в операторные скобки (begin..end) при использовании условий :-) Молодец!


Nick_serov   (2006-04-07 08:33:00) [4]


> Как-то много всего...


главное - работает, доводкой кода займусь во втором релизе. )


Бугага   (2006-04-07 08:29:00) [5]


> edit6.Text := floattostr(a88);
>     l := strtofloat(edit6.Text);
>     l :=RoundTo(l,1);
>     edit6.Text := floattostr(l);

Как-то много всего...


Nick_serov   (2006-04-07 08:22:00) [6]

ТЕМА ЗАКРЫТА!!!


Nick_serov   (2006-04-07 08:21:00) [7]

Всем назло у меня все получилось!!!!  Работает для 8-ми диапазонов!
и программка получилась симпатишная =)))
Выкладываю для "начинающих":

procedure TForm1.Grid1Click(Sender: TObject);
var
d, f ,h, a11, a22, a33, a44, a55, a66, a77, a88, l : real;

begin
 try
  edit2.Text := grid1.SelectedText;
  d := strtofloat(edit2.Text);
  f := strtofloat(edit2.Text);
 except
 end;

 if (d > strtofloat(edit3.Text)) and (d < strtofloat(edit4.Text)) then
 begin
  try
   a11 := d / 100 * strtofloat(edit5.Text) + d;
   edit6.Text := floattostr(a11);
   l := strtofloat(edit6.Text);
   l :=RoundTo(l,1);
   edit6.Text := floattostr(l);
  except
  end;
 end;

 if (d > strtofloat(edit7.Text)) and (d < strtofloat(edit11.Text)) then
  begin
   try
    a22 := d / 100 * strtofloat(edit15.Text) + d;
    edit6.Text := floattostr(a22);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
   except
   end;
  end;

 if (d > strtofloat(edit8.Text)) and (d < strtofloat(edit12.Text)) then
  begin
   try
    a33 := d / 100 * strtofloat(edit16.Text) + d;
    edit6.Text := floattostr(a33);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
   except
   end;
  end;

 if (d > strtofloat(edit9.Text)) and (d < strtofloat(edit13.Text)) then
  begin
   try
    a44 := d / 100 * strtofloat(edit17.Text) + d;
    edit6.Text := floattostr(a44);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
   except
   end;
  end;

 if (d > strtofloat(edit10.Text)) and (d < strtofloat(edit14.Text)) then
  begin
   try
    a55 := d / 100 * strtofloat(edit18.Text) + d;
    edit6.Text := floattostr(a55);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
    except
   end;
  end;

 if (d > strtofloat(edit19.Text)) and (d < strtofloat(edit24.Text)) then
  begin
   try
    a66 := d / 100 * strtofloat(edit25.Text) + d;
    edit6.Text := floattostr(a66);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
    except
   end;
  end;

 if (d > strtofloat(edit20.Text)) and (d < strtofloat(edit23.Text)) then
  begin
   try
    a77 := d / 100 * strtofloat(edit26.Text) + d;
    edit6.Text := floattostr(a77);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
    except
   end;
  end;

 if (d > strtofloat(edit21.Text)) and (d < strtofloat(edit22.Text)) then
  begin
   try
    a88 := d / 100 * strtofloat(edit27.Text) + d;
    edit6.Text := floattostr(a88);
    l := strtofloat(edit6.Text);
    l :=RoundTo(l,1);
    edit6.Text := floattostr(l);
    except
   end;
  end;
end;


ЮЮ   (2006-04-07 03:18:00) [8]

>Плохиш ©   (06.04.06 11:51) [21]
P.S. Тем более из заголовка топика следует, что автор хочет, чтобы выполнялись обе части кода, а самого удовлетворило решение, когда выполняется лишь одна из двух. Из этой посылки я и исходил.


Плохиш   (2006-04-06 11:51:00) [9]


> Nick_serov   (06.04.06 11:13) [19]

Перед тем как плакать, скажи в каком месте этого топика указано, что если число входит в оба указанных диапазона, то выполняться должна только проверка для первого?


Nick_serov   (2006-04-06 11:14:00) [10]


> Сергей М. ©   (06.04.06 11:07) [18]


Спасибо!!!


Nick_serov   (2006-04-06 11:13:00) [11]


> ЮЮ ©   (06.04.06 11:03) [16]


> Плохиш ©   (06.04.06 11:04) [17]


Спасибо, обосрали с ног до головы.  это моя первая программа, до этого времени за Delphi сидел мало... я конечно понимаю, что до вашего уровня интеллекта мне как до Киева, но вы не делаете ни какой скидки на то, что топик я создал специально в разделе "Начинающим"...


Сергей М.   (2006-04-06 11:07:00) [12]


> Nick_serov   (06.04.06 10:41) [13]


if Условие1 and Условие2 then
 ... действие ..
elseif Условие3 and Условие4 then
 ... другое действие ..


Плохиш   (2006-04-06 11:04:00) [13]


> Nick_serov   (06.04.06 10:49) [15]

У тебя где-то проблемы с логикой и если тебе встроенный отладчик не помогает, то, наверное, стоит подумать о смене работы/специальности.

PS.

> у меня, то, что стоит первым выполняется нормально, а когда
> встаю на ячейку, где число второго диапазона, то оно просто
> пишет его Edit6 без изменений (без надбавки процента)

Это какой же здесь телепатор надо использовать?


ЮЮ   (2006-04-06 11:03:00) [14]

Ты действительно такой или только притворяешься?

begin
 try
  if (d < strtofloat(edit11.Text)) and (d > strtofloat(edit7.Text)) then
  a2 := strtofloat(edit15.Text);
  a33 := d / 100 * a2 + d;
  edit6.Text := floattostr(a33);
  except
 end;
end;

Где в этом коде используется хоть что-то из того, что якобы упорно вычислялось в первой части?
d  здесь именно такое какое и было до 1-й части кода. И чтобы там не делал, оно реально изменится только во второй.


Nick_serov   (2006-04-06 10:49:00) [15]


> ЮЮ ©   (06.04.06 10:43) [14]



> И где это ТО ОНО?


это оно, это переменная d.   d - это значение выделенной в данный момент ячейки

edit2.Text := grid1.SelectedText;
 d := strtofloat(edit2.Text);


ЮЮ   (2006-04-06 10:43:00) [16]


> то оно увеличивается на процент (Edit5), записывается в
> Edit6.

не ОНО, а некое a22, которе нигде дальше не используется. d rfrbv ,skj? nfrbv b jcnftncz/  


>  и если число входит в этот диапазон, то оно увеличивается
> на процент (edit15) и записывается в Edit6


И где это ТО ОНО? Во второй части никак не затрагиваются то что считалось в первой. Т.е. что бы там не посчиталось - оно никому не нужно, если будет работать вторая часть.


Nick_serov   (2006-04-06 10:41:00) [17]


> Сергей М. ©   (06.04.06 10:26) [10]


procedure TForm1.Grid1Click(Sender: TObject);
var
d, h, a1, a2, a3, a4, a5, a22, a33, l : real;
begin
 try
  edit2.Text := grid1.SelectedText;
  d := strtofloat(edit2.Text);
 except
 end;

 try

  if (d < strtofloat(edit4.Text)) then
  if (d > strtofloat(edit3.Text)) then
  a1 := strtofloat(edit5.Text);
  a22 := d / 100 * a1 + d;
  edit6.Text := floattostr(a22);
 except
 end;

  try
   if (d < strtofloat(edit11.Text)) then
   if (d > strtofloat(edit7.Text)) then
   a2 := strtofloat(edit15.Text);
   a33 := d / 100 * a2 + d;
   edit6.Text := floattostr(a33);
   l := strtofloat(edit6.Text);
   l :=RoundTo(l,1);
   edit6.Text := floattostr(l);
  except
  end;
  end;


точно такая же ситуация, если число попадает во второй диапазон, то оно увеличивается на процент, окгругляется и записывается в Edit6,

Если число входит в первый диапазон, то оно просто округляется (хотя в первой части округления не писал!!!) и записывается без увеличения на процент!


Nick_serov   (2006-04-06 10:33:00) [18]


> Сергей М. ©   (06.04.06 10:26) [10]
>
>
> > Nick_serov   (06.04.06 10:12) [7]
>
>
> Измени конструкцию
>
> if Условие1 and Условие2 then
>   ... действие ..
>
> на
>
> if Условие1 then
> if Условие2 then
>   ... действие ..
>
> тогда ситуация прояснится


Ща попробую......


Nick_serov   (2006-04-06 10:33:00) [19]


> Заведи для a33 Edit7,


нельзя другую Edit....  У меня есть диапазон значений

1 Диапазон:  От (Edit3) до (edit4) и если число входит в этот диапазон, то оно увеличивается на процент (Edit5), записывается в Edit6.

2 Диапазон: От (Edit7) до (edit11)  и если число входит в этот диапазон, то оно увеличивается на процент (edit15) и записывается в Edit6

Edit6 - это конечная цена!!! у меня этих диапазонов планируется еще 6 штук.

Все Begin ы и End ы проверил, программа компилируется, но муть такая выходит ((((((((((((((((((((((((((((((((((9

у меня, то, что стоит первым выполняется нормально, а когда встаю на ячейку, где число второго диапазона, то оно просто пишет его Edit6 без изменений (без надбавки процента)


Сергей М.   (2006-04-06 10:26:00) [20]


> Nick_serov   (06.04.06 10:12) [7]


Измени конструкцию

if Условие1 and Условие2 then
  ... действие ..

на

if Условие1 then
if Условие2 then
  ... действие ..

тогда ситуация прояснится


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо