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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 05:45   #1
Мэр
Новичок
Джуниор
 
Регистрация: 03.06.2009
Сообщений: 4
Восклицание Табулирование функции. Ошибка 'List index out of bounds(0)'

Здравствуйте все! Помогите, пожалуйста, с ошибкой. Текст ошибки: "Project Project2.exe raised exception class EListError with message 'List index out of bounds(0)'. Process stopped. Use Step or Run to continue. "
Вот это текст всей программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, Grids;
  const Nmax=20;

type
  Tmy=array[1..Nmax] of extended;
  Tmx=array[1..Nmax] of integer;
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Chart1: TChart;
    Button1: TButton;
    Button2: TButton;
    Label17: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  C,D,Eps,B:real;
  n,i,Km,Str,M,Ak:integer;
  An,Da,a,Zt:real;
  MX,MY,MA:Tmy;
  Er:Tmx;

implementation

{$R *.dfm}


function F1(x:real):real;
begin
  F1:=sin(x*x)+cos(x*x)-x;
end;

function F2(a,b,x:real):real;
var g:real;
begin
g:=a*x;
F2:=exp(2.71828*ln(abs(g)))-ln(b);
end;

Function F3(a,b,x:real):real;
begin
F3:=(b*b+sin(x/2))/(a*a*a);
end;

procedure Equat(C,D,Eps:real;Km:integer; var Str:integer; var B:real);
var i:integer;
w,FB,FC:real;
begin
FC:=F1(C);
for i:=1 to Km do
begin
  B:=(C+D)/2;
  FB:=F1(B);
  w:=Abs(FB);
  if w>Eps then
    if FB*FC>0 then C:=B
      else D:=B
    else
    begin
      Str:=1;
      exit
    end;
  Str:=0;
  end;
end;

procedure Tab(MX:Tmy;M:integer;An,Da:real;N:integer;B:real;var MA,MY:Tmy;var Er:tmx);
var na,i,j,k:integer;
begin
na:=1;
a:=An;
while na<=N do
begin
  MA[na]:=a;
  a:=a+Da;
  na:=na+1;
end;

for i:=1 to N do
begin
  for j:=1 to M do
    begin
    if ((MX[j]>0) and (b<=0)) or ((MX[j]<=0) and (MA[i]=0)) then Er[k]:=1 else
      begin
        IF (MX[j]>0) then MY[k]:=F2(MA[i],B,MX[j]) else MY[k]:=F3(MA[i],B,MX[j]);
        Er[k]:=0;
      end;
    end;
end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
An:=StrToFloat(Edit1.Text);
Da:=StrToFloat(Edit2.Text);
N:=StrToInt(Edit3.Text);
M:=StrToInt(Edit4.Text);
C:=StrToFloat(Edit5.Text);
D:=StrToFloat(Edit6.Text);
Eps:=StrToFloat(Edit7.Text);
Km:=StrToInt(Edit8.Text);

StringGrid1.RowCount:=M;
For i:=1 to M do
begin
  StringGrid1.Cells[0,i-1]:='X'+IntToStr(i);
end;
end;

procedure VvodX(m:integer; var MX:Tmy);
var i:integer;
begin
for i:=1 to M do
begin
  MX[i]:=StrToFloat(Form1.StringGrid1.Cells[1,i-1]);
end;
end;

procedure Out(M,N:integer;MX,MA,MY:tmy;Er:tmx);
var i,j,k:integer;
begin
Form1.StringGrid2.Cells[0,0]:='A';
Form1.StringGrid2.Cells[1,0]:='X';
Form1.StringGrid2.Cells[2,0]:='F';
Form1.StringGrid2.RowCount:=2;
k:=1;
for i:=1 to N do
begin
  for j:=1 to M do
  begin
  Form1.StringGrid2.Cells[0,k]:=FloatToStr(MA[i]);
  Form1.StringGrid2.Cells[1,k]:=FloatToStr(MX[j]);
  if Er[k]=0 then Form1.StringGrid2.Cells[2,k]:=FloatToStr(MY[k]) else Form1.StringGrid2.Cells[2,k]:='Ошибка';
  Form1.StringGrid2.RowCount:=Form1.StringGrid2.RowCount+1;
  k:=k+1;
  end;
end;
end;

procedure Graph(M:integer;MX,MY:tmy);
begin
Form1.Chart1.Series[0].Clear;
for i:=1 to M do
begin
  Form1.Chart1.Series[0].AddXY(MX[i],MY[i]);
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
VvodX(M,MX);
Equat(C,D,Eps,Km,Str,B);

if Str=1 then Label17.Caption:='Ошибка при вычислении корня B';
if Str=0 then Label17.Caption:='Корень уравнения:'+FloatToStr(B);

Tab(MX,M,An,Da,N,B,MA,MY,Er);
Out(M,N,MX,MA,MY,Er);
Graph(M,MX,MY);
end;

procedure TForm1.FormCreate(Sender:TObject);
begin
Chart1.Series[0].Clear;
end;

end.
Сегодня уже надо сдавать! Помогите!

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

Ну и на какой же строке это все вылетает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 09:11   #3
Мэр
Новичок
Джуниор
 
Регистрация: 03.06.2009
Сообщений: 4
По умолчанию

После ошибки курсор остаётся стоять на том же месте как до выполнения-ошибки Т.е. безразличен.
Мэр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табулирование функции bygoga Общие вопросы C/C++ 4 02.05.2009 12:50
Ошибка List index out of bounds(0) при использовании запроса AdoQuery ArtInt БД в Delphi 14 15.04.2009 18:35
Index List ofbounds (16) Johnson Общие вопросы Delphi 4 17.07.2008 19:54
При запуске ComboBoxEx пишет List index out of bounds -1. dx+ Общие вопросы Delphi 6 12.06.2008 22:32
табулирование функции tonic Microsoft Office Excel 1 04.01.2008 00:38