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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 13:33   #1
San4o
Пользователь
 
Регистрация: 26.08.2009
Сообщений: 23
По умолчанию

Всем привет

В программе по коэфициенту рисуется график. Коэффициент меняется UPDown'ом. Первые два-один раз перерисовывает нормально, дальше выдает ошибку : "Access violation at address". До этого почему-то все нормально работало. я изменил переменную цвета вместо Colorgrid.foregroundColor поставил свою переменную color. В чем может быть ошибка???
Код программмы:
Код:
procedure TForm1.UD1Click(Sender: TObject; Button: TUDBtnType);
var r1,r2,r:real;
    f,fk,fs3:boolean;
    k,i:integer;
begin
if n_mas<>0 then
begin

//
E1.Text:=floattostr(int(UD1.Position)/int(UD1.Max));
    Ud1.Position:=round(strtofloat(E1.Text)*int(UD1.Max));
//
S2.Clear;
S3.Clear;

progress_box.Visible:=true;
progress.Visible:=true;
progress.Max:=n_mas;



k:=0;
f:=false;
fk:=false;
fs3:=false;
if high(fx)<n_mas then setlength(fx,n_mas-1);
for i:=0 to n_mas-1 do
begin

      if not f then
      begin
            fx[i]:=mas[i];//*(strtofloat(form1.E1.Text));
            f:=true;
      end
      else
      begin
          fx[i]:=fx[i-1]+(mas[i]-fx[i-1])*(strtofloat(form1.E1.Text));

          if (fx[i-1]-fx[i])>=strtofloat(form1.E2.Text) then
          begin
          s2.Addxy(i,fx[i],'',color3);
          s3.AddXY(i,(chart1.LeftAxis.Maximum*0.98),'',color3);

          fs3:=true;
          if not fk then
          begin
                s3.AddXY(i-1,(chart1.LeftAxis.Maximum),'',color3);
                s3.AddXY(i-1,(chart1.LeftAxis.Maximum*0.98),'',color3);
                fk:=true;
                inc(k);
          end;

          Stringgrid1.Cells[1,i]:='+';

           end
           else
           begin
           s3.AddXY(i,chart1.LeftAxis.Maximum,'',clBlack);
            if fs3 then
            begin

            s3.AddXY(i-1,chart1.LeftAxis.Maximum,'',color3);
            s3.AddXY(i,chart1.LeftAxis.Maximum,'',color3);
            //s3.AddXY(i,-40,'',color3);
            fs3:=false;
            
            end;
           form1.Stringgrid1.Cells[1,i]:='';

           fk:=false;
           end;
      end;
      form1.s2.Addxy(i,fx[i],'',color2);
      progress.Position:=i;
end;
progress_box.Visible:=false;
progress.Visible:=false;

Label6.Caption:='Êîëè÷åñòâî ïðîìåæóòêîâ : '+inttostr(k);
end;
end;
причем запинается на строчке S1.clear(S1 - серия в чарте) с тем сообщением что я написал. Кто знает с чем это связано?

Последний раз редактировалось Stilet; 15.09.2009 в 14:22.
San4o вне форума Ответить с цитированием
Старый 15.09.2009, 14:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
причем запинается на строчке S1.clear
Ну и где она в коде?
И вообще проверял бы ты ее на nil.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.09.2009, 15:42   #3
San4o
Пользователь
 
Регистрация: 26.08.2009
Сообщений: 23
По умолчанию

S2.clear (описался)

И вообще проверял бы ты ее на nil.

это как?
San4o вне форума Ответить с цитированием
Старый 15.09.2009, 16:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это так:
Код:
procedure TForm1.UD1Click(Sender: TObject; Button: TUDBtnType);
var r1,r2,r:real;
    f,fk,fs3:boolean;
    k,i:integer;
begin
if n_mas<>0 then
begin

//
E1.Text:=floattostr(int(UD1.Position)/int(UD1.Max));
    Ud1.Position:=round(strtofloat(E1.Text)*int(UD1.Max));
//
if s2=nil then s2:=Четамутязатип.Create(...);
if s3=nil then s3:=Четамутязатип.Create(...);
S2.Clear;
S3.Clear;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2010, 20:15   #5
pasha270986
Новичок
Джуниор
 
Регистрация: 26.04.2010
Сообщений: 1
По умолчанию

Народ, помогите пожалуйста разобраться! Как добиться чтобы график мой заданный по точкам через код представленный ниже строил кривую.
L:=arcsin(sin(u))*i;
B:=tan(u)*i+S+t11;
Serias1.AddXY(L,B,'',clblack);
Кривую у меня строит, но области все закрашенные, т.е. там эта кривая проходит и сверху и снизу, а он их соединяет, типо интерполяции, или может я что то не так делаю?
pasha270986 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент Chart Interesno Общие вопросы C/C++ 1 11.04.2009 11:40
Chart StartMis Общие вопросы Delphi 2 19.10.2008 11:33
Chart оси lenivec Общие вопросы Delphi 1 09.02.2008 11:37
Компонент Chart. Небесный Общие вопросы Delphi 17 09.02.2008 08:48
Рисование в Chart SunKnight Общие вопросы Delphi 3 07.02.2008 09:16