Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

uses необходимое


Константин ©   (2007-12-14 11:07:00) 

Есть большое многомодульное приложение.
Есть ли какая-нить приблуда, которая может показать какие модули можно убрать из Uses в interface  и перенести их в implementation или вообще удалить. Также она должна показать, что в implementation такой-то модуль скажем не нужен.


Игорь Шевченко   (2007-12-17 13:20:00) [1]

Anatoly Podgoretsky ©   (17.12.07 12:41) [17]

Нет конечно. Он рассказывает, какие по его мнению модули надо из interface перенести в implementation, а какие удалить вообще. Но любое удаление остается на совести человека. Вообще достаточно разумный инструмент в смысле определения лишних объявлений в uses.


Anatoly Podgoretsky   (2007-12-17 12:41:00) [2]


> на http://www.peganza.comискать Icarus - довольно неплохо
> работает

Надеюсь он не автоматом удаляет?


Игорь Шевченко   (2007-12-17 11:28:00) [3]

на http://www.peganza.comискать Icarus - довольно неплохо работает


Anatoly Podgoretsky   (2007-12-14 15:31:00) [4]

> @!!ex  (14.12.2007 15:26:14)  [14]

Что бы понятнее, вот пример

unit1
const
 abc = 1;

unit2
const
 abc = 17;

unit3
 Var = abc;

Что хочет пользователь?
Вот он и должен явно указать, тогда можно определить нужный модуль.
А вот с ресурсными DLL невозможно и XPMan это доказал.


@!!ex   (2007-12-14 15:26:00) [5]

> [13] Anatoly Podgoretsky ©   (14.12.07 15:04)

Я в курсе, что последовательность юнитов имеет значение, и что идентификатор берется из последнего определенного модуля в uses, я тоже в курсе. И что обращаться можно как Windows.TBitMap или Graphics.TBitMap, тоже не вопрос.
Вопрос в том, как анализировать чего хочет юзер?


Anatoly Podgoretsky   (2007-12-14 15:04:00) [6]

> @!!ex  (14.12.2007 14:48:11)  [11]

А в этом случае наличие модуля не является признаком работоспособности.

Попробуй

uses
 Windows,
 Graphics

и

uses
 Graphics,
 Windows,

Ты путаешь мух с котлетами, и видимо не умеешь работать с каноническими именами.


guav   (2007-12-14 14:54:00) [7]

ICARUS


> Возникновение такого кода говорит о непорядке при программирвоании
> на языке паскаль...

Настоящий беспорядок можно сделать сишными хидерами, с паскалевскими модулями как раз полный порядок.


@!!ex   (2007-12-14 14:48:00) [8]

> [10] Anatoly Podgoretsky ©   (14.12.07 14:43)

Я к тому, что и не определишь, какой unit нужен, а какой нет.
Разве что писать анализатор практически идеентичный Дельфевому.


Anatoly Podgoretsky   (2007-12-14 14:43:00) [9]

> @!!ex  (14.12.2007 14:36:09)  [9]

Это нормально, обычное пространство имен, полиморфизм на уровне модулей.


@!!ex   (2007-12-14 14:36:00) [10]

> [8] Anatoly Podgoretsky ©   (14.12.07 12:13)

Ладно еще XMan...
А если какой то класс описан в двух модулях с разными реализациями, но ондим именем.(Так, например сделан TBitMap. Он есть в Windows и в Graphics. Правда там общего только имя, поэтому такое быстро ловится, а если нет?)


Anatoly Podgoretsky   (2007-12-14 12:13:00) [11]

> Константин  (14.12.2007 12:07:07)  [7]

Многие ты сразу поймешь, превратив в комментарий и попробов переместить в другую секцию. Или автоматом добавит или обругает.
А вот по некоторым нет, и не добавит и не обругает, но это не означает нужен модуль или нет.
Наглядный пример XPMan - на него нет никаких ссылок в коде, тоже и по другим ресурсным ДЛЛ


Константин   (2007-12-14 12:07:00) [12]

Если так, то тогда все сделаю аккуратно руками, т.к. главное это понимать что куда надо перенести и почему. Только тогда есть вероятность правильно работы программы.


Anatoly Podgoretsky   (2007-12-14 11:44:00) [13]

> Константин  (14.12.2007 11:42:05)  [5]

Руками как раз удается, а вот автоматом нет, и часто об этом узнаешь поздно.


Константин   (2007-12-14 11:42:00) [14]

Впринципе задача не самая простая, особенно если ее решать руками. Возникновение такого кода говорит о непорядке при программирвоании на языке паскаль...


Семен Сурков   (2007-12-14 11:32:00) [15]

Теоретически ничего в таком функционале сложного нет. Есть же в D2007 rename refactoring, есть find refenrece. Работает в подавляющем большинстве случаев правильно. На этом функционале вполне можно построить требуемое. Может и появится такое, как элемент группы refactoring.


Anatoly Podgoretsky   (2007-12-14 11:26:00) [16]

> Семен Сурков  (14.12.2007 11:22:02)  [2]

Таких нет, есть кривенькие.


Семен Сурков   (2007-12-14 11:22:00) [17]

Есть такая. Игорь Шевченко советовал когда-то в форумен. Но название убей не помню.

Смотрел ее. Кривенько, но в целом работает.


Anatoly Podgoretsky   (2007-12-14 11:11:00) [18]

> Константин  (14.12.2007 11:07:00)  [0]

Руки, поскольку технической возможности сделать это одназначно нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо