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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2024, 11:31   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,578
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Незачет.
Тем ни менее такое возможно. А еще можно удалить объект без обнуления указателя. Тут даже никаких предупреждений не будет.

Ну или вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Panel: TPanel;
begin
  Panel := TPanel(1);
  if Panel = nil
    then ShowMessage('nil')
    else ShowMessage('not nil');
end;
Скажете, извращение какое-то? А вы посмотрите в других темах код ТС! Так что не исключено любое извращение

Последний раз редактировалось Arigato; 19.05.2024 в 11:34.
Arigato вне форума Ответить с цитированием
Старый 19.05.2024, 14:55   #12
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
А еще можно удалить объект без обнуления указателя. Тут даже никаких предупреждений не будет.
Я и написал:
Цитата:
Сообщение от Vapaamies Посмотреть сообщение
На практике решается размещением переменных в теле класса, вызовом FreeAndNil для их очистки, а также использованием соответствующих контейнеров (TObjectList вместо массива, например), если нужно.
Цитата:
Сообщение от Arigato Посмотреть сообщение
А вы посмотрите в других темах код ТС! Так что не исключено любое извращение
Как раз-таки исключено. Он задает вопросы по организации кода, алгоритмам и прочему, а не об утечках или других технических ошибках, решаемых отладчиком или даже чтением сообщений компилятора. Иначе я бы первый написал ему: «отладчик у тебя перед глазами, не у меня». Повода пока не было.

Вообще, так и хочется сказать: вы тут самоутверждаетесь, а я пишу по делу. Но, так и быть, не буду. Пусть ТС скажет.
Vapaamies вне форума Ответить с цитированием
Старый 19.05.2024, 18:11   #13
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,578
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Как раз-таки исключено.
Защита от дурака, она делается даже на те случаи, которые вроде бы как попадают под понятие "исключено". Но на каждое "исключено" найдется свой "дурак"
Arigato вне форума Ответить с цитированием
Старый 20.05.2024, 11:27   #14
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Защита от дурака, она делается даже на те случаи, которые вроде бы как попадают под понятие "исключено".
Никакая это не защита от дурака, а генератор неподдерживаемого говнокода.

Кстати, функция-то не нужна. Читая тему, задней мыслью думал, что же тут не так? В Питере дело к белым ночам, у меня традиционная бессонница, а сегодня впервые за несколько дней наконец-то выспался.
Код:
begin
  ...
  if (Panel1 <> nil) and Panel1.Visible then
    ...
end;
По умолчанию {$BOOLEVAL OFF}, то есть при ложности первого операнда and второй вычисляться не будет. С точки зрения ассемблера и исполнения процессором данный код также предельно эффективен.

Бертран Мейер считает, что подобные фишки должны быть заданы в языке явно, поэтому в языке Эйфель есть операции and then и or else:
Код:
do
  ...
  if Panel /= Void and then Panel1.Visible then
    ...
end
Ну, а нам в Delphi приходится полагаться на механизм умолчаний.
Vapaamies вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректна ли замена BitMap Kronos913 Общие вопросы Delphi 3 12.03.2024 07:03
Напишите функцию calculateArea. -Если функция принимает одно число "a" - она возвращает площадь квадрата (a*a). -Если функция принимает два числа "a, b" - она возвращает площадь пр Skeydzh Фриланс 4 04.07.2017 22:42
Функция ICMP Microsoft Office Excel 7 05.01.2014 02:11
Функция pow |Dima| Общие вопросы C/C++ 16 19.07.2011 13:07
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50