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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2019, 15:18   #1
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию Работа с классами, визуализация в стрингГрид, клеточный автомат

У меня есть процедура нажатия на кнопку.
Внутри нее есть перенос информации из двойного массива field в средство визуализации данных StringGrid1.
но отображение неверное, внутри массива field есть класс Cell, в нём каждый шаг моделирования Fstep уменьшается переменная Resource.
Конкретно сейчас пока что уменьшается ресурс от сотни до нуля только в клетке field[4,4]. он становится равным нулю уже на Fstep =5.
Но на поле он как был равен сотне, так и остался.

в чем дело?

Код:
procedure TForm2.Button1Click
  (Sender: TObject { ACol, ARow: Integer;   Rect: TRect; State: TGridDrawState } );
var
  i, j, FStepCount: integer;
  // step:Integer;
//  field: TField;
begin
  i := 10;
  j := 10;

  field.Free;
  field := TField.Create(i, j);
  field.fillField(i, j, 10);
  fillStiringGrid(field, StringGrid1, i, j, 10);

  // закрашиваем ячейку

  // находим максимальное значение

  field.Fstep := 0;
  for FStepCount := 0 to 100000 do  //количество шагов
  begin
    field.DoStep(field.Fstep);
    inc(field.Fstep);
  end;
  fillStiringGrid(field, StringGrid1, i, j, 10);

end;

Код:
procedure TForm2.fillStiringGrid(var field:Tfield; var sg: TStringGrid;
                              rowCount, colCount, maxValue: integer);
var
  i, j: integer;
begin
  sg.RowCount:=rowCount;
  sg.ColCount:=colCount;
  rowCount := 10;
  // Создаем объекты клеток.
  Randomize;
  for i := 0 to StringGrid1.RowCount-1 do
  begin
    for j := 0 to StringGrid1.ColCount-1 do
    begin
      sg.Cells[i, j]:=inttostr(field.Farea[i,j].Resource);
    end;
  end;

end;
Вложения
Тип файла: rar 18.1 урок.rar (925.6 Кб, 6 просмотров)
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 07.03.2019 в 15:22.
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 15:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Чем вас не устроила прошлая тема http://www.programmersforum.ru/showthread.php?t=326826?
Кстати, плохая практика прир заполнении параметра sg вдруг обращаться к тому, что передали напрямую StringGrid1.
p51x вне форума Ответить с цитированием
Старый 07.03.2019, 16:19   #3
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Чем вас не устроила прошлая тема http://www.programmersforum.ru/showthread.php?t=326826?
Кстати, плохая практика прир заполнении параметра sg вдруг обращаться к тому, что передали напрямую StringGrid1.
да я толком не знаю, к какой теме это относиться. то ли классы, то ли стринг грид. к тому же в основной теме я хочу обращаться напрямую к побочным, а тут вроде как нельзя обратиться к посту с номером внутри темы. придеться потом листать. неудобно.
Что бы как то поправить ситуацию, добавил в ту тему ссылку на эту тему.
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 07.03.2019 в 16:26.
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 16:22   #4
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
плохая практика прир заполнении параметра sg вдруг обращаться к тому, что передали напрямую StringGrid1.
можно вообще обойтись без
Цитата:
Сообщение от anaschu Посмотреть сообщение
sg.RowCount:=rowCount;
sg.ColCount:=colCount;
?

Я наверное, не очень понял, что я передал напрямую в стригрид((
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 16:24   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Если они не меняются, то можно.
p51x вне форума Ответить с цитированием
Старый 07.03.2019, 16:27   #6
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
не меняются,
внутри процедуры прорисовки таблицы не меняются, да. но внутри всей программы сначала в процедуре создания экземпляра класса подается 1 на 1 поле, потом где то там 5 на 5, и только потом 10 на 10. так что наверное, надо оставить
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 07.03.2019 в 16:30.
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 16:47   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

...и передавать указатели по ссылке (var) тоже не нужно.
Только если изменяете их значение (создаете новый объект), но обычно это делают на одном уровне, например конструктор/деструктор или создали в начале функции, а удалили в конце.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.03.2019, 17:10   #8
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
ередавать указатели по ссылке (var)
rowCount, colCount автоматически передауются вместе с StringGrid1 ? Или вы не про них? а то я убрал rowCount, colCount, терь не работает, говорит , что [dcc32 Error] Unit2.pas(230): E2003 Undeclared identifier: 'rowCount'
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 07.03.2019 в 17:13.
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 17:15   #9
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
это делают на одном уровне, например конструктор/деструкто
у меня пока с свойствами классов и передачей приват паблик свойств проблемы. не научился ещё ( если это та тема)
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 07.03.2019, 17:22   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от anaschu Посмотреть сообщение
rowCount, colCount автоматически передауются вместе с StringGrid1 ?
Если вы про его свойства, то да - это же объект. Если вы вошли в комнату, то руки и ноги тоже вошли?
Если же про переменные, которыми вы задаете новые значения, то нет.

Цитата:
Сообщение от anaschu Посмотреть сообщение
Или вы не про них?
У вас с var только один параметр.

Цитата:
Сообщение от anaschu Посмотреть сообщение
а то я убрал rowCount, colCount, терь не работает, говорит , что [dcc32 Error] Unit2.pas(230): E2003 Undeclared identifier: 'rowCount'
Вы убрали параметр и обращаетесь к нему... вы что ожидали?

Цитата:
Сообщение от anaschu Посмотреть сообщение
у меня пока с свойствами классов и передачей приват паблик свойств проблемы.
Что со свойствами непонятно? А передача ничем не отличается от других переменных.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клеточный автомат 5го класса дельфи ООП anaschu Фриланс 5 12.04.2018 00:06
Клеточный автомат c# с использованием datagridview sashakozlovskiy Помощь студентам 0 08.06.2016 12:15
Клеточный автомат Винера-Розенблюта slavarus Помощь студентам 2 17.09.2013 06:56
Клеточный автомат Munya Фриланс 4 08.05.2010 13:34
Клеточный автомат Noor Помощь студентам 4 29.11.2007 09:19