Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизОчистка USES Найти похожие ветки
← →
Stanislav © (2006-07-27 11:08) [0]Можно ли каким-то образом автоматически из всех модулей проекта вычистить блок USES, т.е. убрать из него те модули которые нигде не используются
← →
KilkennyCat © (2006-07-27 11:17) [1]Просто удалить. Нужные сами воскреснут, большинство.
← →
Stanislav © (2006-07-27 11:47) [2]В принципе можно, но хотелось бы автоматом.
Зачем вообще делфи их компилит в EXE если они не используются?
← →
Сергей М. © (2006-07-27 11:52) [3]
> Зачем вообще делфи их компилит в EXE если они не используются?
Затем и компилит, что в ходе "компиляции" как раз и выясняет, надо оно или не надо для обеспечения работоспособности целевого кода.
← →
PSPF2003 © (2006-07-27 11:52) [4]Угумс.. Был тут один хотел чтоб ему Делфи по рисунку программу сделал…
← →
Stanislav © (2006-07-27 11:57) [5]Сергей М. © (27.07.06 11:52) [3]
Так если ненадо, зачем тогда включает в EXE?
← →
Сергей М. © (2006-07-27 12:01) [6]
> если ненадо, зачем тогда включает в EXE?
Если включает, значит надо.
А если не понимаешь, что из включаемого есть действительно "надо", так и спроси)
← →
Stanislav © (2006-07-27 12:10) [7]Сергей М. © (27.07.06 12:01) [6]
Не согласен!
Берем "Тяжелый" компонент, например cxGrid, кладем на форму, компилируем, смотрим объем exe - 2,08 МБ.
Удаляем CxGrid, т.е. он нигде не используется, а в uses остаются прописанные модули, компилируем, смотрим объем exe - 2,07 МБ.
Оьъем уменьшился только на ресурс занимаемый экземпляром cxGrid"a
Вывод Delphi включила не используемый в проекте класс TcxGrid
← →
Сергей М. © (2006-07-27 12:14) [8]
> Stanislav © (27.07.06 12:10) [7]
Мало что еще делает юнит, в котором определен/реализован класс TcxGrid !
Среда не обязана отслеживать хитрозадую (не очевидную) логику юнитов, потому и не удаляет юнит из списка.
← →
Плохиш © (2006-07-27 12:57) [9]
> Stanislav © (27.07.06 12:10) [7]
Модуль телепатор в делфи ещё не встроили, поэтому она совершенно не знает нужны суперкрутомупрогеру все модули, которые он соизволил включить в uses или нет. К примеру, если ты снимаешь колесо у велика, то у тебя вилка сама отваливается? Она же не нужна уже, колеса-то нет.
← →
PSPF2003 © (2006-07-27 13:04) [10]
> Плохиш ©
Прикольное сравнение :)
← →
Stanislav © (2006-07-27 13:26) [11]Дело в том что велик не автоматизированная система.
А проанализировать что нужно что не нужно вполне реально.
← →
@!!ex © (2006-07-27 13:32) [12]Stanislav ©
ну вот если тебе реально, то и напиши анализатор, который будет это делать.
Делов то.
Или опять логика: Да вот мне нужно.... Да это вообще то плево делаеться... Но мне самому неохото.... Может компонент какой есть?
← →
KilkennyCat © (2006-07-27 13:32) [13]> [11] Stanislav © (27.07.06 13:26)
> А проанализировать что нужно что не нужно вполне реально.
Возможно, именно поэтому программы пока еще пишут люди, а?
Указанный пример с TcxGrid не имеет никакого отношения к Делфи, это просто человеческий фактор. См. [9]
← →
Stanislav © (2006-07-27 13:41) [14]@!!ex © (27.07.06 13:32) [12]
Возможно напишу, но по логике уже должен быть.
← →
@!!ex © (2006-07-27 13:45) [15]>>Возможно напишу, но по логике уже должен быть.
По логике уже должны быть парящие автомобили на воде в качестве горючего.
Если серьезно, то анализатор довольно объемный и медленный получиться, но не сложный.....
Хотя некоторые вещи я бы сейчас не рискнул утверждать, что знаю как сделать.
← →
KilkennyCat © (2006-07-27 14:13) [16]Ага, проанализируйте ситуацию: я добавил модуль, написал кучу к нему завязанного, а потом закомментировал, оставив на будущее, потому как сроки поджимали, клиенту хоть что-то надо было отдать... но, в дальнейшем буду дорабатывать...
ИИ, одним словом, хотите...
← →
KilkennyCat © (2006-07-27 14:14) [17]> По логике уже должны быть парящие автомобили на воде в качестве
> горючего.
Забавно можно прочитать: автомобили, которые парят на воде. Используются в качестве горючего, причем именно паря на воде :))
← →
Stanislav © (2006-07-27 14:22) [18]KilkennyCat © (27.07.06 14:13) [16]
Правильно из USES удалять и не нужно, но и ненужно включать в exe
← →
jack128 © (2006-07-27 14:30) [19]Stanislav © (27.07.06 13:41) [14]
Возможно напишу, но по логике уже должен быть.
На искуственный интелект замахивемся? Ну-ну..
PS нужно ли удалять модуль XPMan из списка uses ??
← →
KilkennyCat © (2006-07-27 14:31) [20]а если все-таки нужно? может, я там внутре что-то перекрыл генофондное?
Вот Вам сейчас нужна кнопка, Вы ее кинули на панель. А потом стала не нужна, Вы даже нигде ее не упомянули, не одно событие ее не обработали... Ее тоже надо удалить автоматом? А мож она для красоты?
На мой взгляд, лучше больше уделить внимания разработке проекта, дабы не возникало нужды в таком анализаторе. Ибо, раз требуется автоматизация такого, значит во всех проектах так плохо...
← →
Stanislav © (2006-07-27 14:35) [21]Кнопка прописывается в класс формы и XPMan, тоже.
Проекты не мои.
← →
Ketmar © (2006-07-27 14:35) [22]в общем случае, как уже написали, задача автоматически нерешаема.
интересно, как анализатор будет вести себя, например, с моим модулем conDriver2U, в котором нет ни одного "публичного" объявления? выкинет? а по рогам за такую самодеятельность? у меня в initialization делается всё, что надо.
или оставлять все модули, где непустые секции инициализации/завершения? так тогда что выкидывать-то, если у очень многих модулей они непустые? ну-ну, пишите...
← →
@!!ex © (2006-07-27 14:53) [23]Кнопка прописывается в класс формы и XPMan, тоже.
XPMan не может прописаться в форме... У меня и формы то нету.....
Это тодже анализировать? :)
Действительно ИИ получаеться.
KilkennyCat
Ну да... Запятую не поставил. Бывает.
← →
Игорь Шевченко © (2006-07-27 14:59) [24]http://peganza.com/ICARUS.ZIP
← →
Stanislav © (2006-07-27 15:49) [25]@!!ex © (27.07.06 14:53) [23]
Если нету формы зачем "для красоты" кнопки?
И XPMAN?
Еще ни от кого не услышал нормального объяснения почему Borland так сделали, хотя почему то так сделали.
Ведь компания Borland не глупая?
А мне вот интересно почему?
Я думаю что если нельзя найти нормального объяснения зачем вообще умничать?
← →
@!!ex © (2006-07-27 15:55) [26]>>Если нету формы зачем "для красоты" кнопки?
И XPMAN?
Формы нету. Зато есть WinAPI Window. и WinAPI Button. И т.д...
>>Еще ни от кого не услышал нормального объяснения почему Borland так сделали, хотя почему то так сделали.
Ведь компания Borland не глупая?
А мне вот интересно почему?
Я думаю что если нельзя найти нормального объяснения зачем вообще умничать?
Нормального объяснения чему? Что не сделали анализатора, который убирает ненужные юниты? Да как определить то, нужные юниты или нет?
← →
Сергей М. © (2006-07-27 16:02) [27]
> как определить то, нужные юниты или нет?
Примерно так же просто, как столь же просто определить, является ли некий код вредоносным или не является (вирус или не вирус ?)
← →
@!!ex © (2006-07-27 16:05) [28]Сергей М. ©
Практически халява.... И почему еще никто не сделал?.....
← →
Stanislav © (2006-07-27 16:07) [29]@!!ex © (27.07.06 15:55) [26]
Я говорю уже не за USES, хотя можно это анализировать по желанию.
В итоге получается EXE-шник, в котором часть кода никогда не заработает, т.к. нет на него никаких ссылок, зачем он тогда вообще нужен.
← →
Сергей М. © (2006-07-27 16:08) [30]
> @!!ex © (27.07.06 16:05) [28]
> Практически халява
Не позорься.
← →
Stanislav © (2006-07-27 16:08) [31]Игорь Шевченко © (27.07.06 14:59) [24]
Спасибо!
Все таки есть такая программа.
← →
@!!ex © (2006-07-27 16:09) [32]Stanislav ©
А ктож его знает, есть ссылки или нет?
Не забывай, что к функциям можно обращаться по адресу памяти.
← →
Сергей М. © (2006-07-27 16:10) [33]
> В итоге получается EXE-шник, в котором часть кода никогда
> не заработает
А другая часть обязана сработать. Например, код в секции initialization. Поскольку он имеет место там быть.
И что прикажешь компилятору делать в этом случае ?
← →
@!!ex © (2006-07-27 16:10) [34]Сергей М. © (27.07.06 16:08) [30]
Не позорься.
Мне уже не страшно.
← →
Stanislav © (2006-07-27 16:18) [35]Сергей М. © (27.07.06 16:10) [33]
Initialization эта секция в еxe-файле выполняется самая первая если по логике программы она коданибудь выполнится значит выполнится, а если никогда, значит она там не нужна, и не стоит ее включать в EXE.
← →
Сергей М. © (2006-07-27 16:23) [36]
> Initialization эта секция в еxe-файле
Чавой-то ?
В каком-таком еще "еxe-файле" ?
Речь идет о Делфи-проекте и юнитах, которые могу содержать, амогут и не содержать секции initialization/finalization.
← →
Stanislav © (2006-07-27 16:27) [37]Сергей М. © (27.07.06 16:23) [36]
см Stanislav © (27.07.06 16:07) [29]
← →
Сергей М. © (2006-07-27 16:30) [38]
> Stanislav © (27.07.06 16:27) [37]
Ну и почему ты считаешь, что Делфи обязана исключить из процесса компиляции юнит, фигурирующий в USES и имеющий заведомо непустую секцию initialization или finalization ?
← →
Stanislav © (2006-07-27 16:36) [39]Я не считаю, где я написал что его нужно исключить?
← →
Сергей М. © (2006-07-27 16:43) [40]
> где я написал что его нужно исключить?
В [7], например.
← →
Stanislav © (2006-07-27 16:52) [41]Сергей М. © (27.07.06 16:43) [40]
???
Я по этому поводу уже писал. см [29]
Можно элементарно спрашивать "нужен ли вам модуль, в котором есть Initialization ".
Сейчас разговор идет о exe.
← →
Сергей М. © (2006-07-27 16:56) [42]
> Stanislav © (27.07.06 16:52) [41]
> Можно элементарно спрашивать "нужен ли вам модуль, в котором
> есть Initialization ".
Можно много еще чего спрашивать.
То что не спрошено самим Борландом, то ты можешь сам спросить - на то в IDE предусмотрена поддержка экспертов.
> разговор идет о exe
В ЕХЕ нет никаких секций initialization.
То что компилятор счел необходимым включить в результирующий код, то и будет присутствовать в ЕХЕ.
← →
Ketmar © (2006-07-27 16:59) [43]вот инетерсно-то... особенно интересно (насчёт выкидывания кода), как определить, какие именно виртуальные методы выкинуть. и как быть, например, с кодоизвратами в VCL в таком случае?
я уж молчу о том, что выкидывание виртуальных методов напрочь несовместимо с пакетами...
← →
Сергей М. © (2006-07-27 16:59) [44]
> Stanislav
Странно, что тебя не удивляет обязательное присутствие в ЕХЕ кода модуля System - в ран-тайм используется далеко не все, что имеется в этом юните.
← →
Stanislav © (2006-07-27 17:00) [45]Сергей М. © (27.07.06 16:56) [42]
>>В ЕХЕ нет никаких секций initialization.
А я тебе прочто. Ты же сам спросил про то что было в 7 посте, вот я и ответил, а сейчас речь идет о EXE и вопрос такой:
в EXE-шник включается часть кода, которая по логике программы никогда не выполнится, зачем ее туда включать, и там уже без разницы Initialization, finalization и т.д.
← →
Сергей М. © (2006-07-27 17:09) [46]
> Stanislav © (27.07.06 17:00) [45]
> в EXE-шник включается часть кода, которая по логике программы
> никогда не выполнится
Ошибаешься.
Есть некий юнит, указанный в USES, в котором описан/реализован некий класс
В этом юните есть секция инициализации, в которой этот класс регистрируется.
При этом ни в одном другом юните того же проекта нет ни малейших намеков на обращение к этому классу.
Результат - код юнита в минимально необходимом объеме будет фигурировать в результирующем исп.модуле.
← →
Сергей М. © (2006-07-27 17:17) [47]
> Stanislav
Тьфу ты, строго наоборот - не ошибаешься, это действительно так.
Пример ситуации я привел.
← →
TUser © (2006-07-27 18:01) [48]Нельзя этого делать, подключенные модули могут что-то делать "неявно" - в секциях initialization и finalization. Если просто удалить модули из которы ничего не вызывается - будут глюки.
← →
atruhin © (2006-07-27 19:20) [49]> Stanislav ©
Вот тебе пример из реального проекта.
Модуль
.....
initialization
RegisterClass(TfrmObjectEditor);
end.
На класс TfrmObjectEditor в программе нет ни одной ссылки, но из БД считывается название редактора для данного класса и вызывается:
var
FormClass : TPersistentClass;
WinClass : TfrmAbstractChild;
begin
Result := nil;
FormClass := GetClass(ClassName);
if Assigned(FormClass) then begin
WinClass := TfrmAbstractChild(FormClass.NewInstance);
(WinClass as ICreateObject).Init(ObjID, ParentID, TypeID, self);
WinClass.Create(self);
Result := (WinClass as ICreateObject);
end;
Если компилятор удалит этот модуль на который нет ссылок, что будет?
← →
@!!ex © (2006-07-27 19:24) [50]>>Я не считаю, где я написал что его нужно исключить?
А если юнит такую секцию имеет, то его уже практически невозможно проанализировать.
А практически все большие юниты, которые как раз и занимают место имеют initialization или finalization.
← →
Игорь Шевченко © (2006-07-27 22:12) [51]TUser © (27.07.06 18:01) [48]
> Нельзя этого делать, подключенные модули могут что-то делать
> "неявно" - в секциях initialization и finalization. Если
> просто удалить модули из которы ничего не вызывается - будут
> глюки.
Не должно быть глюков, если только логикой программы не предусмотрено, что должна быть выполнена некая инициализация, но такие неявные программы надо выбрасывать сразу.
atruhin © (27.07.06 19:20) [49]
> Если компилятор удалит этот модуль на который нет ссылок,
> что будет?
Такие модули надо в dpr указывать в секции uses.
Сергей М. © (27.07.06 16:56) [42]
> В ЕХЕ нет никаких секций initialization
Строго говоря, все секции инциализации в порядке использования модулей, заносятся в таблицу, которую обрабатывает код из SysInit.pas и System.pas, но отдельной секции конечно нету.
← →
Stanislav © (2006-07-28 10:06) [52]Сергей М. © (27.07.06 17:17) [47]
А я про что. Что в exe войдет целый класс. Но с классом понятно что если что-то из класса используется, то тянется весь класс, а если я ничего не использую, просто забыл убрать из uses модуль, то в exe войдут все классы которые имеются в этом модуле.
← →
Stanislav © (2006-07-28 10:10) [53]atruhin © (27.07.06 19:20) [49]
@!!ex © (27.07.06 19:24) [50]
Что вы приципились к initialization ?
Я не говорю что из uses нужно удалять модули,
А говорю что ненужны в EXE части кода к которым по логике программы никогда не будет обращения. Если в initialization есть код, то в exe к нему будет обращение, а если его нет, то его нет.
← →
@!!ex © (2006-07-28 10:12) [54]Хм... Еще раз.
Как определить, что код не используеться?
← →
Игорь Шевченко © (2006-07-28 10:21) [55]
> Как определить, что код не используеться?
Путем синтаксического и семантического анализа, чем, собстна, программа, приведенная по ссылке и занимается.
← →
@!!ex © (2006-07-28 10:30) [56]Хм.. А если я обращаюсь к куску кода по адресу памяти? и если адрес выясняеться динамическ в процессе работы программы.
ИМХО не реально проанализировать.
Правда такие случаи редки, но все же имееют место.
P.S>
Автор, если прога все хорошо делает, что мы тут обсуждаем то?
← →
tButton © (2006-07-28 10:38) [57]
> что мы тут обсуждаем то?
чудесное избавление от лишних килобайтов веса.
← →
Плохиш © (2006-07-28 10:47) [58]
> Stanislav © (28.07.06 10:10) [53]
> Я не говорю что из uses нужно удалять модули,
Я плякал. Сабж Пушкин за тебя написал?
> А говорю что ненужны в EXE части кода к которым по логике
> программы никогда не будет обращения
Ты бы хоть книжку какую про делфи почитал. Во всех вроде как описывается работа компилятора делфи и что он(компилятор) делает с неиспользуемым кодом. А то на ум приходит одно определение для таких как ты :-(
← →
@!!ex © (2006-07-28 10:59) [59]>>чудесное избавление от лишних килобайтов веса.
← →
tButton © (2006-07-28 11:16) [60]
> >>чудесное
"wonders never cease" (c) =)
← →
Stanislav © (2006-07-28 11:28) [61]Плохиш © (28.07.06 10:47) [58]
Нужно внимательно читать ветку. с очисткой Uses помог Игорь Шевченко еще в самом начале.
← →
Плохиш © (2006-07-28 11:32) [62]
> Stanislav © (28.07.06 11:28) [61]
Тут про таких как вы Юрий Зотов вчера ветку в "Прочее" заводил.
← →
@!!ex © (2006-07-28 11:36) [63]>>Нужно внимательно читать ветку. с очисткой Uses помог Игорь Шевченко еще в самом начале.
Раз программа есть.
Все равботает.
Чего мы тут весь день обсуждаем?
← →
Stanislav © (2006-07-28 12:20) [64]>Плохиш
А вот по поводу книги уже интересно, не читал, нет такой книги у меня, а что там написано?
@!!ex © (28.07.06 11:36) [63]
А обсуждаем, то, зачем прибегать к помощи других программ, когда это все можно реализовать силами компилятора.
← →
Ketmar © (2006-07-28 13:22) [65]>Stanislav © (28.07.06 12:20) [64]
??? силами компилятора???
всё, что позволено -- компилятор делает. см. smartlinking. если глубже -- появятся side effects, которые надо будет описывать и учитывать. и этих side effects и так есть...
← →
Anatoly Podgoretsky © (2006-07-28 16:53) [66]Stanislav © (28.07.06 10:06) [52]
А я про что. Что в exe войдет целый класс. Но с классом понятно что если что-то из класса используется, то тянется весь класс, а если я ничего не использую, просто забыл убрать из uses модуль, то в exe войдут все классы которые имеются в этом модуле.
Не говори глупостей.
И ответ на ранее заданый вопрос про XPManifest
Initialisation нет, кода нет, ответь на каком основании его надо оставлять или добавлять. Если удалишь программа будет выглядеть иначе, но кода в модуле нет, классов нет, ничего нет.
← →
Плохиш © (2006-07-28 17:08) [67]
> Stanislav © (28.07.06 12:20) [64]
> >Плохиш
> А вот по поводу книги уже интересно, не читал, нет такой
> книги у меня, а что там написано?
Книжки входят в комплект поставки D7 и там много чего написано.
← →
TUser © (2006-07-28 17:22) [68]
> TUser © (27.07.06 18:01) [48]
>
>
> > Нельзя этого делать, подключенные модули могут что-то
> делать
> > "неявно" - в секциях initialization и finalization. Если
>
> > просто удалить модули из которы ничего не вызывается -
> будут
> > глюки.
>
>
> Не должно быть глюков, если только логикой программы не
> предусмотрено, что должна быть выполнена некая инициализация,
> но такие неявные программы надо выбрасывать сразу.
initialization/finalization - плохой стиль программирования?
← →
Ketmar © (2006-07-28 18:05) [69]>TUser © (28.07.06 17:22) [68]
код в этих секциях -- плохой стиль. за некоторым исключением. %-)
← →
GrayFace © (2006-07-30 06:41) [70]Плохиш © (28.07.06 17:08) [67]
Книжки входят в комплект поставки D7 и там много чего написано.
Такие комплекты поставки очень большая редкость. Основная модель комплекта поставки - это пиратский CD, в ней книжек нету. :)
← →
TUser © (2006-07-30 15:17) [71]> код в этих секциях -- плохой стиль. за некоторым исключением.
Борланд - ламер - использует
← →
Anatoly Podgoretsky © (2006-07-30 15:37) [72]Борланд решает свои задачи, мы же для него ничего не значим.
← →
TUser © (2006-07-30 16:28) [73]Там, кажется, на Delphi/OP писать умеют.
← →
GrayFace © (2006-07-31 01:52) [74]TUser © (30.07.06 15:17) [71]
> код в этих секциях -- плохой стиль. за некоторым исключением.
Борланд - ламер - использует
Разбиение на модули действительно ламерское. Например, в Forms присутствует uses Controls, а в Controls в implementation uses Forms. И вместо initialization надо было инициализировать по требованию в большинстве случаев.
← →
Германн © (2006-07-31 02:09) [75]
> Разбиение на модули действительно ламерское. Например, в
> Forms присутствует uses Controls, а в Controls в implementation
> uses Forms. И вместо initialization надо было инициализировать
> по требованию в большинстве случаев.
"Делай как мы, делай с нами, делай лучше нас!" Весьма популярная была ГДР-овская ТВ-передача в эпоху моей юности.
Ну так - вперёд! Сделай лучше!
← →
Stanislav © (2006-07-31 14:43) [76]Все равно не соглашусь! сделано не продумано.
Из-за того чтобы работали какие-то программы типа XP манифест, большинство программ содержат в себе более 50% лишнего кода.
Могли бы придумать какой-нибудь способ.
Интересно а C++ такие же проблемы?
А в Delphi по .NET ?
← →
@!!ex © (2006-07-31 15:00) [77]>>Интересно а C++ такие же проблемы?
В С++ заголовочный файл(.H) не являеться модулем для подключение, он просто указывает на те данные, которые лежат в .CPP
Это упрощенно.
← →
Германн © (2006-07-31 15:28) [78]
> Из-за того чтобы работали какие-то программы типа XP манифест,
> большинство программ содержат в себе более 50% лишнего
> кода.
Есть тому доказательства?
← →
Stanislav © (2006-07-31 15:39) [79]Германн © (31.07.06 15:28) [78]
В смысле ?
← →
Игорь Шевченко © (2006-07-31 15:41) [80]GrayFace © (31.07.06 01:52) [74]
> Разбиение на модули действительно ламерское. Например, в
> Forms присутствует uses Controls, а в Controls в implementation
> uses Forms.
Это плохо по твоему мнению ? Чем именно ?
> И вместо initialization надо было инициализировать по требованию
> в большинстве случаев.
Видишь ли, дорогой друг, тот, кто использует в uses эти юниты, обычно гарантировано требует их функциональности, обеспечиваемой секцией initialization в том числе. Не используй - и будет тебе счастье. Даром. И никто не уйдет обиженный.
← →
Германн © (2006-07-31 15:47) [81]
> Stanislav © (31.07.06 15:39) [79]
>
> Германн © (31.07.06 15:28) [78]
>
> В смысле ?
>
В смысле
> большинство программ содержат в себе более 50% лишнего кода.
пока что голословное утверждение!
← →
Stanislav © (2006-07-31 15:55) [82]Ну, если бы вы внимательно прочитали ветку, то вы бы нашли ответы на свой вопрос.
Элементарно. Существует модуль, в котором 10 классов, а мне нужен 1, но в exe пойдут все 10 классов из них 9 не нужных.
← →
Игорь Шевченко © (2006-07-31 15:58) [83]
> Существует модуль, в котором 10 классов, а мне нужен 1,
> но в exe пойдут все 10 классов из них 9 не нужных.
пример в студию
← →
Stanislav © (2006-07-31 16:19) [84]Игорь Шевченко © (31.07.06 15:58) [83]
Чтобы далеко не ходить, стандартный модуль ADODB, мне нужен ADOCommand, а подтягивается класс TADODataSet, TADOQuery, TADOTable, понятно что это не более 50%, но в проект включается не только этот модуль.
← →
Игорь Шевченко © (2006-07-31 16:25) [85]
> стандартный модуль ADODB, мне нужен ADOCommand, а подтягивается
> класс TADODataSet, TADOQuery, TADOTable
Чем определяешь, что подтягивается ?
← →
Плохиш © (2006-07-31 16:25) [86]
> Stanislav © (31.07.06 16:19) [84]
Германн уже про голословное утверждение сказал.
← →
Stanislav © (2006-07-31 16:33) [87]Плохиш © (31.07.06 16:25) [86]
Игорь Шевченко © (31.07.06 16:25) [85]
СМ. 7
← →
Игорь Шевченко © (2006-07-31 16:37) [88]Stanislav © (31.07.06 16:33) [87]
Ты же называешь конкретные классы в [84]. У меня вопрос - чем ты определяешь, что при использовании класса ADOCommand, подтягивается класс TADODataSet, TADOQuery, TADOTable
?
Способ из [7] не дает конкретных имен, не так ли ?
← →
Плохиш © (2006-07-31 16:44) [89]
> Stanislav © (31.07.06 16:33) [87]
> Плохиш © (31.07.06 16:25) [86]
> Игорь Шевченко © (31.07.06 16:25) [85]
>
> СМ. 7
На чушь написаную в [7] вроде ответы были даны?
Я ещё больше скажу, моя версия делфи даже неиспользуемые методы выкидывает, во как :-) Правда она лицензионная, это фича наверное лицензии.
← →
Stanislav © (2006-08-01 13:51) [90]Действительно не подтягивается! :-)
Отсюда следует что если модуль с 10 классами вкючен в uses, но ниодин класс не используется, то содержимое модуля в exe не попадет?
А если попадает, то где-то происходит вызов одного из методов класса?
Тогда приношу свои извинения!
← →
Игорь Шевченко © (2006-08-01 13:53) [91]
> Отсюда следует что если модуль с 10 классами вкючен в uses,
> но ниодин класс не используется, то содержимое модуля в
> exe не попадет?
> А если попадает, то где-то происходит вызов одного из методов
> класса?
Именно так.
← →
GrayFace © (2006-08-02 03:33) [92]Игорь Шевченко © (31.07.06 15:41) [80]
> Разбиение на модули действительно ламерское. Например, в
> Forms присутствует uses Controls, а в Controls в implementation
> uses Forms.
Это плохо по твоему мнению ? Чем именно ?
Это плохой стиль. Чем именно - например тем, что чайники, коих в Борланде есть, могли бы в initialization модуля Classes вызвать что-то из Forms, требущее инициализации. Впрочем, ничего военного на ум не приходит, просто не принято.
Игорь Шевченко © (31.07.06 15:41) [80]
> И вместо initialization надо было инициализировать по требованию
> в большинстве случаев.
Видишь ли, дорогой друг, тот, кто использует в uses эти юниты, обычно гарантировано требует их функциональности, обеспечиваемой секцией initialization в том числе. Не используй - и будет тебе счастье. Даром. И никто не уйдет обиженный.
И? Гарантированное выполнение implementation - это, конечно, хорошо, но кто мешает гарантированно инициализировать по требованию? При граматнам :) подходе при включении в uses модуля Controls к размеру программы не добавлялось бы 300kb.
Плохиш © (31.07.06 16:44) [89]
Я ещё больше скажу, моя версия делфи даже неиспользуемые методы выкидывает, во как :-)
Неиспользованные глобальные переменные тоже выкидывает. Но не все неипользованные методы можно выкинуть.
Плохиш © (31.07.06 16:44) [89]
Правда она лицензионная, это фича наверное лицензии.
Шутить изволите?
← →
GrayFace © (2006-08-02 03:39) [93]Хм, "И?" надо было убрать - несколько грубовато получилось.
← →
jack128 © (2006-08-02 08:22) [94]С одной стороны в Борладе чайники
GrayFace © (02.08.06 3:33) [92]
Чем именно - например тем, что чайники, коих в Борланде есть, могли бы в initialization модуля Classes вызвать что-то из Forms, требущее инициализации.
С другой -
GrayFace © (02.08.06 3:33) [92]
но кто мешает гарантированно инициализировать по требованию? При граматнам :) подходе при включении в uses модуля Controls к размеру программы не добавлялось бы 300kb
ты уж определись ;-)
← →
Игорь Шевченко © (2006-08-02 11:20) [95]GrayFace © (02.08.06 03:33) [92]
> Чем именно - например тем, что чайники, коих в Борланде
> есть, могли бы в initialization модуля Classes вызвать что-
> то из Forms, требущее инициализации. Впрочем, ничего военного
> на ум не приходит, просто не принято.
Так раз на ум не приходит, то и наговаривать на Borland не стоит, не так ли ?
А то моська на слона тоже лаяла...
> это, конечно, хорошо, но кто мешает гарантированно инициализировать
> по требованию? При граматнам :) подходе при включении в
> uses модуля Controls к размеру программы не добавлялось
> бы 300kb.
Еще раз - если ты включаешь в uses модуль Controls, значит тебе требуется что-то из него. Это "что-то" должно быть проинициализировано.
← →
GrayFace © (2006-08-08 11:32) [96]Игорь Шевченко © (02.08.06 11:20) [95]
Еще раз - если ты включаешь в uses модуль Controls, значит тебе требуется что-то из него. Это "что-то" должно быть проинициализировано.
Если я захочу использовать в своей консольной программе модуль Dialogs, то это не означает, что должен быть проинициализирован Application, подключен код TCustomForm и всех его родителей и добавлены иконки и курсоры в ресурсы.
← →
Плохиш © (2006-08-08 11:59) [97]
> GrayFace © (08.08.06 11:32) [96]
> Если я захочу использовать в своей консольной программе
> модуль Dialogs, то это не означает, что должен быть проинициализирован
> Application, подключен код TCustomForm и всех его родителей
> и добавлены иконки и курсоры в ресурсы.
Я не понимаю, проблема написать свой компилятор с библиотекой? Вон KOL сделали. А Вы, извините, только скулите, что Вам чё-то не нравиться и все должны броситься всё подстраивать под Ваши требования. Вы, эта, хотя бы приняли участие в финансировании проекта Делфи? Например, купив лицензию или всё ворованой версией пользуетесь?
← →
Игорь Шевченко © (2006-08-08 13:25) [98]GrayFace © (08.08.06 11:32) [96]
> Если я захочу использовать в своей консольной программе
> модуль Dialogs, то это не означает, что должен быть проинициализирован
> Application, подключен код TCustomForm и всех его родителей
> и добавлены иконки и курсоры в ресурсы.
Означает. Так как в этом модуле Forms активно используется. Почитай исходник.
← →
GrayFace © (2006-08-10 10:21) [99]Плохиш © (08.08.06 11:59) [97]
Я доказываю Игорю, что из-за не очень хорошо спроектированных модулей в программу пихается лишний код. Если ты суть дискуссии не понимаешь, то влезасть с глупостями типа "скулишь" не стоит.
Игорь Шевченко © (08.08.06 13:25) [98]
Да, неудачный пример. Вот: TMonitor - зачем ему то, что я перечислял?; функции из SysUtils - многим не нужна инициализация, которая присутствует в модуле и утяжеляет exe на пару десятков кило; битмепки из Buttons.res вообще нужны только TBitBtn, поэтому вместе с ним должны были быть выделены в отдельный модуль.
← →
GrayFace © (2006-08-10 10:23) [100]GrayFace © (10.08.06 10:21) [99]
Если ты
Поправка: Вы.
← →
Плохиш © (2006-08-10 11:40) [101]
> GrayFace © (10.08.06 10:21) [99]
Откройте пост 97, заклейте слово "скулите" и почитайте ещё несколько раз.
Страницы: 1 2 3 вся ветка
Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.73 MB
Время: 0.067 c