2009-11-03 2 views
3

Я использую DataSnap из Delphi 2010. Утилита DSProxyGen.EXE позволяет нам создавать клиентский модуль прокси. Кто-нибудь, как использовать эту утилиту в командной строке для создания прокси-клиента без использования контекстного меню TSQLConnection?Как вручную вызывать DSProxyGEN.EXE для создания прокси-клиента Delphi DataSnap?

ответ

3

DSProxyGen не дает его параметры при запуске в командной строке и не реагирует на

DSProxyGen /? 

Вы можете попробовать заменить его свой ех (сделать резервную копию!), Который определяет, какую команду параметры линии отправляются (глобальная переменная CmdLine) и записывают их в файл. Запустите это из контекстного меню TSQLConnection, и вы должны иметь то, что вам нужно, чтобы вызвать DSProxyGen из командной строки.

Update:

От Delphi XE до XE7, исходный код для DSProxyGen включен в качестве одного из образцов

Samples\Delphi\DataSnap\ProxyGenerator 

В Delphi X Е8, он поставляется как часть исходного кода.

source\data\datasnap\proxygen 
+0

Ваши решения звучат, но я не могу заставить его работать. Вот что я сделал: 1. Переименовать DSProxyGen.exe в DSProxyGen.exe.old в папку «C: \ Program Files (x86) \ Embarcadero \ RAD Studio \ 7.0 \ bin" 2.Затем я пытаюсь сгенерировать прокси-клиентский класс из контекстного меню TSQLConnection и все еще способен генерировать блок. Кажется, что IDE не вызывала DSProxyGen.exe –

+0

Интересно. Я не уверен, что еще попробовать. –

+0

Вы попробовали сами? –

0

Смотрите блок DSProxyDesigner.dcu (для которого исходный файл не включен, но должен быть в базе данных \ внешних \ SRC \ па \ DataSnap \ прокси \ DSProxyDesigner.pas). Это единица, используемая во время разработки для создания классов прокси-клиента. Я не уверен, что DSProxyGen.exe фактически используется, и стыдно, что в его параметрах командной строки нет документации ...

+0

В Delphi XE, он все тот же (нет документации, нет исходного кода)? – mjn

+0

Запустите Delphi XE's DSProxyGen.exe без параметров для использования справки по параметрам командной строки –

2

DSProxyGen.exe без аргументов подключается через порт 211 TCP/IP и использует первый аргумент командной строки в качестве имени файла.

DSProxyGen test.pas

будет генерировать test.pas

Я не нашел никакого способа указать параметры ConnectionString в командной строке, но ...

+0

+1 для истинного отношения хакеров – jachguate

+0

Кажется, он был добавлен в Delphi XE :-), см. Мой ответ. –

2

Это возможно с DSProxyGen.exe из Delphi XE, а затем, например:

DSProxyGen.exe Proxy.pas 
-C:host=localhost;port=8080;communicationprotocol=http 

Run DSProxyGen.exe без параметров для США ge help. (?/Или/ч и т.д. не работает)

Я заметил, что источник также включен в Delphi XE7:

C:\Program Files (x86)\Embarcadero\Studio\15.0\source\data\datasnap\proxygen\DSProxyGen.dproj 

Обратите внимание, что это не будет работать, если вы указали любые транспортные фильтры (т.е. ZLibCompression, PC1, RSA и т. д.), возвращая ошибки, например, «TDBXError: фильтр ZLibCompression не найден».

Временное решение, которое я использовал во время разработки, - это добавить еще один TDSTCPServerTransport, который не имеет транспортных фильтров, а затем DSProxyGen отлично работает.

Смежные вопросы