Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

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

 
Nick_serov   (2006-04-06 00:21) [0]

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

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;


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


 
Yegorchic ©   (2006-04-06 00:38) [1]


>  if (d < strtofloat(edit4.Text)) and (d > strtofloat(edit3.
> Text)) then // d - значение в Edit


Может просто это условие не выполняется?


 
Anatoly Podgoretsky ©   (2006-04-06 00:54) [2]

А первая смысла не имеет, она полностью дублируется второй, затирает результаты первой.


 
Бугага ©   (2006-04-06 05:27) [3]


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

С чего это ты взял? Со значения Edit6.Text?


 
TUser ©   (2006-04-06 05:57) [4]

Отключи оптимизацию, Project -> Options


 
SergP.   (2006-04-06 08:24) [5]


> Nick_serov   (06.04.06 00:21)  


Я не знаю логики твоей программы, но есть подозрение что ты забыл про begin ... end


 
Anatoly Podgoretsky ©   (2006-04-06 09:10) [6]

Бугага ©   (06.04.06 05:27) [3]
А тебе этого мало, это единственная видимая


 
Nick_serov   (2006-04-06 10:12) [7]


> Yegorchic ©   (06.04.06 00:38) [1]
>
>
> >  if (d < strtofloat(edit4.Text)) and (d > strtofloat(edit3.
>
> > Text)) then // d - значение в Edit
>
>
> Может просто это условие не выполняется?


условие выполняется.... Одно затирает другое (если поменять местами части, то не выполняется другое)

То, что стоит последним, то и выполняется!  Что сделать, чтобы избежать этого????   Приписать вторую часть к другому действию нельзя, т.к стоит все это на изменении таблицы!


 
vovnuke ©   (2006-04-06 10:19) [8]

а что ты хочешь получить?


 
ЮЮ ©   (2006-04-06 10:20) [9]

Заведи для a33 Edit7, ибо все что делается в первой части никому не нужно.
На кой ты считаешь a22, помещаешь результат в Edit6, если буквально тут же помещаешь туда a33?


> т.к стоит все это на изменении таблицы!

Не вишу где что-то на этом стоит :)


 
Сергей М. ©   (2006-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) [11]


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


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

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

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

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

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

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


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


> Сергей М. ©   (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:41) [13]


> Сергей М. ©   (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,

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


 
ЮЮ ©   (2006-04-06 10:43) [14]


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

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


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


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


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


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



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


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

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


 
ЮЮ ©   (2006-04-06 11:03) [16]

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

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-й части кода. И чтобы там не делал, оно реально изменится только во второй.


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


> Nick_serov   (06.04.06 10:49) [15]

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

PS.

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

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


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


> Nick_serov   (06.04.06 10:41) [13]


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


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


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


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


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


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


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


Спасибо!!!


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


> Nick_serov   (06.04.06 11:13) [19]

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


 
ЮЮ ©   (2006-04-07 03:18) [22]

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


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

Всем назло у меня все получилось!!!!  Работает для 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;


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

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


 
Бугага ©   (2006-04-07 08:29) [25]


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

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


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


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


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


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


> Nick_serov   (07.04.06 08:21) [23]

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


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


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


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


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


 
SergP ©   (2006-04-08 05:37) [29]


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


:-)

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.037 c
1-1142646504
Кашперук Иван
2006-03-18 04:48
2006.04.23
Открыть файл Word


2-1144412324
kay
2006-04-07 16:18
2006.04.23
Требуется создать динамический двумерный массив real


2-1144395175
pavlov
2006-04-07 11:32
2006.04.23
макросы


3-1140976506
Bashar
2006-02-26 20:55
2006.04.23
Tree+Grid


1-1142613658
on-lite
2006-03-17 19:40
2006.04.23
Включение ScrollLock