Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2015, 08:12   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
Стрелка Расчет с оператором if

Здравствуйте, есть функция для расчета стоимости стекла(в зависимости от цвета и толщины)
Написал так
Код:
procedure TForm3.ras;
begin
    if (RadioGroup1.ItemIndex=0) and (RadioGroup2.ItemIndex=0) then // Если стекло бронза и толщина 8 мм то
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('11000'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло калёное 8мм с полировкой граней'; // текст для комм предложения.
    ves:=20;// Вес стекла
   if (RadioGroup1.ItemIndex=1) and (RadioGroup2.ItemIndex=0) then   // Если стекло бронза и толщина 8 мм то
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('14000'); // Цена на квадрат стекла бронза.
    name1:='Стекло бронза калёное 8мм с полировкой граней'; // текст для комм предложения.
     ves:=20;// Вес стекла
    if (RadioGroup1.ItemIndex=2) and (RadioGroup2.ItemIndex=0) then   // Если стекло серое и толщина 8 мм то
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('14500'); // Цена на квадрат стекла серое.
    name1:='Стекло серое калёное 8мм с полировкой граней'; // текст для комм предложения.
     ves:=20;// Вес стекла
    if (RadioGroup1.ItemIndex=3) and (RadioGroup2.ItemIndex=0) then   // Если стекло Multi White и толщина 8 мм то
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('18000'); // Цена на квадрат стекла серое.
    name1:='Стекло Multi White калёное 8мм с полировкой граней'; // текст для комм предложения.
     ves:=20;// Вес стекла
    if (RadioGroup1.ItemIndex=0) and (RadioGroup2.ItemIndex=1) then // Если стекло прозрачное и толщина 10 мм то
    oprice:=600; // Цена за обработку 10vv.
    price:=StrToFloat('13000'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло калёное 10мм с полировкой граней'; // текст для комм предложения.
    ves:=25;// Вес стекла
    if (RadioGroup1.ItemIndex=1) and (RadioGroup2.ItemIndex=1) then // Если стекло бронза и толщина 10 мм то
    oprice:=600; // Цена за обработку 10vv.
    price:=StrToFloat('15000'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло бронза калёное 10мм с полировкой граней'; // текст для комм предложения.
    ves:=25;// Вес стекла
    if (RadioGroup1.ItemIndex=2) and (RadioGroup2.ItemIndex=1) then // Если стекло серое и толщина 10 мм то
    oprice:=600; // Цена за обработку 10мм.
    price:=StrToFloat('15500'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло Серое калёное 10мм с полировкой граней'; // текст для комм предложения.
    ves:=25;// Вес стекла
    if (RadioGroup1.ItemIndex=3) and (RadioGroup2.ItemIndex=1) then // Если стекло белое и толщина 10 мм то
    oprice:=600; // Цена за обработку 10мм.
    price:=StrToFloat('19500'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло Multi white калёное 10мм с полировкой граней'; // текст для комм предложения.
    ves:=25;// Вес стекла
    Memo1.Lines.Add(name1);
    h:=strtoint(Edit1.Text);// перевожу в переменную значение с высоты.
    w:=strtoint(Edit2.Text);// перевожу в переменную значение с ширины.
    a:=strtoint(Edit1.Text)+strtoint(Edit3.Text); // Складываю ширину и высоту для определения колличество погонных метров.
    a2:=StrToInt(Edit1.Text)+ StrToInt(Edit2.Text) - StrToInt(Edit3.Text);
    b2:=(a2*2/1000);
    b:=(a*2/1000)+b2; // Сложенное число умножаю на 2 и делю ровно на 1000 для конвертации из миллиметром в метры.
    d:=(b*oprice);  // складываю погонные метры и умножаю что-бы вывести цену нза обработку.
    kolm2:=(h*w/1000000);   // Вывод кол-во м2.
    Label7.Caption:='Кол-во (м2): '+FloatToStr(kolm2); // Вывод кол-во м2  с заказа
    mprice:=(kolm2*price); // умножаю квадратуру на цену.
    Label8.Caption:='Кол-во (п.м): '+floattostr(b);         // Вывод кол-во п.м.
    obwee:=  (h*w*price/1000000)  +  (d);// Общая цена за 2 детали
    Label15.Caption:=('Общая стоимость :'+floattostr(obwee)+' тг');//Вывод цены.
    Label9.Caption:='Вес деталей: '+floattostr(h*w/1000000*ves)+' Кг';
    Label12.Caption:='Цена за обработку: ' +FloatToStr(d)+ 'Тг';
    Label11.Caption:='Цена за стекло: '+ floattostr(mprice);
end;
блин нифига не работает.

Цвет стекла (RadioGroup1)
Толщина стекла (RadioGroup2)
Что не так?
полный код не могу выложить не помещается.
P.S До этого дня 2 назад писал тот же код и все нормально было а тут с утра сел написал по новой и ничего не понял
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 05.11.2015, 08:32   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Fahman Посмотреть сообщение
тут с утра сел написал по новой и ничего не понял
Такое иногда бывает. Но особенно часто такое случается, если не присваивать переменным и компонентам осмысленные имена.
Цитата:
Сообщение от Fahman Посмотреть сообщение
Код:
    Label7.Caption:='Кол-во (м2): '+FloatToStr(kolm2); // Вывод кол-во м2  с заказа
    mprice:=(kolm2*price); // умножаю квадратуру на цену.
    Label8.Caption:='Кол-во (п.м): '+floattostr(b);         // Вывод кол-во п.м.
    obwee:=  (h*w*price/1000000)  +  (d);// Общая цена за 2 детали
    Label15.Caption:=('Общая стоимость :'+floattostr(obwee)+' тг');//Вывод цены.
    Label9.Caption:='Вес деталей: '+floattostr(h*w/1000000*ves)+' Кг';
    Label12.Caption:='Цена за обработку: ' +FloatToStr(d)+ 'Тг';
    Label11.Caption:='Цена за стекло: '+ floattostr(mprice);
Просто совет.
Попробуйте сперва привести код в порядок. Возможно, что в процессе работы ошибка сама "найдётся".
Streletz вне форума Ответить с цитированием
Старый 05.11.2015, 08:48   #3
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Такое иногда бывает. Но особенно часто такое случается, если не присваивать переменным и компонентам осмысленные имена.

Просто совет.
Попробуйте сперва привести код в порядок. Возможно, что в процессе работы ошибка сама "найдётся".
Проект
Задача в чем, программа генерирует коммерческие предложения для клиентов.
Достаточно только ввести размеры и все.
До этого сидел на работе и писал эту же функцию и все нормально было... но не сохранял ничего так как решил повторить еще раз) повторил блин, ничего не вышло. Изначально ко всем функциям писал комментарии что-бы потом не было путаницы а тут на тебе, застрял на простом коде....
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 05.11.2015, 09:01   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
if (RadioGroup1.ItemIndex=0) and (RadioGroup2.ItemIndex=0) then // Если стекло бронза и толщина 8 мм то
BEGIN
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('11000'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло калёное 8мм с полировкой граней'; // текст для комм предложения.
    ves:=20;// Вес стекла
END;
альтернатива куче if ... then ... else if then .....
Код:
case RadioGroup1.ItemIndex *2 + RadioGroup2.ItemIndex
0*2+0: // Если стекло бронза и толщина 8 мм то
       begin 
         oprice:=500; // Цена за обработку.
         price:=StrToFloat('11000'); // Цена на квадрат стекла прозрачное.
         name1:='Стекло калёное 8мм с полировкой граней'; // текст для комм предложения.
         ves:=20;// Вес стекла
       end;
1*2+0: ....
2*2+0: ....
3*2+0: ...
0*2+1:  ...
1*2+1: ...
2*2+1: ...
3*2+1: ...
......
Код:
type
  TInf =record oprice: integer; price: float; name1: string; ves: integer; end;
const inf =array [3,2] of TInf;
 = ( (oprice:80; price:11000; name1: 'стекло каленое'; ves:80),
       (...),
        ....   );
rinf: TInf;
rinf:=inf[radiogroup2.itmIndex, radiogroup1.itemIndex];

calc:=rinf.oprice*.... ;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.11.2015 в 09:17.
evg_m вне форума Ответить с цитированием
Старый 05.11.2015, 09:15   #5
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
if (RadioGroup1.ItemIndex=0) and (RadioGroup2.ItemIndex=0) then // Если стекло бронза и толщина 8 мм то
BEGIN
    oprice:=500; // Цена за обработку.
    price:=StrToFloat('11000'); // Цена на квадрат стекла прозрачное.
    name1:='Стекло калёное 8мм с полировкой граней'; // текст для комм предложения.
    ves:=20;// Вес стекла
END;
альтернатива куче if ... then ... else if then .....
Код:
case RadioGroup1.ItemIndex *2 + RadioGroup2.ItemIndex
0*2+0: // Если стекло бронза и толщина 8 мм то
       begin 
         oprice:=500; // Цена за обработку.
         price:=StrToFloat('11000'); // Цена на квадрат стекла прозрачное.
         name1:='Стекло калёное 8мм с полировкой граней'; // текст для комм предложения.
         ves:=20;// Вес стекла
       end;
1*2+0: ....
2*2+0: ....
3*2+0: ...
0*2+1:  ...
1*2+1: ...
2*2+1: ...
3*2+1: ...
......
Охринеть..... спасибо. Никогда бы не подумал))))
а ведь до этого я без Begin и end делал )))
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 05.11.2015, 10:03   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

