Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Чем лучше?   Найти похожие ветки 

 
}|{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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
9-1062027399
Dimon
2003-08-28 03:36
2004.03.28
Нужен компанент


8-1068878452
niva
2003-11-15 09:40
2004.03.28
Вопрос по векторному редактору


14-1078392207
Zendor
2004-03-04 12:23
2004.03.28
update


6-1074061465
olegking
2004-01-14 09:24
2004.03.28
Как получить имена или ИП всех компов находящихся в сети


4-1074410194
max003
2004-01-18 10:16
2004.03.28
Как изменить свойство enabled элемента чужой программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский