169 похожих чатов

Constructor TCEFComponentIdList.Create; begin inherited Create; FList

:= nil;
FSyncObj := nil;
end;

destructor TCEFComponentIdList.Destroy;
begin
if assigned(FList) then FreeAndNil(FList);
if assigned(FSyncObj) then FreeAndNil(FSyncObj);

inherited Destroy;
end;

procedure TCEFComponentIdList.AfterConstruction;
begin
inherited AfterConstruction;

FList := TList.Create;
FSyncObj := TCriticalSection.Create;
end;

это они зачем так?

10 ответов

9 просмотров
Igor- Автор вопроса

продублирую субботний вопрос есть ли какой-то какой резон в такой двухэтапной инициализации?

Igor
продублирую субботний вопрос есть ли какой-то како...

Эта инициализация бесмысленна, т.к. при создания класса, переменные забиваются Default значениями FList := nil; FSyncObj := nil; Создание на afterconstraction нужно, чтобы при ошибке в конструкторе не произошло разрушение класса Но тогда нужно каждый раз проверять, был ли созданы объекты: FList и FSyncObj

Igor
продублирую субботний вопрос есть ли какой-то како...

с большой долей вероятности это писал не делфист код неграмотен, но на работу это не влияет

Igor
продублирую субботний вопрос есть ли какой-то како...

точно нет смысла в проверке Assigned перед FreeAndNil 🤷🏻‍♂️

Обниливать смысла тоже нет. Если инстанс только что создали то там и так гарантированно будет nil. Если же как-то умудрились до конструктора создать поля то будет утечека

Handatros
Обниливать смысла тоже нет. Если инстанс только чт...

почему сразу утечка)) и умудряца тоже ненадо - в лазаре можно создать с подготовленными полями емнип

Handatros
Как после обниливания разрушить?

ну этоже не полный код, а кусок?

Igor- Автор вопроса
zamtmn
ну этоже не полный код, а кусок?

полный практически одно присвоение невтемное из конструктора убрал

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
50
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
2
Карта сайта