Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.03.2010, 09:10
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию Ошибка: raised exception class EListError with message 'List index out of bounds(2)'

Всем доброго времени суток!

При запуске программы начала выскакивать ошибка:
raised exception class EListError with message 'List index out of bounds(2)'




Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {GForm},
  Unit2 in 'Unit2.pas' {IForm1},
  Unit3 in 'Unit3.pas' {IForm2},
  Unit4 in 'Unit4.pas' {IForm3};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TGForm, GForm);
> Application.CreateForm(TIForm1, IForm1);
  Application.CreateForm(TIForm2, IForm2);
  Application.CreateForm(TIForm3, IForm3);
  Application.Run;
end.

Не могу понять в чём может быть проблема. Прошу более опытных пользователей помочь
Ответить с цитированием
  #2  
Старый 05.03.2010, 10:36
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Где то перебрал с массивом, например обратился к несуществующему элементу массива типа:
Код:
var
 Arr[1..10] of byte;
begin
 s := Arr[11];//Как вариант
end;
Нужно помнить что:
String - массив символов
Memo - массив строк
StringGrid - 2-мерный массив строк
Часто такое бывает в таком виде
Код:
for i := 0 to Length(s) do //s : string
 a := s[i];//так как нумерация с нуля, то если длина 10, последний элемент 9 
Нужно
Код:
for i := 0 to Length(s)-1 do
 a := s[i];
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 05.03.2010, 13:01
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию

Массива в программе нет. В чём собственно и вся магия
Ответить с цитированием
  #4  
Старый 05.03.2010, 14:07
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Падает метод Create у первой формы, там и ищи.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 05.03.2010, 14:18
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию

Aristarh Dark, а можно по конкретней?) Где искать то?)

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, DB, ADODB, Grids, DBGrids, ComCtrls, XPMan,
  RpDefine, RpRave;

type
  TGForm = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOTable1: TADOTable;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    ADOTable3: TADOTable;
    DataSource3: TDataSource;
    DBGrid3: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    pe_06: TEdit;
    pe_07: TEdit;
    pe_08: TEdit;
    pe_09: TEdit;
    pe_10: TEdit;
    pe_11: TEdit;
    pe_12: TEdit;
    pe_13: TEdit;
    pe_14: TMemo;
    pe_15: TMemo;
    pe_16: TMemo;
    pe_17: TMemo;
    pe_18: TMemo;
    pe_19: TMemo;
    pe_20: TMemo;
    pe_21: TMemo;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    pe_22: TEdit;
    Label19: TLabel;
    pe_23: TEdit;
    pe_24: TEdit;
    pe_25: TEdit;
    pe_26: TEdit;
    pe_27: TEdit;
    pe_28: TEdit;
    pe_29: TEdit;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    pe_30: TEdit;
    Label30: TLabel;
    pe_31: TEdit;
    pe_32: TEdit;
    Label31: TLabel;
    Label32: TLabel;
    pe_33: TMemo;
    Label33: TLabel;
    pe_34: TEdit;
    pe_36: TEdit;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    pe_01: TEdit;
    pe_03: TEdit;
    pe_02: TEdit;
    pe_04: TEdit;
    pe_35: TEdit;
    pe_05: TEdit;
    Button9: TButton;
    RvProject1: TRvProject;
    ADOConnection1: TADOConnection;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  GForm: TGForm;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

//код

end.
Ответить с цитированием
  #6  
Старый 05.03.2010, 14:20
Аватар для W1ndow
W1ndow W1ndow вне форума
Новичок
 
Регистрация: 15.09.2009
Адрес: Березники
Сообщения: 61
Репутация: 16
По умолчанию

А чё где искать то?
Код то где?
Ответить с цитированием
  #7  
Старый 05.03.2010, 14:26
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Ищи тут)))
Цитата:
unit Unit1;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #8  
Старый 05.03.2010, 14:26
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию

W1ndow, дело в том что ошибка начала вылетать после того как я всего навсего отключил бд, изменил структуру 2х таблиц и подключил сново. Т.е. код я вообще не менял.
Ответить с цитированием
  #9  
Старый 05.03.2010, 14:29
Аватар для W1ndow
W1ndow W1ndow вне форума
Новичок
 
Регистрация: 15.09.2009
Адрес: Березники
Сообщения: 61
Репутация: 16
По умолчанию

