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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 11:37   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Вопрос по Chart

Добрый день! Нужна небольшая помощь в вопросе по компоненту Chart.
Вот код, который строит график на компоненте:
Код:
    try
     With Form1.Series2 do
      begin
       Clear;
       c:=StrToFloat(f1);
       d:=StrToFloat(f2);
       c1:=StrToFloat(f3);
       d1:=StrToFloat(f4);
       c2:=StrToFloat(f5);
       d2:=StrToFloat(f6);
       c3:=StrToFloat(f7);
       Add(c,'% ÂÂÎÄ',clGreen);
       Add(d,'% ÄÊÌÒ', clYellow);
       Add(c1,'% ÏÀ×Ê', clBlue);
       Add(d1,'% Ñ×ÅÒ', clRed);
       Add(c2,'% ÂÊË×', clLime);
       Add(d2,'% ÏÀ×Ê ÎØÈÁ', clMaroon);
       Add(c3,'% ÏÀ×Ê ÏÐÀ ÏÐÎÖ', clFuchsia);
      end;
    except
     on EConvertError do
         fig:=0;
    end;
в f1...f7 передаются значения, расчитанные по формулам. Может такое быть, что в f-ки могут передаваться и нули тоже. Как написать, чтобы если f1 или f2 или f3 или f4 или f5 или f6 или f7 равны нулю, то f-ки, которые не равны нулю все равно строились бы? А равные нулю не строились. Такое получается у меня потому что в формулах идет деление, а в делитель как раз и может передаваться ноль. Заранее спасибо за ответы по теме.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 07.03.2011, 12:30   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Собственно говоря, после небольшого раздумья, я придумал как обойти проблему.
Алгоритм такой (у меня в формуле деление осуществляется на сумму значений в колонке StringGrid):
1. Сначала проверяем колонку на наличие нулей (у меня нули проставляются запросом во все ячейки колонки, где нет значений других, отличных от ноля);
2. Если вся колонка состоит из нулей, то в итоговую ячейку, в которой хранится сумма значений (т.е. в делитель) по столбцу, ставим "1";
3. Если в колонке есть хотя бы одно не нулевое значение, то сначала очищаем итоговое значение (чтобы единица не мешала), а затем повторно выполняем суммирование, после чего заносим сумму в ячейку на место "1".
Таким образом я ниче не нарушаю вроде в работе кода. Чтобы не делить, например, ноль на ноль, будем делить его лучше на "1". Все равно получим ноль. А если есть в колонке уже одно не нулевое значение, то априори, в результате суммирования значений по столбцу, мы никак не будем делить на ноль, а будем делить на результат суммирования. Вот так все просто оказалось. Написал это во втором посте, вдруг кому пригодится
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Chart! weezmei Компоненты Delphi 0 22.05.2010 00:54
Chart!!! Sanuch89 Мультимедиа в Delphi 0 23.02.2010 19:21
(проблема с курсовиком)Вопрос по компоненту Chart irk-daredevil Помощь студентам 0 18.12.2009 09:27
Chart StartMis Общие вопросы Delphi 2 19.10.2008 11:33