На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела
1. Не создавайте несколько одинаковых тем, ибо модератор может расценить их, как спам и удалить все.
2. Для решения задач по GPSS есть отдельная тема. Все задачи по GPSS опубликовывать в этой теме! Перед опубликовыванием вашей задачи просмотрите всю тему, возможно вы сразу найдете решение.
3. Давайте вашим темам ОСМЫСЛЕННЫЕ названия, а также указывайте язык программирования. Пример: [Pascal]:Работа с файлами и записями.
4. Использования тега CODE обязательно при публикации текста программы.

Темы, оформленные с явным игнорированием правил и отсутствием смысла, будут закрыты/удалены!
Вам помогли? Напишите об этом здесь (в портфолио фрилансера)

Фрилансерам:
5. Демпинг цен запрещен (даже если Вы готовы работать бесплатно). Цены обсуждаются в приватном общении. Если вы готовы рещить задачу бесплатно, просто решите ее быстрее, чем возникнет предложение сделать это за деньги.
6. Пользователям, входящим в группу Newbie, запрещается предлагать свои услуги (завуалированно в т.ч.)
7. В посте с предложением выполнить работу, обязательно указывать ссылку на свое портфолио в Отзывы, Благодарности, Портфолио Это правило работает и в том случае, если вы выполняете работу бесплатно.
8. Реклама (даже завуалированная) своих фриланских сайтов запрещена

Нарушение данных пунктов влечет до RO или БАНА (при неоднократом)
Модераторы: ttiger, mikefreelance, Rust
  
    > помогите поправить код на Delphi , вылетает с ошибкой elisterror list index out of bounds (0)
      Здравствуйте знатоки. Задали задачку по мат. моду, нужно реализовать программу которая моделирует движение космического корабля относительно земли. В принципе писать можно на чем угодно, в основном пишут на маткаде и матлабе, я выбрал на делфи. Набросал код, но вылетает с ошибкой, блин хоть убей не пойму где косяк, поправьте пожалуйста. Прога запускается, но когда нажимаешь на кнопку для расчета вылетает с ошибкой elisterror list index out of bounds (0) код ниже

      ExpandedWrap disabled
        procedure TForm1.Button1Click(Sender: TObject);
         
        var
        //--------------------------------------------
        x,y,z,time,vx,vy,vz,rad_v:array[0..5000] of real ;
        TT,vs,v0,t,dt:Extended;
        h,h2,r,MM,G,m:Extended;
        i,j,k:integer;
         
        begin
        Chart1.Series[0].Clear;
        //Chart1.Series[1].Clear;
        //Chart1.Series[2].Clear;
        if edit1.Text ='' then ShowMessage('Введите скорость станции!') else
         
        Begin
        if edit2.Text ='' then ShowMessage('Введите скорость аппарата!') else
        Begin
        h:=strtofloat(Edit1.Text);
        v0:=strtofloat(Edit2.Text);
        G:=6.67e-11;//----гравит-я пост
        MM:=6e+24;//---масса Земли
        m:=strtofloat(Edit3.Text); //масса аппарата
         
        h2:=6400000;//радиус Земли(м)
        h:=h*h2;
         
        R:=h+h2;
        vs:=sqrt(G*MM/R);//скорость
         
        t:=0; //-------время
        dt:=10;//------шаг по времени
        TT:=(2*Pi*(r+h))/vs; //-------период станции
        k:=1000;
        //------------------------------------
        t:=dt;
        i:=0;
        time[0]:=0;
        //---Начальные условия
        x[0]:=R;
        y[0]:=0;
        z[0]:=0;
        vx[0]:=0;
        vy[0]:=vs;
        vz[0]:=v0;
         
        //rad_v[0]:=sqrt(x[0]*x[0]+y[0]*y[0]+z[0]*z[0]);
        //showmessage(floattostr(R));
        //showmessage(floattostr(rad_v[0]));
        while (i<5000) do
         
        begin
         
        rad_v[i]:=sqrt(x[i]*x[i]+y[i]*y[i]+z[i]*z[i]);
         
        if rad_v[i]=0 then begin showmessage('радиус вектор=0'); showmessage(floattostr(i)); break; end;
        vx[i+1]:=vx[i]-(G*MM*x[i]*dt)/(rad_v[i]*rad_v[i]*rad_v[i]*m);
        x[i+1]:=x[i]+dt*vx[i+1];
         
        vy[i+1]:=vy[i]-(G*MM*y[i]*dt)/(rad_v[i]*rad_v[i]*rad_v[i]*m);
        y[i+1]:=y[i]+dt*vy[i+1];
         
        vz[i+1]:=vz[i]-(G*MM*z[i]*dt)/(rad_v[i]*rad_v[i]*rad_v[i]*m);
        z[i+1]:=z[i]+dt*vz[i+1];
         
        i:=i+1;
        // t:=t+dt;
        if i<>0 then begin t:=t+dt; time[i]:=t; end;
        end;
        // showmessage(floattostr(rad_v[0]));
        //---------------график-------------------------
        Chart1.Series[0].XValues.Order:=loNONE;
        for j:=0 to i-1 do
        begin
        Chart1.Series[0].AddXY(time[j],rad_v[j]);
        end;
        //--------------------------------------
        Вылеет за границы списка. Список тут Chart1.Series. Возможно он пуст? То есть в нем отсутствует значение с индексом 0

        Добавлено
        Для уточнения где ошибка пройти в пошаговом режиме.
          ммм, что то не понял, напишите пожалуйста подробнее.
          в пошаговом пробовал, доходит до конца, прога запускается, а когда нажимаешь кнопку (button1) делфи сам вываливается, с ошибкой что то вроде elisterror list index out of bounds, и далее уже не выполняется, приходится перезапускать делфю, не могу поймать место с которого так глючить начинает
          Сообщение отредактировано: mnemonik -
            Цитата mnemonik @
            когда нажимаешь на кнопку для расчета вылетает с ошибкой elisterror list index out of bounds (0) код ниже

            Кнопка расчета - Button1?

            Наведи курсор на строку
            ExpandedWrap disabled
              Chart1.Series[0].Clear;

            и нажми F5 (появится брекпойнт).
            Запусти прогу по F9 .
            Прога остановится на строке.
            Нажми F8. Если строку минует успешно-найди ту, на которой ошибку выдает.


            Скорее всего, ошибка в первой строчке. Ты не задал серии в чарте.
            Кликни по нему дважды и задай нужное количество серий. При обращении помни, что номерация списка начинается с нуля.
              Вопрос решен или нет?
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0.2028 ]   [ 15 queries used ]   [ Generated: 2.05.26, 15:42 GMT ]