喫茶XRAYトップページ

[▲前のスレッド]

[9901] 無題返信 削除
2016/5/11 (水) 16:37:13 ss
お世話になります。

Mr.Xray様

サンプルプログラム集の475_パフォーマンスカウンタで CPU 使用率
の03_コア別の CPU 使用率に興味があり、コンパイルしてみました。
98行目と147行目の部分でエラーとなりました。

98行目  if  PdhOpenQuery(nil, 0, Query) <> ERROR_SUCCESS then exit;
147行目   Status := PdhAddCounter(Query, PChar(CounterPath), 0, h);


[DCC エラー] Unit1.pas(98): E2033 変数実パラメータと変数仮パラメータと
       は同一の型でなければなりません
なぜでしょうか?

 環境は、Windows10 Pro
     DelphiXE2 Proです。

 環境の問題でしょうか?

よろしくお願いします。

[9902] Re: 無題返信 削除
2016/5/11 (水) 17:46:50 Mr.XRAY
▼ ssさん,どうもです.
当サイトのサンプルに興味を持っていただき,ありがとうございます.

> サンプルプログラム集の475_パフォーマンスカウンタで CPU 使用率
> の03_コア別の CPU 使用率に興味があり、コンパイルしてみました。
> 98行目と147行目の部分でエラーとなりました。


えっと,できればリンク等あると嬉しいです.探す手間が省けるので...
上の方の,ページ内の目次をクリックすると,以下のアドレスがブラウザの
URL 欄に表示されます.これをコピーします.
http://mrxray.on.coocan.jp/Delphi/plSamples/475_CpuUsageRate.htm#03

(お前のサイトだろう,そんなのすぐわかるだろう !! ハイ,スミマセンです)

> [DCC エラー] Unit1.pas(98): E2033 変数実パラメータと変数仮パラメータと
>        は同一の型でなければなりません
> なぜでしょうか?


エラーが発生して,動作しない時はですね.何故と考える前に,
まず,あきらめることです.
人生には,時にはあきらめる,という決断も必要なのです.
山の場合は「勇気ある撤退」といいます (笑)

と,冗談はさておき,ちょっと待ってくださいませ.
と,えっ !? Windows 10.う〜む,Windows 10 ですか....


[9903] Windows API の引数の型返信 削除
2016/5/11 (水) 17:58:37 Mr.XRAY
> と,えっ !? Windows 10.う〜む,Windows 10 ですか....

Windows 10 には Delphi 7 以前の Delphiは入っているんですが,
セットが面倒なので,とりあえず,以下を確認していただけますか ?
下の図の,PdhOpenQuery 関数の引数とその型です.

