1 Востаннє редагувалося A.N.Onim (19.08.2013 17:34:23)

Тема: Масиви(таблиці, Делфі)

Всім доброго дня!
Дійшов у підручнику до "двухмерных массивов"(підручник рос.). Як приклад програми приводиться программа, яка вичисляє кількість всіх медалей завойованих командою, переводе їх в очки і на їхній основі впорядковує команди в таблиці.
Ось як виглядає вікно програми:
http://s002.сайт-злодій/i199/1308/e3/fea487e4d78f.png
Рахують і впорядковують дані дві різні кнопки(другой поки ще немає  :) ).
Так, а тепер проблемка: не працює (  :D  ) .
Натискаю "Итоги". Видає помилку:
http://s018.сайт-злодій/i511/1308/ec/6a8e966786a8.png
Ось код процедури натискання:

procedure TForm1.Button1Click(Sender: TObject);

var
a: array[1..5, 1..13] of integer;
i:integer; // номер строки. Используется во время сортировки
j:integer; // номер колонки

begin
{зберігаємо данні введені в таблицю до масиву}
for i:= 1 to 13 do begin
for j:= 1 to 5 do begin
if (Tab1.Cells[j, i]= '') then
                                  Tab1.Cells[j, i]:= '0';
a[i, j]:= StrToInt(Tab1.Cells[j, i]);
end;
end;
{рахуємо загальну кількість медалей}
for i:= 1 to 13 do begin
Tab1.Cells[4, i]:= IntToStr(a[1, i]+a[2, i]+a[3, i]);
end;

end;

При запусканні програми в Делфі вказує на

if (Tab1.Cells[j, i]= '') then
                                  Tab1.Cells[j, i]:= '0';

Допоможіть, будь-ласка.

2 Востаннє редагувалося yooll (19.08.2013 17:37:37)

Re: Масиви(таблиці, Делфі)

В 14 рядку замість

a[i, j]:=...

напишіть 

a[j, i]:=...

, а то ви виходите за межі масиву.

Подякували: A.N.Onim, koala2

3

Re: Масиви(таблиці, Делфі)

Дякую.

4

Re: Масиви(таблиці, Делфі)

Перше, що треба зробити у таких випадках, це ввімкнути "Overflow checking" та "Range checking" в опціях компіляції проекту.