D言語

-v1 オプション

求めていたのに気づかなかった。不思議。 -v1 D language version 1これで、構文だけは安心して使えるのかな。

v1.0がリリースされたD言語をいまだに恐れている理由

バグ修正と新機能の追加が同時に行われているから。 便利な機能が増えるのはいいことだと思うけど、新しい予約語出てきてきたり新機能の追加によって既存の機能の考え方が改められることなどありそうで……ないのか。 そういうときは古いコンパイラを使い続け…

phobosの地位的なもの

ひさしぶりにD言語スレを見ていると、Threadクラスがよくないという話やphobosは作り直したほうがいいという意見が出ていて、わたしもそれには同意なんですけど、phobosってD言語の言語部分?でも使われているからはずせないんですよね、たぶん。個人的には…

type aware GC

D1.001がリリースされたこと知ってChangeLogを見に行くと、『New type aware GC』と書かれていました。 個人的には一番欲しかった機能がついにKITAっぽいです。得た情報からの個人的な解釈では、 GCは型情報をチェックするようになった アロケート(new)時に…

type aware GC (2)

void[]でアロケートしたメモリ以外は明示的にdeleteしなくても大丈夫 いや、違いました。 void[]以外は誤った参照をしない(アドレス以外をアドレスとはしない) か。 プログラム内に大きなvoidがあり、アドレスとして解釈される可能性のあるデータが書き込…

D言語やる

また悪い移り気が……

D言語悩む

Ver0.159あたりから以前のコードがコンパイルできないほどの仕様変更が頻繁に起こったD言語も昨日ついに1.00となり、今後はコンパイルできないほどの仕様変更は2.xxbに入ることになる。 そう信じたい。 そうすると、自分のコードを同じ言語に移植するハメに…

べーた

というか、βだから本気で使うべきじゃなかったんだよなと。 これからが本番です。だいぶ前に出ていたD言語の本とかどうなるんでしょうかとか。

DMD 1.00がリリースされていました

俺は実際に出るまで信じないよー、と思っていたら出ていました。 DMD 1.00 - here it is! - D Programming Language Discussion What's New for D 1.00D Runtime Library ←DLミラーがある(本家が重い……) (dmd.1.00.zip, MD5:d237f95ed2c576438e0252b890e83…

Hoven a0.14

Hovenの最新バージョンとソースコードをリリースしました。 http://www.rootshell.be/~kienzan/hoven/ saku.exe(GUIなし)版の起動に対応 (ログウィンドウは無し) リンクがレス番号によってできないバグの修正(テーマ) カスタムタブ廃止 ソースは、GUIのク…

D1.0

1.0 getting close!きました?

また文字コード

// Java String s = "ねこ"; // D char[] s = "ねこ"; で、 s.length は、Javaなら「2」で、Dなら「6」なので、それを意識せずにトランスレートしていると、やはり問題多いです。 たとえば、Converter.substringのあとに、Converter.StrToTCHARsを呼び出すよ…

マルチバイト文字

FontData#setName TextLayout#さまざま にマルチバイト文字関係のバグがあってArrayBoundsErrorなど。 StyledTextのStyleRangeも範囲にマルチバイト文字があると適用範囲が狭かったり、文字数によってUtfExceptionが出たりする。微妙に直そうとしてたんだけど、…

OLEのイベントリスナーが動いた

まだ、完成していないということだったけど、待ちきれないので自分で修正した。とりあえず、OLEのイベントリスナーが正常に動くようになって、ThinBrowserでコメントアウトされていたTitleChangeイベントでShellのタイトルを随時変更する例を実行することが…

dwt-win32-0.36-20060421でOLEのExampleが動かない件

dwt/packages/dwt/examples/ole_com配下のサンプルが、dwt-win32-0.36-20060228.rarだと動くが、dwt-win32-0.36-20060421.rarだとolecontrolsite.d内でのエラーで動かない。 variantの変更?と思ってしまうが、実はコンパイル時に最適化オプションをつけてい…

配列の結合 =~

ちょっと気になったので、はっきりさせておきたいこと。 import std.stdio; int main() { Object[] array; for (int i = 0; i < 10; ++i) { if (i % 2) { array ~= new Object[2]; } else { array ~= null; } } writef("%s\n", array.length); return 0; }こ…

Tableのスクロールが重い件 (3)

結局、グラフィック(GCクラス)を使ってプログレスバーを描画することにした。TableEditorは、セルの位置にコントロールを描画しているだけで、スクロールするたびに移動させなければならならず、この処理がかなり重いので、もうどうせ棒グラフ書きたいだけだ…

