- Сообщения
- 3,999
- Репутация
- 967
Я собственно опять с вопросом по структурам
Вроде всё ясно, но на поверку спотыкаюсь.
Понимаю, что выражение:
в Cи означает указатель на массив, состоящий и знаков строки помещённой в него.
Понятно, что в Autoit это должно выглядеть так:
Но код ниже мне непонятен:
Так я пытаюсь решить поставленную пред собой задачу:
Далее подставляем в DllCall
Но Autoit (в обеих вариантах) вылетает с ошибкой :(
Пробовал переводить строки в BSTR результат тот же.
Буду рад любой информации.
Добавлено:
Да, совсем забыл! Если параметр $p_Options выставить в NULL то функция нормально отрабатывает (берутся параметры по умолчанию)
Вроде всё ясно, но на поверку спотыкаюсь.
Понимаю, что выражение:
Код:
const char *options[]
Понятно, что в Autoit это должно выглядеть так:
Код:
DllStructCreate( 'char['StringLen("длина строки")'];)
Но код ниже мне непонятен:
Код:
const char *options[] = {
"document_root", "/var/www",
"listening_ports", "8080",
NULL
};
Так я пытаюсь решить поставленную пред собой задачу:
Код:
; ============================================================
; Перевожу в формат Autoit
; ============================================================
; Вариант 1
$s_String = '"document_root", "./var/www", "listening_ports", "8080", 0'
$p_Options = DllStructCreate( 'char['& StringLen($s_String) &'];')
DllStructSetData($pOptions, 1, $s_String)
; Вариант 2
$s_DocRoot = '"document_root", "./var/www"'
$s_ListRort = '"listening_ports", "8080"'
$s_Null = '0'
$p_Options = DllStructCreate('char['& StringLen($s_DocRoot) &'];' _
&'char['& StringLen($s_ListRort) &'];' _
&'char['& StringLen($s_Null) &'];' )
DllStructSetData($pOptions, 1, $s_String)
DllStructSetData($pOptions, 2, $s_ListRort)
DllStructSetData($pOptions, 3, $s_Null)
Далее подставляем в DllCall
Код:
DllCall($h_Dll, 'int', 'sv_init', 'ptr', DllStructGetPtr($p_Options))
Но Autoit (в обеих вариантах) вылетает с ошибкой :(
Пробовал переводить строки в BSTR результат тот же.
Буду рад любой информации.
Добавлено:
Сообщение автоматически объединено:
Да, совсем забыл! Если параметр $p_Options выставить в NULL то функция нормально отрабатывает (берутся параметры по умолчанию)
Код:
DllCall($h_Dll, 'int', 'sv_init', 'ptr', DllStructGetPtr(0))