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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2010, 15:13   #21
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
экспорт интерфейсов и только com-безопасные типы в параметрах методов
Ах, да, и safecall-методы, иначе объект (Exception) и без твоего желания перейдет границу exe-dll. И как это GunSmoker меня не поправил?
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 15:34   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это как, is-ом, что-ли?
Именно им.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 15:36   #23
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Именно им.
Ну попробуй. А потом, когда ничего не получится, вернись на предыдущую страницу и почитай мое сообщение #16, чтобы понять из-за чего
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 16:13   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ins
Хорошо. Встречный вопрос "Мне пришел из ДЛЛ некий наследник TObject. Чем мне узнать что это за класс?"

И кстати, Я вообще-то не оч. понимаю зачем понадобилось с GetClass связываться.
По-моему проще сделать что-то вроде:
Код:
  function LetO(type_:string):TObject;
  begin
   if type_='sl' then begin
    Result:=TObject(TStringList.Create);
   end;
  end;
И работать с ней
Код:
begin
  b:=TStringList(LetO('sl',self));
  b.Add('adad');
  ListBox1.Items.AddStrings(b);
end;
Все равно автору ДЛЛки известны какое классы он использует, или я не прав?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 16:15   #25
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Ins Посмотреть сообщение
И как это GunSmoker меня не поправил?
Как-то не дочитал ещё, да...
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2010, 16:19   #26
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
"Мне пришел из ДЛЛ некий наследник TObject. Чем мне узнать что это за класс?"
Есть мнение, что это будет наследник некого TMyBaseObjectForDLL и узнавать конкретный тип просто не нужно - мы создаём экземпляр класса и используем его. А всё остальное обеспечивается виртуальными методами класса.

Вон там у автора поста был пример с формой (что-то я сейчас подумал: будет ли это работать, ведь форме нужен DFM, который сидит в DLL, а не в exe, откуда мы создаём экземпляр). Видимо, DLL у него - что-то вроде плагина.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2010, 16:20   #27
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Чем мне узнать что это за класс?
Никак, потому что не нужно передавать объекты из DLL, вроде я об этом тоже написал.

Цитата:
По-моему проще сделать что-то вроде:
Значит понятия "абстрактная фабрика", "фабричный метод" для тебя новые... Не проще. Полиморфизм служит как раз для того, чтобы избавиться от условной логики, в данном случае речь идет о полиморфном инстанцировании.
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 16:32   #28
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Значит понятия "абстрактная фабрика", "фабричный метод" для тебя новые
Новые. Я свои задачи решаю успешно и без таких глубин. А когда имею дело с ДЛЛ предпочитаю четко описать как я показал все что хочу.
Цитата:
для того, чтобы избавиться от условной логики
Меня она не напрягает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 16:36   #29
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Меня она не напрягает.
Я заметил. До того, чтобы она стала напрягать, нужно cозреть. Тогда длинные case-ы и блоки if-ов легким движением руки превращяются в виртуальные методы, а оператор "is" практически вообще выходит из арсенала из-за ненадобности А смысл? А смысл в том, что программист должен быть ленивым (это относится только к работе руками, а не головой), и писать минимум кода при максимуме надежности и эффективности

Последний раз редактировалось Ins; 12.08.2010 в 16:39.
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 17:10   #30
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

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

Однако, для полного просветления осталось выяснить ещё один тонкий момент (тем более, что он не противоречит теме поста).

Если скомпилировать проект с галочкой Compile with Runtime Package и в строке со списком пакетов оставить только vcl и rtl, после чего посмотреть сводную информацию по проекту (Project->Information for ...), то в колонке Packages отобразятся только эти два пакета. Оно и понятно - что указали, то и подключили. Но если оставлять все пакеты, которые установлены в IDE могут появляться ошибки (напр. у меня установлены JEDI-компоненты и при компиляции выскакиваю ошибки, типа "не найден пакет такой-то" или "пакет такой-то не является run-time-пакетом"). Поэтому я открываю сводную статистику по проекту и смотрю какие вызовы у меня происходят без пакетов. Потом всякими правдами и неправдами выясняю в каких пакетах находятся эти вызовы и дописываю их в список подключаемых пакетов.

Естественно, возникает желание как-то это автоматизировать. Может быть кто-нибудь знает как получить список пакетов необходимых для компилируемого приложения?

К примеру, выставляем какую-нибудь галочку в опциях компилятора, и при компиляции/сборке/линковке в момент когда кусок кода встраивается в итоговый экзешник система записывает куда-нибудь в файл имя пакета из которого этот кусок кода взят. Получается файл, похожий на результат работы TDUMP.EXE.
Greek9000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Runtime runtime = Runtime.getRuntime(); Pti44ka Общие вопросы по Java, Java SE, Kotlin 1 22.11.2009 10:45
без запроса Package? koleko Общие вопросы Delphi 2 18.02.2009 22:59
RunTime Error713 (VB) vio Помощь студентам 2 12.12.2008 20:45
Unit 'MyLib' implicitly imported into package 'MyPackage'. как исправить? SkAndrew Компоненты Delphi 0 06.04.2008 00:28
Runtime programming JoanM Общие вопросы Delphi 4 09.01.2008 11:00