2012-06-07 2 views
-1

Кто-нибудь знает, как создать и запустить DSServerClass во время выполнения?Создать DSServerClass в Runtime?

Все нормально, если я создаю его до запуска DSServer (во время выполнения), класс, найденный на стороне клиента. Но если я создам его после запуска DSServer, клиент не найдет этот класс.

Должен ли я создавать более 100 DSServerClasses вручную во время разработки для каждой таблицы и других DSServerClasses для каждой таблицы соединений?

Любое предложение будет оценено. Спасибо.

ответ

2

Andreano Lanusse имеет два сообщения в блоге о создании DataSnap DSServerClass во время выполнения. Может быть, информация там может вам помочь.

http://www.andreanolanusse.com/en/registering-datasnap-server-class-in-runtime-with-delphi/

http://www.andreanolanusse.com/en/publishing-providers-when-registering-datasnap-server-class-in-runtime/

+0

Он по-прежнему не исправляет мою проблему. Моим модулем является TBasicDBSrvModule, унаследованный от TDSServerModule. Серверный класс - это TSimpleServerClass, как предлагается, кнопка для регистрации этого TSimpleServerclass, с TBasicDBSrvModule в качестве параметра постоянного класса. В режиме отладки я обнаружил, что метод TSimpleServerClass.GetDSClass никогда не вызывался. здесь что-то не так? – theodorusap

+0

Что-то я узнал из этого предлагаемого сайта, посмотрите на эту строку в классах регистров: Assert (AServer.Started = false, 'Can''t добавить класс к неактивному серверу); Когда я отлаживаю эту строку, я обнаружил, что новый серверный класс никогда не будет добавляться при запуске сервера. Это означает, что при запуске сервера вы не сможете добавить новый серверный класс. следующая строка будет выполнена, если сервер не запущен. утверждают (условие, alertMsg) если условие ложно, alerMsg появится и следующая строка не будет выполнена Aserver.started = ложь; -> TRUE, если сервер остановлен, неверно, если сервер начал – theodorusap

+0

@theodorusap: Правильно. Если сервер запущен, вы не можете добавить или изменить метод serverclass. Вы должны перезапустить сервер для клиентов, чтобы иметь возможность видеть новые методы serverclass. – Erwin

0

первый способ отправить параметр для имени таблицы, как этот

procedure ActiveRecord(const TableName:string;Id:Integer); 
begin 
    // do something 
end; 

другим способом create TDSServerClass in runtime.

+1

Что это значит? – theodorusap