Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возврат 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;


 


Наверх

Титульная страница Поиск, карта сайта Написать письмо