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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2019, 18:24   #1
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию вопрос по Tlist и Generics.Collections и records

Хелп! вот тут в ветке "Я_не_понял,_как_работать_с_пашиной _структурой,_потому_делаю_свои_клас сы"
git@gitlab.com:anaschu/social3.git
У меня проблема.

внутри класса Tcell есть Tlist Popul, а он состоит из обьектов класса Human. внутри Human есть рекорд "Генотип" класса Rгенотип

Код:
public type
    RGenotype = record
    Genotype: RGenotype;
Внутри процедуры TCell.AddHuman возникает проблема.

Код:
procedure TCell.AddHuman overload;
var
  i: byte;
  //procedure getGen
begin
  for i := 0 to 1 do
  begin
    Popul.Add(new(Human));
    Popul.Last.Genotype.Agress := 5;
Там где жерное ошибка.

Класс Human наследует класс Animal
Код:
type
  TAnimal = class
  public const
    Hungry = 1;
  public type
    RGenotype = record
этот рекорд Генотип почему то не хочет заполняться. В данном случае не хочет туда ставить пятёрку. чё енто такое? Прога есть пока тока в гите, сюда она загружаться не желает. инет так себе.
Вот дропбокс.
https://www.dropbox.com/s/rdy7of7cwz...n_3.2.rar?dl=0
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 05.08.2019 в 19:20.
anaschu вне форума Ответить с цитированием
Старый 06.08.2019, 02:21   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от anaschu Посмотреть сообщение
Там где жерное ошибка.
А само сообщение об ошибке очень трудно было привести?
И нафига вы даёте ссылку на дропбокс? Всё можно прикрепить к сообщению стандартным инструментарием форума.
northener на форуме Ответить с цитированием
Старый 06.08.2019, 07:58   #3
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
стандартным инструментарием
Цитата:
Сообщение от anaschu Посмотреть сообщение
сюда она загружаться не желает. инет так себе.
акцесс виолейшн. рекордс не заполняется. я это упомянул: "этот рекорд Генотип почему то не хочет заполняться. В данном случае не хочет туда ставить пятёрку. "
Изображения
Тип файла: png Снимок.PNG (1.9 Кб, 56 просмотров)
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 06.08.2019, 10:17   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

https://programmersforum.ru/showpost...3&postcount=23
последние две строки.
проверять
и Last
и Genotype
P.S.
Код:
(Popul.Last as THuman).Genotype
классы(экземпляры) НЕ создаются с помощью new
объекты(ЭКЗЕМПЛЯРЫ классов) создают с помощью конструкторов
Код:
r:=THuman.Create;
r.Genotype.....
popul.Add(r);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.08.2019 в 10:33.
evg_m вне форума Ответить с цитированием
Старый 06.08.2019, 14:56   #5
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
классы(экземпляры) НЕ создаются с помощью new
это приводит к не созданию обьекта или к ошибкам в его работе?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 06.08.2019, 15:07   #6
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
r:=THuman.Create;
r.Genotype.....
popul.Add(r);
чё то у меня генетическая неспособность инициировать обьекты. ну ок. вот сделал точно так, и
[dcc32 Error] Cell.pas(110): E2010 Incompatible types: 'Human' and 'THuman'

Код:
procedure TCell.AddHuman overload;
var
  i: byte;
  hum:THuman;
  //procedure getGen
begin
  for i := 0 to 1 do
  begin
    hum:=THuman.Create;
    with Hum.Genotype do
    begin
      Agress := 5;
      Attract := 5;
      Coop := 5;
      Altr := 5;
      Strange := 5;
      Rank := 5;
    end;
    Popul.Add(Hum);
  end;
  Popul.First.Genotype.Sex := True;
  Popul.Last.Genotype.Sex := False;
  if Popul.Last.Genotype.Sex then
    BySex.Insert(0, Popul.Count - 1)
  else
    BySex.Insert(BySex.Count - 1, Popul.Count - 1);
end;

end.
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

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

Так у вас два класса Human и THuman...
p51x вне форума Ответить с цитированием
Старый 06.08.2019, 15:57   #8
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Human и THuman...
Human = ^THuman
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 06.08.2019, 16:15   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. TList для хранения наследников TObject(объектов) == TObjectList

2.
Цитата:
Human = ^THuman
значит как минимум @r; (только на основе приведенной цитаты, без анализа кода!!!)
или же наоборот xxx^;
но лучше воспользоваться п.1.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.08.2019, 18:12   #10
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
TList для хранения наследников TObject(объектов) == TObjectList
то есть дженерик не подходит?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Generics.collections viks1 Общие вопросы Delphi 29 23.01.2015 14:16
Java Collections slavarus Помощь студентам 0 06.10.2013 17:57
C#. Generics Arrays/Обобщенные массивы Lasur C# (си шарп) 2 13.03.2012 05:08
Records MD1 Паскаль, Turbo Pascal, PascalABC.NET 7 30.01.2012 23:46
== для generics-типов. vedro-compota C# (си шарп) 4 07.04.2011 08:22