![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возврат DCOM сервером строки
jim © (2002-07-11 14:50:00)Пожалуйста помогите!
Надо вернуть приложению-клиенту строку от приложения-DCOM-сервера.
С возвратом числа все Ok.
Не знаю, что не так ...
Есть DCOM сервер со следующей функцией:
function TrdmControlWork.GetUserName: WideString;
begin
Result:='user';
end;
На клиенте:
procedure TfmControlWork.SpeedButton1Click(Sender: TObject);
var s : WideString;
begin
s:=dmControlWork.dcomconWork.AppServer.GetUserName;
end;
При вызове процедуры на клиенте получаю ошибку:
"The server threw an exception".
Если на сервере Result:='', то на клиенте ошибка:'Invalid callee'
Если вместо WideString использую Variant, то на клиенте
возвращатся ''(пусто).
А. Н. Оним (2002-07-29 17:34:00) [1]Старайся не возвращать как результат метода параметр, отличный от типа HResult со значением кода успешности выполнения вызова, иначе у таких сред как Visual Basic получишь большие проблемы. Visual Basic ожидает от твоего сервера при вызове функции значения S_OK, иначе посчитает вызов проваленным и вылетит с ошибкой.
Чтобы метод вернул строку опиши его, например так
HRESULT CallMe ([out] BSTR* Value);
Код реализации может быть такой:
function Server.CallMe (out String: WideString)
begin
Value := 'hello world!';
end;