Цитата:
Сообщение от spyhak
W1ndow, дело в том что ошибка начала вылетать после того как я всего навсего отключил бд, изменил структуру 2х таблиц и подключил сново. Т.е. код я вообще не менял.

Это то здесь при чём? Ошибка возникает когда выполняется код программный, а если ты его не даёшь как понять где ошибка.
Ответить с цитированием
  #10  
Старый 05.03.2010, 14:32
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию

Вот листинг основной формы

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, DB, ADODB, Grids, DBGrids, ComCtrls, XPMan,
  RpDefine, RpRave;

type
  TGForm = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOTable1: TADOTable;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    ADOTable3: TADOTable;
    DataSource3: TDataSource;
    DBGrid3: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    pe_06: TEdit;
    pe_07: TEdit;
    pe_08: TEdit;
    pe_09: TEdit;
    pe_10: TEdit;
    pe_11: TEdit;
    pe_12: TEdit;
    pe_13: TEdit;
    pe_14: TMemo;
    pe_15: TMemo;
    pe_16: TMemo;
    pe_17: TMemo;
    pe_18: TMemo;
    pe_19: TMemo;
    pe_20: TMemo;
    pe_21: TMemo;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    pe_22: TEdit;
    Label19: TLabel;
    pe_23: TEdit;
    pe_24: TEdit;
    pe_25: TEdit;
    pe_26: TEdit;
    pe_27: TEdit;
    pe_28: TEdit;
    pe_29: TEdit;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    pe_30: TEdit;
    Label30: TLabel;
    pe_31: TEdit;
    pe_32: TEdit;
    Label31: TLabel;
    Label32: TLabel;
    pe_33: TMemo;
    Label33: TLabel;
    pe_34: TEdit;
    pe_36: TEdit;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    pe_01: TEdit;
    pe_03: TEdit;
    pe_02: TEdit;
    pe_04: TEdit;
    pe_35: TEdit;
    pe_05: TEdit;
    Button9: TButton;
    RvProject1: TRvProject;
    ADOConnection1: TADOConnection;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  GForm: TGForm;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

procedure TGForm.FormCreate(Sender: TObject);
begin
//==Ширина столбцов в таблицах==<
DBGrid1.Columns[0].Width:=30;
DBGrid1.Columns[1].Width:=60;
DBGrid1.Columns[2].Width:=100;
DBGrid1.Columns[3].Width:=435;
DBGrid1.Columns[4].Width:=50;
DBGrid1.Columns[5].Width:=160;

DBGrid2.Columns[0].Width:=500;
DBGrid2.Columns[2].Width:=335;

DBGrid3.Columns[0].Width:=120;
DBGrid3.Columns[1].Width:=220;
DBGrid3.Columns[2].Width:=185;
DBGrid3.Columns[3].Width:=60;
DBGrid3.Columns[4].Width:=80;
DBGrid3.Columns[5].Width:=80;
DBGrid3.Columns[6].Width:=80;
//====>
end;

procedure TGForm.Button1Click(Sender: TObject);
var i: integer;
begin

//=====Обновляем поисковые базы=====<
IForm1.DBComboBox2.Items.Clear;
IForm1.DBComboBox2.DataSource:=GForm.DataSource2;

with ADOTable2 do
  begin
  Open;
  First;
  while not EOF do
    begin
    IForm1.DBComboBox2.items.add(FieldByName('Адрес').AsString);
    next;
  end;
end;


IForm1.DBComboBox2.DataSource:=GForm.DataSource1;
//================>

ADOTable1.Append;
IForm1.Visible:=true;
GForm.Enabled:=false;
end;

procedure TGForm.Button3Click(Sender: TObject);
begin
ADOTable2.Append;
IForm2.Visible:=true;
GForm.Enabled:=false;
end;

procedure TGForm.Button2Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TGForm.Button5Click(Sender: TObject);
begin
if MessageDlg('Вы действительно хотите удалить строку?',mtConfirmation,
[mbYes,mbNo],0)=mrNo then exit else ADOTable2.Delete;
end;

procedure TGForm.Button4Click(Sender: TObject);
begin
ADOTable2.Edit;
IForm2.Visible:=true;
GForm.Enabled:=false
end;

procedure TGForm.Button6Click(Sender: TObject);
begin
ADOTable3.Append;
IForm3.Visible:=true;
GForm.Enabled:=false;
end;

procedure TGForm.Button7Click(Sender: TObject);
begin
ADOTable3.Edit;
IForm3.Visible:=true;
GForm.Enabled:=false
end;

