|
|
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Необходимо из VBA вызвать функцию DLL (Delphi) и вернуть переменную типа String Имею Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Имею код иници.- й вызов Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Проблема !! Переменная 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; Или Ваш вариант решение изначальной задачи Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 21:52 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
HOME_X, Использовать WideString вместо String? Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:54 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
rashid.abzalov, Испробую, но если нужно вернуть НЕСКОЛЬКО показателей ? function GetStr(A: WideString; С: PChar; D: PChar): WideString; stdcall; C и D возвращаются в основное тело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:26 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
HOME_X, Строки в VBA ansi, что соотвестует PAnsiChar - нужно использовать данный тип, вместо PChar. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 12:08 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
HOME_X, Нужно также использовать AnsiString вместо String. Это работает для unicode версий делфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 12:11 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
ziv-2014, не совсем понял - как динамически изменить длину массива т.е PChar или PAnsiChar или при использовании PAnsiChar возможно использовать ByRef Public Declare Sub GetStr Lib "Example.dll" (ByVal A As String, ByRef B As String) уточните пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 12:46 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
HOME_X, Использование ByRef чем-то ограниченно? Напиши функцию возврата длинны строки, как делается в виндовом api. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 13:25 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
HOME_X, Тебе нужно знать, как память выделяется в String в vba. Если используется глобальный менеджер памяти, то GlobalRealloc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 13:32 |
|
||
|
DLL для VBA - возврат большого String
|
|||
|---|---|---|---|
|
#18+
ziv-2014, Задача решена Delphi ( var S: OleVariant ) begin P:='Big Hello'; S:=OleVariant(P); end VBA declare F1 ................( ByRef V as Variant) Dim V as Variant,S as String V=Null F1(..V...) S=P Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39868350&tid=2039002]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 538ms |

| 0 / 0 |
