Alex2013 писал(а):- Код: Выделить всё
theClass := TList;
Присвоить экземпляру тип ? Это вообще как ????
Я не понимаю степень вашей удивлённости.
Ну это как бы базовые вещи языка..., можно сказать "типизированный указатель", вдруг если что, ещё можно в переменные функции и методы пихать...
как-то так...
Вот вам ссылочка на переводик
Ссылки на класс
https://pascal-study.blogspot.com/2012/ ... 9.html?m=1
Добавлено спустя 32 минуты 42 секунды:RRYTY писал(а):Тогда так:
- Код: Выделить всё
L:= TList(theClass.Create).Create;
Вам спасибо за интересный вариант
рабочий но спорный... В какойто момент думал распечатать повесить в рамку и в церьковь к экзорцистам бесов изгонять

но после пояснений
wavebvg и
Alex2013 стало понятно как это работет...
и получается, что у себя я не смогу этим вариантов воспользоваться, т.к. эта "богадельня" по юнитам разным разбросана
1. theClass.Create - выделит памяти для TObject (тут нет доступа к декларации, тип внутри переменной)
2. в следующей функции if L.Count = 0 then L.Add(...);
3. и только в следующей функции я буду иметь доступ к декларации TList-a и его наследников...
вся суть теряется
Добавлено спустя 9 минут 41 секунду:wavebvg писал(а):
Всё зависит от менеджера памяти и включенных опций безопасности и т.п.
0. TObject.Create и TList.Create -- статические методы. Значит TList(theClass.Create); вызовет только TObject.Create выделит памяти для TObject.
1. TList(theClass.Create).Create; вызовет TObject.Create выделит памяти для TObject, после чего вызовет конструктор для TList.Create и попортит память за пределами класса.
2. В Дельфе TList класс в себе и ничего в конструкторе интересного не делает, в отличии от FPC-го, который, по сути, является делегированной обёрткой над TFPList.
3. Если обращение TFPList(nil).Count у Вас работает, т.е. чтение из адреса 0+Смещение FCount (+$10 судя из поста топикстартера) из TFPList, то нет AV, в противном случае есть.
Я считаю что это бага в FP
так как вся суть и прелесть использования
Типа_ссылки_на_класс теряется
Добавлено спустя 16 минут 7 секунд:Sharfik писал(а):Юрий писал(а):>>Потому что Lazarus приличная IDE, а Delphi - нет. Delphi любит чтобы пользователь побольше мучался.
Тут я с вами не согласен. И та и та отличные среды, где-то в одной что-то удобнее, где-то в другой…
Тут вопрос выбора больше политически-идеологический… Моё личное мнение что после наступление примерного момента когда Убунта(и аналоги) стали по качеству луче чем Винда… Сначала Винда со своими обновлениями и инновациями пойдёт постепенно в Ж… А потом и Делфи потянется туда же… А для нас это процесс пойдёт быстрее, плоды начали всходить от санкций и импортозамещений…
При переходе с Delphi на Lazaasu о программировании узнаешь гораздо больше и код становится более продуманным.
Понятие "удобно" это путь к деградации. Вместо того чтобы учиться и изучать новое, люди упираются в одно какое то ПО и перестают развиваться. А дальше вместе с ними вся компания потенциально угасает. Сейчас это особенно заметно, когда люди вместо того чтобы попробовать что то новое начинают предлагать "давайте взломанный установим".
>>Понятие "удобно" это путь к деградации.
Что поделать деградация, регрессия, загнивание часть нашей жизни...
Ну вот иногда вам нужно забить гвоздь, вы идете в магаз и покупайте молоток, а можно купить и микроскоп, а можно купить завод, выплавить сталь и произвести молоток... У каждого своё "удобно"