Comboクラスで表示できない文字がある

Textクラス、CComboクラスでは問題ないが、Comboクラスでは、「ポエム」と入力すると、最後の「ム」が消える(入力できない)。マルチバイト文字が欠ける感じ?DWTのバグくさいけど、とりあえず、Comoboの代わりにCComboを使うことにする。 ただ、CComboはXPス…

Tableのスクロールが重い件

Tableでレコード件数が1000を超えると、スクロールが重すぎる。なんだこれは・・。 セルにProgressBarを埋め込んでいるので、さらに重い。 これはもうどうしようもない感じ・・、Canvasで自分でグラフを描画すれば少しは軽いかもと考えて、とりあえずCanvasに置…

sqlite3_prepareの引数と動作の相違(?)

ものすっごい、いまさらだけど、ポエニーで使っているDの自作SQLiteクラスのsqlite3_prepareのラッパーがやばい感じにバグってることが発覚した。 たまにでるアクセス違反やSQLのエラーはこいつが原因かも・・。 原因は、sqlite3_prepareが(俺が思っている)仕…

Tableのスクロールが重い件 (2)

解決。ControlEditorとTableEditorをコピペで改造。 内容は、各クラスごとでコントロールにListenerを設定するのをやめて、代表で1つだけ設定するようにして、かつリサイズ、スクロールのイベント発生時にTableのクライアントエリアを取得して、表示中のセ…

Tableクラス 覚え書

チラつかないように更新する方法。 1. setRedraw(false) 2. 更新 3. setRedraw(true)BeginUpdate/EndUpdateと同じ感じでOK。 setRedraw(false); scope(exit) setReadaw(true); ....update proc.... なんてしてもいいかも。 セル上にコントロールを表示する T…

TableクラスsetHeaderVisibleの動作条件

はまったメモ。TableクラスのsetHeaderVisible(bool )は、コンパイル時に「 -L/SUBSYSTEM:windows:5 」オプションを指定しないと、正常に動作しない(trueにしても、テーブルのヘッダが表示されない)。その他(setLinesVisible(bool)など)は、正常に動作する。…

XPスタイルのコントロールを表示する

packages/dwt/examples/controlexample/controlexample.exe.manifest DWTに付属のcontrolexampleでは、このファイルによりXPスタイルを実現している。 見た目だけの話なら、このファイルを「実行ファイル.exe.manifest」と名前を変えて、実行ファイルと同じ…

DWTでMozillaコントロール

どうも、ポエニーで使う予定のIEのブラウザコントロールが気に入らなかったので、Mozilla ActiveX ProjectのコントロールをDWTから試してみた。で、まぁ結果的にはダメです。ダメな理由。 パッケージがでかい(4MB) 英語 プラグインを入れないとフラッシュや…

Poseidon Editor for D v0.21

「パッケージエクスプローラ」や「アウトライン」などIDEっぽいインターフェイスを備えているエディタ。 ビルドも可能だが、デバッガはない。 GUIがDWT(SWTのD言語移植版)で作られているので、eclipseっぽいきれいなインターフェース。 シンプルな設定でわか…

synchronized

synchronizedって、同じスレッドならネストできたのか・・。 nested mutex。ソースコードを見るとWindowsの場合は、EnterCriticalSection/LeaveCriticalSectionによる実装でした。ネストできないと思い込んでいた・・・。

連想配列 orz

orz・・・一番頻発しているWin32Exceptionは、internal/aaA.dの512行目 assert(0)がhltなので飛ぶ。 なぜか壊れる連想配列。keyはulong。値渡し。 orz・・・。poenyの*nix移植版をvinelinuxで動かしたい! 1という話もあるのですが、とりあえずはWindows上でしっか…

例外セーフ

話題のDMD0.149へ移行してみた。 ポエニーをコンパイルすると、コンパイルエラーデター!!と思ったら、毎回のごとく、『sc.ini』を上書きしてしまっていた。 コンパイルできました。注目の機能は、暗黙的なテンプレートのインスタンス化なんだけど、個人的には例外セー…

cannot pause

ポエニーを起動していると、1度だけスレッド例外で"cannot pause"というのが出たので、ちょっとstd.threadを見てみたのですが、 // class std.thread.Thread void pause() { if (state != TS.RUNNING || SuspendThread(hdl) == 0xFFFFFFFF) error("cannot pa…