|
|
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
всем привет! в проекте, который мигрируется с Д7 на Д10.4.2 используются скрипты, написанные на VBScript. в Д7 использовался Dream Scripter, но на новую версию приходится руками внедрять ActiveScript (т.к. проапгрейдить Dream Scripter нереально) все бы ничего, но возникла проблема, суть которой мне пока не удается уловить. вот такой вот код скрипта отрабатывается без каких-либо проблем: ------------------- MsgBox TestCommand("какой-то текст") ------------------- в данном случае под именем TestCommand зарегистрирован внешний (для скрипта) дельфовый объект, реализующий IDispatch и являющийся оберткой над обычной функцией в тот момент, когда движок скрипта вызывает Invoke для IDispatch этого объекта (с именем TestCommand), в Params все просто - количество аргументов равно 1, по ссылке на первый по счету аргумент идут данные для значения типа bstr. то есть все как бы в порядке. но, если в этот вызов передать не константное значение, а значение переменной, например вот так: ------------------ Dim TestParam TestParam = "какой-то текст" MsgBox TestCommand(TestParam) ------------------ то тогда при вызове Invoke количество аргументов по-прежнем равно 1, но вот по ссылке на первый аргумент приходит какой-то левый мусор (с мусорным же VarType'ом и т.д.), соответственно получить значение такого параметра совсем не выходит. дальше, если переменную TestParam сделать не переменной, а константой типа такого: ------------------------ Const TestParam = "какой-то текст" MsgBox TestCommand(TestParam) -------------------------- то опять-таки все начинает нормально работать. вобщем логика подсказывает конечно, что движок как-то по-другому наверное упаковывает параметры в случае когда в них передаешь переменные. но беда в том, что сама по себе эта мысль не особо подсказывает куда дальше копать :-/ буду благодарен за любой раздуплинг по данной теме, куда копать, что смотреть и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 13:57 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
Yoda с мусорным же VarType'ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:13 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
как-то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:25 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
$400C = varByRef or varVariant Где мусор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:28 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
блин, только сейчас дошло. скорее всего это комбинация VT_ARRAY and VT_BYREF так что надо теперь попробовать разобрать соответствующие поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:30 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, сори, меня смутило то, как это значение интерпретировал дельфовый TValue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:31 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
Из того, что я вижу Код: pascal 1. 2. 3. 4. 5. 6. 7. вот так будет все работать само Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:37 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
мм, я сделал вот так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. копирование через _VarCopy в каком случае имеет смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 14:50 |
|
||
|
проблема с параметрами в IDispatch.Invoke при использовании ActiveScript/VBScript
|
|||
|---|---|---|---|
|
#18+
Yoda мм, я сделал вот так: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=25&tid=2037565]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 388ms |

| 0 / 0 |
