Доброго дня господа !
Необходимо из VBA вызвать функцию DLL (Delphi) и вернуть переменную типа String
Имею
Library Example;
uses SysUtils;
procedure GetStr(A: PChar; B: PChar); stdcall;
var tmpStr: string;
begin
tmpStr:=A;
tmpStr:=tmpStr + 'Change value';
StrPLCopy(B,tmpStr, Length(tmpStr));
end;
exports
GetStr name 'GetStr';
begin
end
Имею код иници.- й вызов
Public Declare Sub GetStr Lib "Example.dll" (ByVal A As String, ByVal B As String)
---------------------------------------------------------------------------------------------
Public Sub Test_GetStr()
Dim A As String
Dim B As String
A="This is a test..."
B = String(100, vbNullChar) 'reserve size B'
Сall GetStr (A,B)
MsgBox "!" & B & "!"
End Sub
Проблема !!
Переменная B - может быть достаточна велика. а резервировать много памяти не очень хочется
B = String(10000, vbNullChar) 'reserve size B'
Передать PChar по ссылке не имею возможности, декларирование VBA увы не позволяет
Public Declare Sub GetStr Lib "Example.dll" (ByVal A As String,
ByRef B As String)
Подскажите можно ли динамически увеличить размерность PChar
begin
tmpStr:=A;
tmpStr:=tmpStr + 'Change value';
Resize(B,Length(tmpStr)+1) ????????????????
StrPLCopy(B,tmpStr, Length(tmpStr));
end;
Или Ваш вариант решение изначальной задачи
Заранее благодарен !