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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 21:34   #1
DoGFoX
Пользователь
 
Аватар для DoGFoX
 
Регистрация: 18.05.2010
Сообщений: 42
По умолчанию StringGrid и матрица

Доброго времени суток))) проблемка есть, заключается в слудеющем. Пытаюсь считать массив из стрингрида, после щелчка на кнопке вывести этот же массив в другом стрингриде... Проблема в том, что во второй стринг записывается только последнее значение матрицы.

Вот код:
Код:
begin
 n:=StrToInt(ComboBox1.Text);
 m:=StrToInt(ComboBox2.Text);
for i:=1 to n-1 do begin
for j:=1 to m-1 do Matrix1[i,j]:=StrToInt(StringGrid1.Cells[j,i]);end;

for i:=1 to m-1 do begin
for j:=1 to n-1 do
StringGrid2.Cells[i,j]:=IntToStr(Matrix1[j,i]);end;
end;
DoGFoX вне форума Ответить с цитированием
Старый 14.06.2010, 22:48   #2
DoGFoX
Пользователь
 
Аватар для DoGFoX
 
Регистрация: 18.05.2010
Сообщений: 42
По умолчанию

всё, всем спасибо)) сам во всём разобрался)))
DoGFoX вне форума Ответить с цитированием
Старый 14.06.2010, 23:17   #3
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Во первых Грид заполни StringGrid1.Cells[i,j]:=IntToStr(i)+IntToStr(j);, а во вторых (измучился пока заметил) чо у нас тут наоборот то все MyMatrix[i,j]:=StrToInt(StringGrid1.Cells[j,i]);, (переменные циклов) так надо что-ли. Если так то это только для квадратной матрицы пойдет.(Подумай это чертовски интересно)
baster128 вне форума Ответить с цитированием
Старый 15.06.2010, 01:15   #4
DoGFoX
Пользователь
 
Аватар для DoGFoX
 
Регистрация: 18.05.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от baster128 Посмотреть сообщение
Во первых Грид заполни StringGrid1.Cells[i,j]:=IntToStr(i)+IntToStr(j);, а во вторых (измучился пока заметил) чо у нас тут наоборот то все MyMatrix[i,j]:=StrToInt(StringGrid1.Cells[j,i]);, (переменные циклов) так надо что-ли. Если так то это только для квадратной матрицы пойдет.(Подумай это чертовски интересно)
заинтересовал однако
как эту фигню исправить, чтоб не только на квадратных работало??))
DoGFoX вне форума Ответить с цитированием
Старый 15.06.2010, 01:34   #5
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Держи целиком прогу поэсперементировал я тут спьяну...
Вложения
Тип файла: rar StringGrid.rar (195.4 Кб, 71 просмотров)
baster128 вне форума Ответить с цитированием
Старый 15.06.2010, 01:35   #6
DoGFoX
Пользователь
 
Аватар для DoGFoX
 
Регистрация: 18.05.2010
Сообщений: 42
По умолчанию

Спасибо огромное

чё то не разобрался я в твоём исходнике

нарооооооооооод, подскажите кто нибудь

Последний раз редактировалось Stilet; 18.06.2010 в 09:25.
DoGFoX вне форума Ответить с цитированием
Старый 17.06.2010, 00:48   #7
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

эксперименты походу были весьма)

так я не пойму что нужно сделать то))

чтобы перенести все данные из
StringGrid1 в StringGrid2 нужно сделать так
Код:
for i=1 to m-1 do
for j=1 to n-1 do // с n и m не помню,разберешься.
begin
StringGrid2[i,j]:=StringGrid1[i,j];
end;
вот и все.

" Пытаюсь считать массив из стрингрида, после щелчка на кнопке вывести этот же массив в другом стрингриде... Проблема в том, что во второй стринг записывается только последнее значение матрицы."

исходя из этого я понял:
Ты хочешь считать с стрингрида в массив(причем в двумерный не так ли?) значения,а потом заполнить другой стрингрид значениями из массива?
Смысл?это как из питера в москву через владивосток.
За помощь: Нажмите на весы слева от сообщения!

Последний раз редактировалось Stilet; 18.06.2010 в 09:26.
savva вне форума Ответить с цитированием
Старый 17.06.2010, 23:23   #8
DoGFoX
Пользователь
 
Аватар для DoGFoX
 
Регистрация: 18.05.2010
Сообщений: 42
По умолчанию

Не обязательно из StringGrida в StringGrid. Мне просто нужно разобраться, как правильно вывести массив порядка NxM в StringGrid
DoGFoX вне форума Ответить с цитированием
Старый 17.06.2010, 23:45   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
массив порядка NxM
Это уже матрица тогда уж получается...

Цитата:
TStringGrid.Cells[Col, Row]: string;
В StringGrid'е сначала столбцы, а потом строки... В матрицах наоборот...
Надо просто об этом не забывать...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.06.2010, 00:03   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Мне просто нужно разобраться, как правильно вывести массив порядка NxM в StringGrid
Это же элементарно!
N - это число строк
M - число столбцов
но в StringGrid.Cells наборот, сначала указывается столбец, потом строка.

Далее, строки/столбцы в StringGrid нумеруются от нуля. Но, есть проперти (свойства) FixedCol и FixedRow - это сколько столбцов и колонок сделать нескролируемыми. Обычно (по умолчанию) это 1 строка и 1 столбец. И обычно их используют, чтобы заносить туда заголовки (имена столбцов, номера строк и т.п.). Мы туда запишем просто номера по порядку.


вот и всё.
Код:
procedure TForm1.FillStringGridClick(Sender: TObject);
var N, M : integer;
  A : array[1..100,1..100] of integer;
  i,j : integer;
begin
  N := StrToInt(Edit1.Text);
  M := StrToInt(Edit2.Text);

  {заполним массив последовательностью чисел}
  for i:=1 to N do
    for j:=1 to M do
      A[i,j] := (i-1)*M+j;


  { зададим размеры StringGrid'а
    ( так как у нас есть
       дополнительные строка  и столбец
       (с учётом FixedRow/FixedCol)
       получается N+1 и M+1 }
  StringGrid1.RowCount := N+1;
  StringGrid1.ColCount := M+1;

  // заполним заголовки столбцов
  for i:=1 to M do
    StringGrid1.Cells[i,0] := IntToStr(i);

  // заполним заголовки строчек
  for i:=1 to N do
    StringGrid1.Cells[0, i] := IntToStr(i);

  {а вот и кульминация, перенос из двухмерного
    массива N x M
    в StringGrid}
  for i:=1 to N do
    for j:=1 to M do
      StringGrid1.Cells[j,i] := IntToStr(A[i,j]);


end;
Вложения
Тип файла: rar StringGridExample.rar (1.3 Кб, 36 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
матрица в Delphi (StringGrid) kukushonka Помощь студентам 7 01.06.2010 20:08
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
Матрица в StringGrid Ратмир Помощь студентам 1 04.04.2009 20:21
Матрица с использованием StringGrid Artruman Общие вопросы Delphi 2 18.12.2008 21:21