非ユニコード Delphi アプリケーションから GetStringTypeW を呼び出そうとしていますが、何をしても ERROR_INVALID_FLAGS が返されます。使用中のその関数のコード サンプルも見つかりませんでした。
windows.pas で提供されているものは、3 番目のパラメーターをブール値 (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 であることを確認しました。
何が間違っているのか、またはこの関数を使用するためのコードサンプルを知っている人はいますか?