Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Build with runtime packages, Проверить в приложении... 
V
    Опции темы
Bose
Дата 5.3.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Подскажите пожалуйста, можно ли как-нибудь в приложении проверить с какими настройками packages оно было скомпилировано: с использованием runtime packages, или без них. 
Заранее спасибо.



PM MAIL WWW Skype   Вверх
_hunter
Дата 5.3.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



лехко: смотриш зависимости, если там есть всякие vcl'ы -- значит с использованием.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 5.3.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Bose, Пакеты это же Dll переменованные в bpl, потому первое, что напрашивается поискать в списке Dll стандарные Bpl ки. Если есть значит компиллировали с ними, но на самом деле их можно ведь подгружать динамически, потому если в тот момент они не загружены, то и не узнать. Но скажем, когда уже создана форма основные VCL ские уже должны быть в памяти.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 5.3.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Все bpl-ки прописаны в таблице импорта smile
Задача сводится к просмотру таблицы импорта на предмет файлов с расширением bpl.
PM MAIL   Вверх
Bose
Дата 5.3.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Спасибо, но я прктически ничего не понял. Что-то Вы меня совсем напугали...  smile

На всякий случай уточню: 
Цитата

 Мне нужно, чтобы моё приложение при запуске определяло, каким образом оно было скомпилитровано.  
Собственно говоря мне нужна постоянная напоминалка на случай если при компиляции я забыл убрать галочку с: Build With Runtime Packages. Может есть какие-то директивы, для проверки(сам я не нашел). Может можно как-то через код проверить. 



Цитата(_hunter @  5.3.2007,  17:37 Найти цитируемый пост)
лехко: смотриш зависимости, если там есть всякие vcl'ы -- значит с использованием.

Как их смотреть, можно поподробнее?

Цитата(Alexeis @  5.3.2007,  17:44 Найти цитируемый пост)
Bose, Пакеты это же Dll переменованные в bpl, потому первое, что напрашивается поискать в списке Dll стандарные Bpl ки. Если есть значит компиллировали с ними.

Как этот список просмотреть? Список Dll - это где? :O

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

А по умолчанию, без "извратов" с подгрузкой их в своём коде, они же будут грузиться при запуске приложения, да?

Цитата(Snowy @  5.3.2007,  18:12 Найти цитируемый пост)
Все bpl-ки прописаны в таблице импорта Задача сводится к просмотру таблицы импорта на предмет файлов с расширением bpl.

 smile  smile  smile 
* нет слов, застыл с отвисшей челюстью *

Спасибо за ответы. В общем, если тривиального и простого решения не существует, то не тратьте своё время. Задача не обязательна для решения.  smile 
PM MAIL WWW Skype   Вверх
Snowy
Дата 5.3.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну... Простое решение - GetPackageInfo.
Если в списке модулей отсутствует System - значит скомпилено с пакетами smile
Просто я думал, что тебе список пакетов нужен, а не сам факт smile
PM MAIL   Вверх
_hunter
Дата 5.3.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(Bose @  5.3.2007,  18:48 Найти цитируемый пост)
Как их смотреть, можно поподробнее?

tdump'ом
но если это для самотестирования нужно -- придется разбирать ехе-шник. описание формата где-то на MSDN'е видел...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Snowy
Дата 5.3.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Да, блин. Если нужно просто определить факт юзанья, то не нужно ничего разбирать.
Всё просто.
Определить, юзает ли программа пакаджи можно так:
Код

procedure PackageInfoProc(const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer);
begin
  if Name = 'System' then PInt(Param)^ := 0;
end;
function ExeUsePackages(FileName: string): boolean;
var
  h: THandle;
  Flag: integer;
begin
  result := false; Flag := 0;
  h := LoadLibrary(PChar(FileName));
  if h = 0 then Exit;
  result := true;
  GetPackageInfo(h, @result, Flag, PackageInfoProc);
  FreeLibrary(h);
end;
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ExeUsePackages(ParamStr(0)) then
    ShowMessage('Да, я юзаю пакаджи!')
  else
    ShowMessage('Нет, пакаджей я не юзаю')
end;
Ахтунг! Применимо только к дельфийским ехе.
PM MAIL   Вверх
Bose
Дата 5.3.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Snowy, - как всегда поразил недюженными знаниями. Спасибо большое. Буду плясать от GetPackageInfo smile Как оказалось, в хелпе есть группа топиков: 
Package support routines

_hunter, спасибо за идею. Но, задача не критичная, и "чем решать её таким трудом, имхо, проще не решать вообще ". Я попробую через процедуры поддержки Packages в Delphi. 

Спасибо за ответы, о результатах отпишусь завтра.  smile 
PM MAIL WWW Skype   Вверх
Bose
Дата 6.3.2007, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Snowy @  5.3.2007,  21:17 Найти цитируемый пост)
Да, блин. Если нужно просто определить факт юзанья, то не нужно ничего разбирать.Всё просто.


Огромное спасибо![+] Сам бы я эту функцию мучал бы намного дольше.  smile

Добавлено @ 00:27 
Проверил, вариант Snowy работает как часы. :-)

PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.