我正在尝试从非 unicode delphi 应用程序调用 GetStringTypeW,无论我做什么,我都会返回 ERROR_INVALID_FLAGS。我也找不到该函数的任何代码示例。
我还必须重新定义函数头,因为 windows.pas 中提供的函数头错误地将第三个参数标识为布尔值(它是一个 INT)
这是我对函数的定义:
function GetStringTypeW(dwInfoType: DWORD; lpSrcStr: PWideChar; cchSrc: Integer; lpCharType: Pointer): BOOL;
(由于某种原因,该函数未定义为 stdcall。尝试将其定义为 stdcall 将导致访问冲突。)
我的电话:
var
aCharType: Array of WORD;
APassword: WideString
begin
{..}
SetLength(aCharType, Length(APassword));
if not GetStringTypeW(CT_CTYPE1, PWideChar(APassword[1]), Length(APassword), @aCharType[0]) then
RaiseLastOSError;
{..}
我得到的错误是
System Error. Code: 1004.
Invalid flags.
我已经验证 CT_CTYPE1 等于 1。
有谁知道可能有什么问题或有使用此功能的代码示例?