|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка: 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
|
||||
|
||||
Где то перебрал с массивом, например обратился к несуществующему элементу массива типа:
Код:
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
|
|||
|
|||
Массива в программе нет. В чём собственно и вся магия
|
#4
|
||||
|
||||
Падает метод Create у первой формы, там и ищи.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
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
|
||||
|
||||
А чё где искать то?
Код то где? |
#7
|
||||
|
||||
Ищи тут)))
Цитата:
В начале был Бит, потом Байт и только потом появилось Слово... |
#8
|
|||
|
|||
W1ndow, дело в том что ошибка начала вылетать после того как я всего навсего отключил бд, изменил структуру 2х таблиц и подключил сново. Т.е. код я вообще не менял.
|
#9
|
||||
|
||||
Цитата:
Это то здесь при чём? Ошибка возникает когда выполняется код программный, а если ты его не даёшь как понять где ошибка. |
#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
|
||||
|
||||
А лучше засунь весь проект в архив вместе таблицами и объясни что хочешь сделать, тогда будет реальный шанс исправить ошибку
|
#12
|
|||
|
|||
Добавил архив
|
#13
|
||||
|
||||
Ошибка находится в процедуре создания формы, ты пытаешься присвоить размер колонкам которых не существует, от сюда и ошибка. Сделай всё это в статическом режиме, тогда и кода будет меньше и ошибки этой не будет.
Как это сделать? В статическом режиме активизируешь таблицу(открываешь) Жмёшь 2 раза на DBGrid, жмёшь кнопку Add All Fields и там уже назначаешь имена колонкам их размер и так далее. |
#14
|
|||
|
|||
W1ndow, огромное спасибо за помощь
|