можно придумать совсем хороший вариант, если знать:
Как звучит задание в оригинале?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.11.2015, 12:38   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Не обижайтесь, но код из категории "каким программистом быть не надо...". Лечите проблему. Ошибок невнимательности не станет. А то аж в глазах зарябило...

Эх.. мне бы компилятор, который указывает на невнимательность. А то "Control symbol ";" not found in src/schemes/lolsheme/yyy.pps" и ищи ветра в поле в 2000 стр. кода.
Человек_Борща вне форума Ответить с цитированием
Старый 06.11.2015, 15:38   #8
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Не обижайтесь, но код из категории "каким программистом быть не надо...". Лечите проблему. Ошибок невнимательности не станет. А то аж в глазах зарябило...

Эх.. мне бы компилятор, который указывает на невнимательность. А то "Control symbol ";" not found in src/schemes/lolsheme/yyy.pps" и ищи ветра в поле в 2000 стр. кода.
Да я не обижаюсь) просто делаю как знаю) главное ведь это работает

Цитата:
Сообщение от min@y™ Посмотреть сообщение
можно придумать совсем хороший вариант, если знать:
Как звучит задание в оригинале?
Если можете подсказать что-то лучше был бы рад услышать.
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Stilet; 06.11.2015 в 18:50.
Fahman вне форума Ответить с цитированием
Старый 06.11.2015, 15:42   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Если можете подсказать что-то лучше был бы рад услышать.
Ты когда-нибудь читаешь то, что у тебя спрашивают?
В данном случае я это красным зветом выделил, чтобы в глаза бросалось, но ты даже так умудрился проигнорить мой вопрос!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.11.2015, 17:56   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Да я не обижаюсь) просто делаю как знаю) главное ведь это работает
Цитата:
99% ошибок компьютера сидит в полуметре от монитора.
В данном случае 100%
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с оператором for Artem111999 Помощь студентам 1 15.03.2013 19:41
Проблемка с оператором if на Си. kurilka Помощь студентам 6 25.03.2012 19:54
задача с оператором for Smirnov Паскаль, Turbo Pascal, PascalABC.NET 6 12.02.2012 21:01
проблема с оператором for vakyla Общие вопросы Delphi 9 24.03.2009 20:07