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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2009, 00:50   #1
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
Восклицание Двухмерные массивы(StringGrid)

Заполнение двухмерного массива данными из StringGrid, тут все работает))

Код:
procedure TForm1.BitBtn_OkClick(Sender: TObject);
 var n, m, i, j, fix_n, fix_m: integer;
   a: array [0..10,0..10] of real;
begin
   n:=StringGrid_In.ColCount;
   m:=StringGrid_In.RowCount;
   fix_n:=StringGrid_In.FixedCols;  
   fix_m:=StringGrid_In.FixedRows;  
      
 for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
   a[i-fix_n,j-fix_m]:= StrToFloat(StringGrid_In.Cells[i,j]);

   n:=StringGrid_Out.ColCount;
   m:=StringGrid_Out.RowCount;
   fix_n:=StringGrid_Out.FixedCols;
   fix_m:=StringGrid_Out.FixedRows;
     
 for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
   StringGrid_Out.Cells[i,j]:= FloatToStr(a[i-fix_n,j-fix_m]);
end;

end.
А вот теперь нужно сделать то же самое, только для динамического массива и тут я немного запутался


Код:
procedure TForm1.BitBtn_OkClick(Sender: TObject);
 var n, m, i, j, fix_n, fix_m: integer;
   a: array of array of real;
begin
   n:=StringGrid_In.ColCount;
   m:=Stprocedure TForm1.BitBtn_OkClick(Sender: TObject);
 var n, m, i, j, fix_n, fix_m: integer;
   a: array of array of real;
begin
   n:=StringGrid_In.ColCount;
   m:=StringGrid_In.RowCount;
   fix_n:=StringGrid_In.FixedCols;  
   fix_m:=StringGrid_In.FixedRows;  
     SetLength(a,n);
     SetLength(a[n],m);
      
 for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
   :confused: a[i-fix_n,j-fix_m]:= StrToFloat(StringGrid_In.Cells[i,j]);//здесь вылетает break

   n:=StringGrid_Out.ColCount;
   m:=StringGrid_Out.RowCount;
   fix_n:=StringGrid_Out.FixedCols;
   fix_m:=StringGrid_Out.FixedRows;
     
 for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
   StringGrid_Out.Cells[i,j]:= FloatToStr(a[i-fix_n,j-fix_m]);
end;

end.

Последний раз редактировалось Stilet; 06.04.2009 в 10:52.
MaksimSeriy вне форума Ответить с цитированием
Старый 06.04.2009, 00:53   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот тут немного по-другому:
Код:
SetLength(a,n);
SetLength(a[n],m);
надо:
Код:
SetLength(a,n);
for i:=1 to n do
 SetLength(a[i],m);
Это будет массив nxm.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.04.2009, 00:55   #3
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
По умолчанию

OK, cпасибо!

SetLength(a,n);
for i:=1 to n do
SetLength(a[i],m);

тоже не работает(((((( break вылетает в конце процедуры

Последний раз редактировалось Stilet; 06.04.2009 в 10:52.
MaksimSeriy вне форума Ответить с цитированием
Старый 06.04.2009, 01:27   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот..
Неудобно, что вы стандартные имена изменили.
Код:
procedure TForm1.BitBtn_OkClick(Sender: TObject);
var n, m, i, j, fix_n, fix_m: integer;
a: array of array of real;
begin
n:=StringGrid_In.ColCount;
m:=StringGrid_In.RowCount;
fix_n:=StringGrid_In.FixedCols;
fix_m:=StringGrid_In.FixedRows;
SetLength(a,n-fix_n);
for i:=0 to n-fix_n-1 do
 SetLength(a[i],m-fix_m);

for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
  a[i-fix_n,j-fix_m]:= StrToFloat(StringGrid_In.Cells[i,j]);

  n:=StringGrid_Out.ColCount;
m:=StringGrid_Out.RowCount;
fix_n:=StringGrid_Out.FixedCols;
fix_m:=StringGrid_Out.FixedRows;

for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
  StringGrid_Out.Cells[i,j]:= FloatToStr(a[i-fix_n,j-fix_m]);
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Двухмерные массивы rus_rock_no_dead Помощь студентам 4 23.05.2010 23:21
Помогите решить задачу на Двухмерные массивы. dimmkka Помощь студентам 1 03.03.2009 00:04
про двухмерные массивы alexov Общие вопросы C/C++ 7 07.12.2008 21:03
Двухмерные массивы (С++) Nattka Помощь студентам 2 04.12.2008 21:15
Двухмерные массивы - ошибка fudzy79 Помощь студентам 21 06.02.2008 22:50