Раньше, пишучи на DELPHI сильно не задумывался
над вод какой штукой. Напрмер
int GetWindowText(
HWND hWnd, // handle to window or control
LPTSTR lpString, // text buffer
int nMaxCount // maximum number of characters to copy
);
на месте LPSTR вставлял переменную buf(массив 0..255 из char) и все.
Или createService второй параметр-PCHARовская переменная. И все работает.
Т.е другими словами при юзанье APIшек вставлял туда просто переменные нужных типов\структур и все.
Но тут случайно у меня возник следующий вопрос:
MSDN пишет для строк как правило следующее
По сути дела POINTER это указатель(тобиш адрес) на мой взгляд. Адрес переменной,
начальный адрес процедуры и т.д. В CreateThreadЕ его ясно почему надо юзать(@function).
Но судя из написанного в MSDNе, я должен @ку ставить перед каждой переменной PCHAR в API.
В ASMе это понятно(везде ADDR либо Offset), а вот в DELPHI не сильно.
Разъясните плиз когда в дельфе нужна @ка а когда нет при строковых параметрах.
Или это особенность компилятора что сам адрес привязывает к переменной если надо.
Надеюсь вы меня поняли :bang:
над вод какой штукой. Напрмер
int GetWindowText(
HWND hWnd, // handle to window or control
LPTSTR lpString, // text buffer
int nMaxCount // maximum number of characters to copy
);
на месте LPSTR вставлял переменную buf(массив 0..255 из char) и все.
Или createService второй параметр-PCHARовская переменная. И все работает.
Т.е другими словами при юзанье APIшек вставлял туда просто переменные нужных типов\структур и все.
Но тут случайно у меня возник следующий вопрос:
MSDN пишет для строк как правило следующее
Код:
Pointer to a null-terminated string that specifies the name of the service to install.
По сути дела POINTER это указатель(тобиш адрес) на мой взгляд. Адрес переменной,
начальный адрес процедуры и т.д. В CreateThreadЕ его ясно почему надо юзать(@function).
Но судя из написанного в MSDNе, я должен @ку ставить перед каждой переменной PCHAR в API.
В ASMе это понятно(везде ADDR либо Offset), а вот в DELPHI не сильно.
Разъясните плиз когда в дельфе нужна @ка а когда нет при строковых параметрах.
Или это особенность компилятора что сам адрес привязывает к переменной если надо.
Надеюсь вы меня поняли :bang: