LPCWSTR

解決


おっちゃん  2009-12-23 00:34:53  No: 36524  IP: 192.*.*.*

質問ですが、APIを使用する時、引数に『LPCWSTR』とあった
のですが、Webで探してその引数をPWideCharで宣言したところ
APIを使用した所で、『WideCharとCharは互換性がありません』
とエラーになります。
どのような宣言をすればいいでしょうか?

WinXp  +  Delphi7です。

編集 削除
aaa  2009-12-23 02:20:34  No: 36525  IP: 192.*.*.*

Windows.pasに
LPCWSTR = PWideChar;と書いてあるからあってます。
使い方を間違ってるだけだと。

編集 削除
おっちゃん  2009-12-23 09:35:09  No: 36526  IP: 192.*.*.*

aaaさん早速のご返事ありがとうございます。
使ったAPIは、PdhExpandWildCardPathでパフォマンスカウンタ(PDH.DLL)
関連です。
JEDIのjwapdh JwaPdhMsgをuseしたら発生しました。
jwapdh.PASでの宣言は以下の通りです。
function PdhExpandWildCardPath(szDataSource, szWildCardPath: LPCTSTR;
  mszExpandedPathList: LPTSTR; var pcchPathListLength: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhExpandWildCardPath}
尚、PWideCharをpCharにするとうまくいきましたが理由がわかりません。
理由がわかる方よろしくお願いします。

編集 削除
それは、  2009-12-23 09:41:28  No: 36527  IP: 192.*.*.*

LPCTSTR = PChar
LPCWSTR = PWideChar
そもそもLPCWSTRでないから。

編集 削除
おっちゃん  2009-12-23 10:17:30  No: 36528  IP: 192.*.*.*

成る程、単純なミスでした。
よく確認すればよかったです。
ありがとうございました。

編集 削除