1 (edited by Vitaly 2016-06-07 07:30:31)

Topic: Ошибка "is not a valid floating point value

Доброго времени суток! Прошу помочь со следующей проблемой.
На форме есть график, линия в котором задается из грида:
http://s8.hostingkartinok.com/uploads/images/2016/06/09217ff18b8c317a25cded588b857278.jpg
Решил проблему определения максимальной высоты вертикальной оси (для автомасштабирования) следующим образом:

procedure PokazAgregat_OnShow (Sender: string; Action: string);
var
  i,c: integer;
  max: real;
begin
PokazAgregat.DBImage1.dbShowButtons := False;
PokazAgregat.DBImage2.dbShowButtons := False;
ChartLine := TChart.Create(PokazAgregat);
  ChartLine.Parent := PokazAgregat.PanelLine;
  ChartLine.Align := alClient;
  ChartLine.AddSeries(TLineSeries.Create(ChartLine));
  ChartLine.Series[0].XValues.DateTime := True;
  ChartLine.View3D := False;
  TLineSeries(ChartLine.Series[0]).Pointer.Visible := True;
  TLineSeries(ChartLine.Series[0]).Pointer.Style  := psCircle;
  TLineSeries(ChartLine.Series[0]).Pointer.Size   := 3;
  PokazAgregat.Button4.Click;
  PokazAgregat.bLineUpdate.Click;
  ChartLine.LeftAxis.Automatic := False;
  ChartLine.LeftAxis.Minimum := 0;

  c := PokazAgregat.TableGrid3.RowCount-1;
  max:= StrToFloat(PokazAgregat.TableGrid3.Cells[1, 0]);
  for i := 0 to c do
  begin
  if max<StrToFloat(PokazAgregat.TableGrid3.Cells[1, i])
  then max:= StrToFloat(PokazAgregat.TableGrid3.Cells[1, i]);
  end;
  ChartLine.LeftAxis.Maximum := Round(max + 1);
end;

Код работает превосходно в формах с заполненным гридом, но если вызываем форму с пустым гридом, то выпадает ошибка:
http://s8.hostingkartinok.com/uploads/images/2016/06/335655abf04b347ad9423ead7cea7d17.jpg
Жмем "ОК" и открывается форма с пустым графиком - то что мне и нужно при пустом-то гриде:
http://s8.hostingkartinok.com/uploads/images/2016/06/1b3e1334a76ba37b121b51353231cbc1.jpg
Вопрос: как избавиться от этой ошибки, которая говорит мне что ячейки грида пусты? что написать/исправить, чтобы программа не ругалась, а понимала, что так все и задумано?

П.С. И еще вопрос, как убрать легенду?

Re: Ошибка "is not a valid floating point value

Приветствую,


Попробуйте в скрипте эту строку

max:= StrToFloat(PokazAgregat.TableGrid3.Cells[1, 0]);

заменить на

max := 0;


убрать легенду можно так

TLineSeries(ChartLine.Series[0]).ShowInLegend := False;
Dmitry.

Re: Ошибка "is not a valid floating point value

Спасибо!

Re: Ошибка "is not a valid floating point value

Дмитрий, не помогло. Ошибка все равно вылетает.

Re: Ошибка "is not a valid floating point value

Приложите пожалуйста ваш проект, с описанием действий приводящих к ошибке.

Dmitry.

Re: Ошибка "is not a valid floating point value

Дмитрий, спасибо за внимание! Проект большой (6 Мб), отправил вам на почту с указанием темы и описанием.