Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Чем лучше? Найти похожие ветки
← →
}|{yk © (2004-02-24 19:28) [0]Объясните мне пожалуйста, почему код
with TJPEGImage.Create do
begin
CompressionQuality := ImageQuality;
Assign(bitmap);
SaveToFile(FFolderScreenShoots + FImageFileMask + FSuffix + ".jpg");
FreeAndNil(self);
end;
лучше аналогичного
но с переменной типа . то, что текста меньше понятно :)
← →
Юрий Зотов © (2004-02-24 19:39) [1]FreeAndNil(Self) - не прокатит. Вот правильная схема:
with TMyClass.Create do
try
...
finally
Free
end;
А чем лучше... Экономится 4 байта и кэшируются свойства и методы (хотя не уверен на все 100 - надо смотреть ассемблерный код).
← →
DiamondShark © (2004-02-24 19:39) [2]А почему у хвостов есть собаки?
Из той же серии вопрос.
Кто сказал, что лучше? Вот пусть тот и объясняет.
ЗЫ
Код, кстати, полный отстой. Но не по причине "с переменной али без".
← →
Anatoly Podgoretsky © (2004-02-24 19:39) [3]Тем что нет переменной
Только что тут делает FreeAndNil(self); из контекста это не ясно, к тому же self это не переменная, а в лучшем случае значение указатеся
← →
sniknik © (2004-02-24 20:00) [4]мне вообще конструкции с with не нравятся, неразберешся после что там от чего, использую только если код получается однозначным и коротким.
← →
Тимохов © (2004-02-24 20:04) [5]Я with также не люблю.
Ни разу не пользовался.
Высказивание Юрия Зотова о большей оптимальности with требует подтверждения. Это что правда?
← →
}|{yk © (2004-02-24 20:06) [6]FreeAndNil(self); точно лишнее
А код наверноее не нравится из-за
SaveToFile(FFolderScreenShoots + FImageFileMask + FSuffix + ".jpg");?
Так это ж рабочая версия :)
← →
Тимохов © (2004-02-24 20:09) [7]
> FreeAndNil(self); точно лишнее
Это не лишнее - это не верное. Надо как написал Юрий Зотов.
← →
Anatoly Podgoretsky © (2004-02-24 20:17) [8]sniknik © (24.02.04 20:00) [4]
Примениние в таком виде очень удобно (with .create do try finally end), а вот применение для умельньшения количество символов приносит вред.
Тимохов © (24.02.04 20:04) [5]
Не требует, но дело не столько в самом with сколько в begin end
Для компилятора это представляется как одна составная команда и он может ее особым образом оптимизировать, не забываем что компилятор однопроходный.
← →
sniknik © (2004-02-24 22:06) [9]> удобно (with .create do try finally end)
если кода на пять строк то да, но мне приходилось разбиратся с такой конструкцией с кодом на пару сотен строк, да не с одним а порой вложенных.
пока не переписал один в один с без него (with) не понимал чего там вообще делается, а как переписал то "сама собой" убралась ошибка ради которой и разбирался.
это правильно? ;о)
убрал бы его совсем из языка если бы мог, или лутше бы запретил использовать "до 5 лет программирования", вреда больше чем пользы.
← →
Anatoly Podgoretsky © (2004-02-24 22:13) [10]Всему свое время, не стоит использовать там где неээфетивен. Я вообще ограничиваюсь только вышеуказанной конструкции, для создания анонимных объектов, да и то иногда возникают проблемы, если есть обращение к одноименным элементам созданого объекта.
Во всех остальныъ случаях не вижу смысла экономить на символах в ущерб надежности программы.
А ошибки неодназначности обращения к одноименным вещам налицо.
← →
Gero © (2004-02-24 22:24) [11]> вреда больше чем пользы
Вы не правы, в небольших кусках кода он смотрится очень изящно, да и "with create do try finally end" очень часто использую.
Просто нужно знать, где лучше обойтись без него.
← →
Anatoly Podgoretsky © (2004-02-24 22:33) [12]Мы же про любовь :-)
Ну и конечно про правомерность немного.
← →
sniknik © (2004-02-25 01:28) [13]Gero © (24.02.04 22:24) [11]
я тебе как нибудь пришлю экземпляр. ;о) и не изящный а то что на самом деле пишут, и в чем иногда приходится копаться.
(а про небольшие и разговора не было, наоборот оговаривал что и сам допускаю иногда [4])
← →
Anatoly Podgoretsky © (2004-02-25 08:56) [14]Краткая форма для немодальных форм
with TForm1.Create(Application) do Show
или даже так
TForm1.Create(Application).Show
← →
Тимохов © (2004-02-25 12:18) [15]
> Anatoly Podgoretsky © (24.02.04 20:17) [8]
Про begin end интересная информация.
Это документировано где-то? Или это опыт изучения асма программы (или вообще асма самого дельфи :)))
А что если просто так ставить begin end. Это ведь возможно. Это поможет компилятору?
← →
Anatoly Podgoretsky © (2004-02-25 12:21) [16]Тимохов © (25.02.04 12:18) [15]
Нет личное предположение, ничем не обоснованное документально.
← →
han_malign © (2004-02-25 13:16) [17]Delphi Help
A with statement is a shorthand for referencing the fields of a record or the fields, properties, and methods of an object. The syntax of a with statement is
with obj do statement
..........................
If the interpretation of obj involves indexing arrays or dereferencing pointers, these actions are performed once, before statement is executed. This makes with statements efficient as well as concise.
..........................
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.029 c