WMI Win32_Processorが使えない
最近Windows7→10にした一台でアップデートしたとたんWin32_Processorが使えなくなってた
LoadPercentageがずっとnullになる感じ
他のWin10マシンでは問題ないので原因はよくわかんない
アップデート後にCPUの使用ログを見たらずっと0%のままなので何事かと思ったら・・・
とりあえずWin32_PerfFormattedData_PerfOS_Processorは使えるようなので
PercentProcessorTimeで置き換えるようにしてみた
タスクマネージャのCPU使用率と数ポイント誤差があるけどまぁええやろ
var locater = WScript.CreateObject("WbemScripting.SWbemLocator"); var service = locater.ConnectServer(); function get_cpu(service) { var xs = new Enumerator(service.ExecQuery("Select * From Win32_Processor")); for(; !xs.atEnd(); xs.moveNext()) { if(xs.item().LoadPercentage == null) {break;} return(xs.item().LoadPercentage); } xs = new Enumerator(service.ExecQuery("Select * From Win32_PerfFormattedData_PerfOS_Processor Where Name = '_Total'")); for(; !xs.atEnd(); xs.moveNext()) { return(xs.item().PercentProcessorTime); } return(""); }
全くもう、ようわからん
昨日今日とちゃんと動いたので良しとしよう
配列が書けた
配列が使えるようになった
、、、と言っても要素足したりはまだ、おいおいやっとく
要素なしの空配列の型解決が超むずそうだったので未対応
nullを対応する時に一緒に対応を考えよう
クラス構文を用意してないけど.NET Frameworkのメソッドは普通に呼べそう
レシーバを第一引数にした関数呼び出しにすればいい
実際「sub [](Array(String), Int) String」を「List(Of String) get_Item(Integer) As String」にマップできている
callvirtとかは後で考える
コンストラクタがないのでどー折り合いつけよっかなぁ
そういえば、.NETでGenericsの判定方法がさっぱり分からない
あるobjが「List(Of )」のインスタンスやってどうやって判定したらいいのかさっぱり・・・
今は「obj.GetType.Name.Equal("List`1")」って型名みて済ませたけど、うーん
おまけにキャストもまともにできないのでリフレクションで中身を取り出している
やだなー
複数ファイルからのコンパイル
複数ファイルからのコンパイルができた
ファイルを1つのNamespaceにする感じ
今んとこuseすると相手Namespaceの関数だけを取り込むような動きをする
エントリーポイントになるNamespaceしか実行しないから
use先のファイルに単に「print(1)」と書いたら動かない、つか単純に動かれても困るしどうしたものか・・・
とりあえずほっておこう
useすると勝手にファイルを読みに行く
ちゃんとパーサがリエントラントになってるみたい、結構えらいな
しかしパーサジェネレータがVS2005が出たころに書いたものなので、とにかくソースがきちゃない
error終端記号やyyerrorに相当するものに対応してないって問題以外は特に困ってないけど
パーサジェネレータを書き直したい病が出てきた
そういえば配列とnullを作るのを忘れていた!!
nullはどうしようかなぁ
「var x = null」は型解決できないのでエラーにせざるをえない
「var x: Hoge = null」はそもそも型不一致でエラー
「var x: Hoge? = null」はHoge?型のnullにすればいい
「sub f() Hoge? : return(null)」ならHoge?型のnullにすればいい、つかreturn関数が「sub return(x: Hoge?)」になるからいいのかな?
こういうやつはinferの前に型解決できそう
「var x: @T = null」はinferの時にしか型解決できないから
いっそinferでまとめてやっちゃうのがお得かな??