LPCWSTR

解決


おっちゃん  2009-12-23 09:34:53  No: 36524

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

WinXp  +  Delphi7です。


aaa  2009-12-23 11:20:34  No: 36525

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


おっちゃん  2009-12-23 18:35:09  No: 36526

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 18:41:28  No: 36527

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


おっちゃん  2009-12-23 19:17:30  No: 36528

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加