Конференция "Corba" » Работа с PSafeArray [Delphi, Windows]
 
  • Neoptolem © (19.10.07 15:45) [0]
    Помогите пожалуста разобраться с такой проблемой:
    Имеется COM-библиотека (в виде dll) с функцией Encrypt. После импорта библиотеки типов в Delphi и создания соответсвующего TLB файла имеем следующее определение:
    function Encrypt(var data: PSafeArray; guid: PChar): PChar;
    первый параметр функции это данные которые надо зашифровать,
    второй параметр это ключ шифрования.
    Пытаюсь выполнить следующий код:
    var
     V: Variant;
     S: WideString;
     Key: PChar;
    begin
     Key := '468F71DC64D7458A884A386285C04F20';
     S := 'ШИФРУЕМЫЙ ТЕКСТ';
     V := VarArrayCreate([0, 0], varVariant);
     V[0] := S;
     ShowMessage(V[0]);
     // Casper - это обьект создаваемый из COM-библиотеки
     ShowMessage(Casper.Encrypt(PSafeArray(TVarData(V).VArray), Key));
     ShowMessage(V[0]);

    Проблема в том что функция ничего не изменяет (шифруемый текст), хотя и возвращает результат 'OK'
    Данная библиотека точно работает (проверяли на C#)
    Подскажите в чем моя ошибка и как ее исправить. Я подозреваю, что не совсем корректно работаю с типом PSafeArray
  • Rouse_ © (19.10.07 16:01) [1]
    Попробуй так:

    > Key := '{0732C2D0-D50E-4917-9E93-9BF604FDAA90}';
  • Neoptolem © (19.10.07 16:22) [2]
    К сожалению ничего не изменилось
  • Slym © (22.10.07 04:51) [3]
    а если используя это?
    function VarArrayFromStr(const Str:string):variant;
    var p:Pointer;
    begin
     result:=VarArrayCreate([0,length(Str)-1], varByte);
     P := VarArrayLock(result);
     try
       Move(PChar(Str)^,P^,length(Str));
     finally
       VarArrayUnlock(result);
     end;
    end;

  • Neoptolem © (22.10.07 10:19) [4]
    Спасибо огромное все заработало!
 
Конференция "Corba" » Работа с PSafeArray [Delphi, Windows]
Есть новые Нет новых   [120357   +35][b:0][p:0.001]