Windows のバージョンによって,引数の型が違っていることがあります.
マイクロソフトの「普通」にあることですが... (^^
あるいは,jwaPdh.pas のバージョンの違いかも知れませんが,
とりあえず確認してみてください.


[9904] Re:Windows API の引数の型返信 削除
2016/5/11 (水) 18:05:17 Mr.XRAY
> 下の図の,PdhOpenQuery 関数の引数とその型です.

図の様な引数の表示の仕方が不明な場合は,以下を参考にしてください.

http://mrxray.on.coocan.jp/Delphi/Others/A_IDETechnique.htm#06


[9905] Re:Windows API の引数の型返信 削除
2016/5/11 (水) 18:42:23 Mr.XRAY
> Windows のバージョンによって,引数の型が違っていることがあります.
> マイクロソフトの「普通」にあることですが... (^^
> あるいは,jwaPdh.pas のバージョンの違いかも知れませんが,


失礼 ! Delphi のバージョンによって違うこともありますね (^^;


[9906] Re:Windows API の引数の型返信 削除
2016/5/11 (水) 18:43:35 福士
ssさん、Mr.XRAYさん、こんにちは。

手元にあったVer2.3のJwaPdh.pasでは

function PdhOpenQuery(szDataSource: LPCTSTR; dwUserData: DWORD_PTR;
  var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;

という定義でしたので、おそらくファイルローカル変数Queryの定義を
  Query    : Cardinal = 0;
ではなく
  Query: HQUERY = 0;
とすればよいのではないかと。

> > と,えっ !? Windows 10.う〜む,Windows 10 ですか....
OSの違いでコンパイルエラーになることは考えにくいです…。

[9907] Re2:Windows API の引数の型返信 削除
2016/5/11 (水) 19:01:52 Mr.XRAY
▼ 福士さん

> > > と,えっ !? Windows 10.う〜む,Windows 10 ですか....
> OSの違いでコンパイルエラーになることは考えにくいです…。


ハハハッ.確かに.


[9908] Re2:Windows API の引数の型返信 削除
2016/5/11 (水) 19:12:19 Mr.XRAY
▼ 福士さん

> 手元にあったVer2.3のJwaPdh.pasでは
>
> function PdhOpenQuery(szDataSource: LPCTSTR; dwUserData: DWORD_PTR;
>   var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
>
> という定義でしたので、おそらくファイルローカル変数Queryの定義を


そうか,サンプルを作成する時に,[Cttl] + [Shift] + [Space] で表示された
引数の型をそのまま使ってしまったからですね.
反省 !!
HQUERY にしておけば間違いないですね.
勉強になりました m(_ _)m


[9910] Re3:Windows API の引数の型返信 削除
2016/5/11 (水) 21:46:06 ss
 ▼ 福士さん
 ▼ Mr.XRAYさん
   ありがとうございました。
  確かに、以下を変更すると大丈夫でした。
  Query: HQUERY = 0;
  h    : HQUERY;

>
> > 手元にあったVer2.3のJwaPdh.pasでは
> >
> > function PdhOpenQuery(szDataSource: LPCTSTR; dwUserData: DWORD_PTR;
> >   var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
> >
> > という定義でしたので、おそらくファイルローカル変数Queryの定義を
>
> そうか,サンプルを作成する時に,[Cttl] + [Shift] + [Space] で表示された
> 引数の型をそのまま使ってしまったからですね.
> 反省 !!
> HQUERY にしておけば間違いないですね.
> 勉強になりました m(_ _)m


[9911] エラーが発生した変数を知る返信 削除
2016/5/12 (木) 08:25:26 Mr.XRAY
> 98行目  if  PdhOpenQuery(nil, 0, Query) <> ERROR_SUCCESS then exit;
> 147行目   Status := PdhAddCounter(Query, PChar(CounterPath), 0, h);
>
>
> [DCC エラー] Unit1.pas(98): E2033 変数実パラメータと変数仮パラメータと
>        は同一の型でなければなりません


このようなエラーが発生した場合,下図の最初の図のようになります.
この時,実際にエラーが発生した変数を知るには,
[ESC] キー,→ または ← を押します.
すると,その変数のところにキャレットが表示されます.
すると,○○の変数でエラーという言い方ができます.
参考までに.


[9913] Re:エラーが発生した変数を知る返信 削除
2016/5/12 (木) 19:43:27 Nov
▼ Mr.XRAYさん
> [ESC] キー,→ または ← を押します.

へぇー×10。知らなかったです!

[9914] Re2:エラーが発生した変数を知る返信 削除
2016/5/12 (木) 20:42:34 Mr.XRAY
▼ Novさん

> へぇー×10。知らなかったです!

Nov さんのような方がいてよかった.書いてよかった (涙).
今回は引数の数が少ないので,すぐ分かりますが,
多い時に,「どいつなんだよー」という時に役に立つと思います.


[9912] 関数宣言表示機能のDelphiによる違い返信 削除
2016/5/12 (木) 08:29:15 Mr.XRAY
> そうか,サンプルを作成する時に,[Cttl] + [Shift] + [Space] で表示された
> 引数の型をそのまま使ってしまったからですね.
> 反省 !!
> HQUERY にしておけば間違いないですね.
> 勉強になりました m(_ _)m


参考までに.こんな感じです.
型が定義されているなら,それを使用した方がいいということですね.

えっ !? 「私はいつもそうしている」ですか.本当ですか ? (^^;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82