-
Помогите пожалуста разобраться с такой проблемой: Имеется 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
-
Попробуй так:
> Key := '{0732C2D0-D50E-4917-9E93-9BF604FDAA90}';
-
К сожалению ничего не изменилось
-
а если используя это? 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;
-
Спасибо огромное все заработало!
|