procedure TGForm.Button9Click(Sender: TObject);
begin
RvProject1.Open;
RvProject1.SelectReport('Report1', false);
RvProject1.SetParam('rr_01', pe_01.Text);
RvProject1.SetParam('rr_02', pe_02.Text);
RvProject1.SetParam('rr_03', pe_03.Text);
RvProject1.SetParam('rr_04', pe_04.Text);
RvProject1.SetParam('rr_05', pe_05.Text);
RvProject1.SetParam('rr_06', pe_06.Text);
RvProject1.SetParam('rr_07', pe_07.Text);
RvProject1.SetParam('rr_08', pe_08.Text);
RvProject1.SetParam('rr_09', pe_09.Text);
RvProject1.SetParam('rr_10', pe_10.Text);
RvProject1.SetParam('rr_11', pe_11.Text);
RvProject1.SetParam('rr_12', pe_12.Text);
RvProject1.SetParam('rr_13', pe_13.Text);
RvProject1.SetParam('rr_14', pe_14.Text);
RvProject1.SetParam('rr_15', pe_15.Text);
RvProject1.SetParam('rr_16', pe_16.Text);
RvProject1.SetParam('rr_17', pe_17.Text);
RvProject1.SetParam('rr_18', pe_18.Text);
RvProject1.SetParam('rr_19', pe_19.Text);
RvProject1.SetParam('rr_20', pe_20.Text);
RvProject1.SetParam('rr_21', pe_21.Text);
RvProject1.SetParam('rr_22', pe_22.Text);
RvProject1.SetParam('rr_23', pe_23.Text);
RvProject1.SetParam('rr_24', pe_24.Text);
RvProject1.SetParam('rr_25', pe_25.Text);
RvProject1.SetParam('rr_26', pe_26.Text);
RvProject1.SetParam('rr_27', pe_27.Text);
RvProject1.SetParam('rr_28', pe_28.Text);
RvProject1.SetParam('rr_29', pe_29.Text);
RvProject1.SetParam('rr_30', pe_30.Text);
RvProject1.SetParam('rr_31', pe_31.Text);
RvProject1.SetParam('rr_32', pe_32.Text);
RvProject1.SetParam('rr_33', pe_33.Text);
RvProject1.SetParam('rr_34', pe_34.Text);
RvProject1.SetParam('rr_35', pe_35.Text);
RvProject1.SetParam('rr_36', pe_36.Text);
RvProject1.Execute;
RvProject1.Close;
end;

procedure TGForm.Button8Click(Sender: TObject);
begin
if MessageDlg('Вы действительно хотите удалить строку?',mtConfirmation,
[mbYes,mbNo],0)=mrNo then exit else ADOTable3.Delete;
end;

end.
Ответить с цитированием
  #11  
Старый 05.03.2010, 14:33
Аватар для W1ndow
W1ndow W1ndow вне форума
Новичок
 
Регистрация: 15.09.2009
Адрес: Березники
Сообщения: 61
Репутация: 16
По умолчанию

А лучше засунь весь проект в архив вместе таблицами и объясни что хочешь сделать, тогда будет реальный шанс исправить ошибку
Ответить с цитированием
  #12  
Старый 05.03.2010, 14:36
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
По умолчанию

Добавил архив
Вложения
Тип файла: rar Программа.rar (60.8 Кбайт, 4 просмотров)
Ответить с цитированием
  #13  
Старый 05.03.2010, 14:51
Аватар для W1ndow
W1ndow W1ndow вне форума
Новичок
 
Регистрация: 15.09.2009
Адрес: Березники
Сообщения: 61
Репутация: 16
По умолчанию

Ошибка находится в процедуре создания формы, ты пытаешься присвоить размер колонкам которых не существует, от сюда и ошибка. Сделай всё это в статическом режиме, тогда и кода будет меньше и ошибки этой не будет.

Как это сделать?
В статическом режиме активизируешь таблицу(открываешь)
Жмёшь 2 раза на DBGrid, жмёшь кнопку Add All Fields и там уже назначаешь имена колонкам их размер и так далее.
Ответить с цитированием
  #14  
Старый 05.03.2010, 14:56
spyhak spyhak вне форума
Прохожий
 
Регистрация: 16.02.2010
Сообщения: 15
Репутация: 10
Радость

W1ndow, огромное спасибо за помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter