invalid data packet

Автор ptica_oz, 19.07.10, 09:58:07

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ptica_oz

Добрый день, уважаемые.

Пишу модуль на Delphi 2010 используя IPluginCall. При вызове API-функции CurrentUser возникает ошибка "invalid data packet". Функцию вызываю следующим образом:

var
  D : IDataSet;
begin
  ...
  D := PluginCall.GetDataSet('CurrentUser', VarArrayOf([]));


При аналогичном вызове функции GetProjectList, которая так же не имеет входных параметров, всё работает.
Подскажите, вчём ошибка?

Maxxx

Это наверное потому, что метод GetProjectList - возвращает набор данных, а свойство CurrentUser - строку(variant)

ptica_oz

Цитата: Maxxx от 19.07.10, 10:15:51
Это наверное потому, что метод GetProjectList - возвращает набор данных, а свойство CurrentUser - строку(variant)

Варианты, когда я результат функции CurrentUser записываю в переменную типа Variant так же заканчиваются ошибкой.
Подобная ошибка возникала у меня, когда я работала через DCOM, там это личилось правильным указанием типов последних двух параметров. А как быть в этом случае?

Chaa

Попробуйте:
var
  D : String; // Или Variant.
begin
  ...
  D := PluginCall.RunMethod('CurrentUser', VarArrayOf([]));

У меня работает.
Дело в том, что CurrentUser возвращает не датасет, а просто строку с именем пользователя. Если нужно больше информации о пользователе, вызовите GetInfoAboutCurrentUser (уже через GetDataSet).
GetDataSet это обертка для RunMethod вида:
function GetDataSet(AName: String; Params: array of Variant): IDataSet;
begin
    Result := CreateDataSet;
    Result.Data := RunMethod(AName, Params);
end;


ptica_oz

получилось, спасибо.