Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > EInvalidPointer при построении графика


Автор: physic 13.2.2005, 15:35
Я пытаюсь в Chart построить параболу типа y=yo+c*(x-x0)*(x-x0). Если с не равно нулю, то все в порядке, но когда с=0, то возникает сообщение Invalid Pointer Operation, если у0=10000, а при у0=1000 не возникает. Что делать?
Код

procedure TMainForm.plot_btnClick(Sender: TObject);
var
 baseline: real;
 k: integer;
begin
 series_base.Clear;
 for k:=spedt_From.Value to spedt_to.Value do
   begin
     baseline:=base(100000,0,100,k);
     series_base.addxy(k,baseline);
   end;
end;

function base(n0: real; c: real; v0:real; v: real): real;
begin
 base:=n0+c*(v-v0)*(v-v0);
end;

Автор: ~FoX~ 16.2.2005, 13:34
На какой строчке возникает ошибка?
Математика работает нормально.......вероятно ты координаты передаешь криво как то.

Автор: physic 16.2.2005, 16:33
Ошибка возникает при передаче координат.
Возможно, у этого компонента (Chart) есть какое-то ограничение....

Автор: _hunter 16.2.2005, 18:56
на каком к? и что мешает проверить на наличие ограничение? -- просто передай 0, 100000 ( или при каком к вылетает )

Автор: physic 16.2.2005, 20:47
к в программе не выходит за пределы 1024
что-то я не понял, как проверить на ограничение smile

Автор: _hunter 16.2.2005, 23:56
если не выходит, то просто пишеш series_base.addxy(1024, 100000) и смотриш что будет

Автор: physic 17.2.2005, 00:28
я нашел число, которое ему не нравится в качестве ординаты 1818 (проверял только целые, и так запарился). при этом абсцисса оказалась не важной, т.е. я проверил для некоторых значений х. черт его знает, я в этом числе ничего магического не вижу....

Автор: physic 1.3.2005, 11:12
все разрулилось, вот обсуждение:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1108899432&n=0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)