Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ заполнение массива через Stringrid

Автор: BananaMan 1.06.2006 18:44

программа перемножения матриц
тремя переменными здесь уже вроде не обойтись, поэтому приходится обращаться к массивам
НО при попытке заполнить массив данными вылетает страшная ошибка в 8 строке

type vec=array of integer;
var i,j,k:integer;
a,b,res:array of vec;
begin
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-1 do
begin
a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
end;


что не так? и можно ли вобще так делать?

Автор: volvo 1.06.2006 18:48

Прежде, чем массив заполнять, надо выделить для него место, правда?

Var a: array of array of integer;
...
SetLength(a, StringGrid1.RowCount, StringGrid1.ColCount);

должно помочь...

Автор: BananaMan 1.06.2006 18:52

ойойой
елки
точно
забыл) blush.gif
извянитя=)

Автор: BananaMan 1.06.2006 20:05

не получается cray.gif
посмотрите пжлст программу (умножение)
архив прикрепляю


Прикрепленные файлы
Прикрепленный файл  ________.rar ( 38.67 килобайт ) Кол-во скачиваний: 151

Автор: BananaMan 2.06.2006 0:11

и еще вопрос
можно ли это сделать без массива, и правильно ли это будет

Автор: мисс_граффити 3.06.2006 2:46

предлагаешь по 4 модулям искать нужную процедуру и пытаться отладить?
имхо, это банальное проявление неуважения.

дальше.
делфи вывод вполне конкретную ошибку. читать не пробовал, какую?

сделать без массива при большом желании можно.
будет ли правильно - зависит от того, как сформулировано задание. с учетом, что этого мы не знаем, задай вопрос на оракул.ру.

З.Ы. судя по коду, ты абсолютно не понимаешь принципа работы с двумерными массивами. в другой теме тебе указывала на эти ошибки - и ты опять повторяешь.
циклы по строкам и столбцам должны быть связаны вполне определенным образом.

например, вот это:

for j:=1 to StringGrid1.RowCount-1 do
begin
if (StringGrid1.Cells[1,j]='') or (StringGrid2.Cells[1,j]='') then
begin
ShowMessage('Матрицы имеют незаполненные ячейки');
break;
end

-ерунда полная. ты проверишь на наличие незаполненных ячеек только первый столбец.

for i:=0 to m-1 do
for j:=0 to n-1 do
begin
a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
end;

-у стринггридов и массивов нумерация идет наоборот. если элемент массива [i,j], то у стринггрида [j,i]

Автор: sildenafil citrate generic viagr 1.11.2021 10:44

Comprar Cialis Generico En Espana Contrareembolso