1 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 01:09:54 ] プログラミング言語 D について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource)
752 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:24:31 ] >748 お節介かもしれないけどCの文字列とDの文字列は全然違うものだよ。
753 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 09:48:47 ] Dでキャスト多用するのって格好悪いですか?
754 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 15:25:53 ] そんなのプログラムによって違う
755 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 23:46:37 ] AllegroがDでできるようになったら使う
756 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:54:47 ] ご自由に
757 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:48:34 ] www.kmonos.net/alang/wnd/topics/flectioned.ja.html > (標準で添付されているphobos.libは-gなしでコンパイルされているため、 > 実はうまくリフレクションが効きません。phobosを-gつきで > コンパイルし直すのが推奨されています。) phobosを-g付きでコンパイルする方法をどなたかまとめてもらえませんか?
758 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 22:53:08 ] makeでDFLAGSに-g指定すりゃ済むだけの話じゃないの?
759 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 23:34:21 ] >>757 以前、俺も少し戸惑ったよ。 その時のメモより… dmd/src/phobos/ にある、 .MAKファイルをテキストエディタで開く。 DMD=\dmd\bin\dmd CC=dmc などとある行の、各コンパイラのパスを、自分の環境に合うよう書き換える。 DFLAGS=-O -release -nofloat -w とある行に、-g を書き加える。 編集が終わったら保存して閉じる。 dmd/src/phobos/minit.obj のファイル更新日時を、 dmd/src/phobos/internal/minit.asm よりも新しくしておく。(アセンブルにはmasmが必要!?) dmd/src/phobos/ をカレントフォルダにしてから、makeを実行 例: make phobos.lib -f win32.mak しばらくすると、カレントフォルダに phobos.lib が作成されるはず。それをlibフォルダへ入れる。 dmd/src/phobos/ に作成された大量のオブジェクトファイルは不要なので削除していい。 だけど minit.obj だけは、今後のmakeの為に残して置く。
760 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 23:42:44 ] thx 後でやってみる
761 名前:759 mailto:sage [2007/04/04(水) 23:44:32 ] 補足 「ファイル更新日時を新しく・・・」は、更新日時を書き換えるツールなどで行います。 これは、アセンブルを回避したいためです。
762 名前:デフォルトの名無しさん [2007/04/05(木) 00:03:53 ] Descent を入れたのですが、他にもコンパイラーを入れる必要があるでしょうか? どうにも、コードのエラーチェックはしてくれるのですが、コンパイルされないし、 そもそも構成及び実行でも、Dらしきものが出てきません。 Eclipse3.2 なのですが、それがまずいのでしょうか?
763 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:07:29 ] >>761 cygwin 入れてるんで touch minit.obj した > dmd/src/phobos/ にある、 .MAKファイルをテキストエディタで開く。 いじった .mak ファイルは2つ dmd\src\phobos\win32.mak dmd\src\phobos\internal\gc\win32.mak さて phobos.lib はできたがちゃんと使えるかな?
764 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:14:18 ] www.kmonos.net/alang/wnd/topics/flectioned.ja.html これのサンプルを実行してみたが >hello Error: ArrayBoundsError hello(10) としか表示されないな・・・再コンパイル前と状況は変わらないようだ 何が悪いのでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 08:12:30 ] D Frameworkってのを落として中身覗いてみたら グリッドついてるしW系APIメインで使われてるし これは使えるのかなと思ったら1年以上更新されてないのね><
766 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 12:16:49 ] チミが続きをやればいいのだよ
767 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 12:18:09 ] リンクplz
768 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 12:54:49 ] >>764 D 1.010で >> Bugzilla 64: Unhandled errors should go to stderr ていう変更が入ったせい。 flectionedはException.printを置き換えて表示を変更してるんだけど、 DMDがException.printじゃなくてException.toStringを使うようになた。
769 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 14:55:08 ] >>768 まだ最新版には対応してなかったのか 残念
770 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 18:56:59 ] >>769 DMDの仕様変更が活発である限り常にそう
771 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 19:04:02 ] main.def(2) : Error 112: SUBSYSTEM Directive SUBSYSTEM CONSOLE,4.0 ^ main.def(2) : Error 52: .DEF Syntax Error SUBSYSTEM CONSOLE,4.0 これは一体何のエラーでしょうか。
772 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 19:43:49 ] >>770 まあね 丁度 flectioned を使おうと思ったタイミングで それが使えなくなるような変更があったなんて 運悪すぎだろ常識的に考えてとかおもて 早く更新されないかなー
773 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:11:41 ] 乗り遅れるの覚悟でバージョン下げればいいじゃくぁwせdrftgyふじこlp;
774 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 17:14:54 ] >>773 DMDの仕様変更が活発である限りそれはやめたほうがいい
775 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 17:16:29 ] void tester(float[2] bad, float[] good) { assert (&good[1] - &good[0] == 1); // ok assert (&bad[1] - &bad[0] == 1); // !!!!!?????? if (bad.ptr == good.ptr) // 静的配列ってポインタ渡しだっけ? { assert (&bad[0] == &good[0]); // ok assert (&bad[1] == &good[1]); // !!!!!?????? } } void main() { float[2] test; tester(test, test); } なぜだ……
776 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 19:27:45 ] 仕様にないことやろうとしてねえ?
777 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 19:29:17 ] >>775 www.kmonos.net/alang/d/abi.html >静的な配列を関数へ渡すと、例え静的な配列として宣言されていても、 >結果は実際には静的配列への参照となります。 ということで、静的配列は参照渡しされますね。
778 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 21:00:40 ] >>775 適当に試してみたけど assertが失敗するのはdmdのバグっぽいから適当に報告するのが吉。
779 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:50:26 ] dflのツリービュー、+-の所しかマウスクリック判定しやがらん。 英語の達者な誰か報告したって。
780 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:00:43 ] >>779 テストめんどいから最小の再現コード張って
781 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 20:48:38 ] private import dfl.all; class MyForm: dfl.form.Form {dfl.treeview.TreeView treeView1; this() { text = "My Form"; clientSize = dfl.drawing.Size(240, 245); treeView1 = new dfl.treeview.TreeView(); treeView1.name = "treeView1"; treeView1.bounds = dfl.base.Rect(0, 0, 232, 228); treeView1.parent = this; TreeNode tn = new TreeNode("hoge"); tn.nodes.add("omg"); treeView1.nodes.add(tn); treeView1.click ~= &testClick; treeView1.doubleClick ~= &testClick; } void testClick(Object sender, EventArgs e) { msgBox("piko-n"); } } int main() { Application.run(new MyForm()); return 0; } 他のダブルクリックとかは何やっても正常。 HitTestですらラベル無視なんだけど、なんでだろう。
782 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 21:00:15 ] ちなみにイメージリスト作ってビットマップ置いて ダブルクリックイベントでHitTestするとすべて正常。 やっぱりクリックだけぽい。
783 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 00:44:28 ] std.c.stdioにfilemode関数があるんですが、 これを呼び出すと Symbol Undefined _filemode と出てリンクができなくなってしまいます。 何かコンパイルオプションをつける、環境変数を指定する等しなければならないことがあるのでしょうか。 それともDMDのバージョンが古い(1.005)のが原因なのでしょうか。
784 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 00:55:00 ] >>783 うちの std.c.stdio にはないけど?(dmd1.010)
785 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 01:05:30 ] >>781 確かに click は + - でしか反応しないけど afterSelect / beforeSelect を使えばいいのでは?
786 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 04:06:04 ] bud を導入して実行してみたらsc.iniが見つからないと言われました。 bud.exe とソースコードをdmd.exeと同じフォルダに入れたら成功したので 環境変数の問題だと思うのですが、どうすればいいのでしょうか。 Error: bud:Unable to find Config File 'sc.ini' in [.\,,C:\Documents and Settings\ユーザ名,C:\作業フォルダ\]
787 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 05:43:48 ] >>784 すいません。間違えました。 filenoでした。 extern(C) int fileno(int); とかやってもだめでした。
788 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 05:48:57 ] fileno()は大抵マクロ 非標準だし
789 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 06:15:47 ] じゃあDで標準入力をバイナリモードで開きたい時はどうすればいいのですか?
790 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 07:36:26 ] さあ。phobosにはそんな概念ないからの。
791 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 12:04:17 ] どうせ構造体の中の変数1つ拾ってるだけだろうから、 そういうインライン関数作っちゃえ。
792 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 14:01:38 ] version(Win32) stdout._flag |= _F_BIN; としても効かんな。なんでだろ
793 名前:783 mailto:sage [2007/04/10(火) 16:03:35 ] とりあえずDMCのstdio.hをのぞいてみると、filenoで参照しているのは構造体の_fileメンバだたt。 といわけでこんなプログラムを書いてみた。 import std.c.stdio; version(Windows) extern(C) int setmode(int, int); char[] readStdIn(ulong size) { char[] buf; char c; version(Windows) { int O_BINARY = 0x8000; setmode(stdin._file, O_BINARY); } while(buf.length < size && (c = getchar) != EOF) buf ~= c; return buf; } void main() { char[] str = readStdIn(500000); FILE* fp = fopen("output.jpg", "wb"); fwrite(str.ptr, str.length, 1, fp); fclose(fp); } test.exe < input.jpg とやってみても壊れたファイルしか出力されませんでした。 テキストを入力して実験した結果、バイナリモードに切り替わっていないようです。 同じようなCのプログラムを書いてみたところ、 BCCならきちんとバイナリモードになっていましたが、DMCはテキストモードのままでした。 どうやらDMCのバグか仕様の予感です。
794 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:12:57 ] Cライブラリの問題な気が
795 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:22:51 ] そもそも標準入出力がテキスト以外を扱うように出来てるかが問題だな。
796 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:44:24 ] つまり解決策無し?
797 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:51:53 ] phobosをコンパイルしなおせばいけるんじゃないか?
798 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 17:02:34 ] >>793 で試したCのプログラムがちゃんと動くようなCライブラリとリンクしてやれば、うまくいきそうな気がするなあ。
799 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:49:11 ] つまりまだニヤニヤする以外の目的で使うなって琴田。
800 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:15:02 ] そうでもないか
801 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 02:34:20 ] import std.cstream, std.c.windows.windows, std.stream; extern (Windows) HANDLE GetStdHandle(DWORD nStdHandle); const STD_INPUT_HANDLE = -10; const STD_OUTPUT_HANDLE = -11; void main() { auto din2 = new File(GetStdHandle(STD_INPUT_HANDLE), FileMode.In); auto dout2 = new File(GetStdHandle(STD_OUTPUT_HANDLE), FileMode.Out); auto buffer = new ubyte[256]; while (true) { auto len = din2.read(buffer); if (len == 0) break; dout2.write(buffer[0..len]); } } こうか?
802 名前:783 mailto:sage [2007/04/11(水) 08:03:20 ] >>801 あ、できた。 つまり標準入力をバイナリモードで得たければOSのAPIを叩けということなんですね。 ありがとうございました。
803 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:20:55 ] D言語はあんまりわからんけどC/C++ @Win32 なら freopen("CON","rb",stdin); でいけるからこれでいいんじゃね?
804 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:43:55 ] D言語っていつのまにやら、Version1.0になってたんだね。 1.0越えたら手を付けてみようと思ってたんで、今後このスレにはお世話になると思います。 よろしくお願い
805 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:45:28 ] 名前だけ 1.0 になったけど、 今までと変わらず仕様変更してます。 どう見ても名前だけです。 本当にありがとうございました。
806 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:53:44 ] 1.010で-v付けても1.0互換じゃなくなっちまったしなw
807 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:02:34 ] >>806 -v1 が1.0互換で、 -v はverboseなんじゃないの?
808 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:07:31 ] 1.*って以上の意味はないんだろうな…
809 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:09:52 ] >>807 すまんそのとおり
810 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:04:09 ] >>803 標準入力とCONでは意味が違う。 リダイレクトやパイプ越しのケースがあるからな。 Cランタイムライブラリに依存せず標準入力から読み出したければ GetStdHandle(STD_INPUT_HANDLE)でハンドル取ってきて ReadFile() これでいい。
811 名前:デフォルトの名無しさん [2007/04/12(木) 07:44:57 ] D言語関連の和書って、まだなにもないんだっけ?
812 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 07:48:56 ] ググったらパーフェクトガイドとかってのがでてきたけど、古い上に売れ切れてるし。
813 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:01:35 ] >>812 むっちゃ古い k.inabaさん以外全部沈没
814 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:05:18 ] コンパイラが0.106とかの時代だからまだ新しい方じゃない?
815 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:16:10 ] inabaタンが、頑張ってくれてるみたいだから一括ダウンロードしてみたけど これ壊れてない? 目次だけで内容が見れないんだけど。 vista で見てるからかなぁ?
816 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:57:09 ] 新しいキーワードのmacroってなに?
817 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:41:12 ] For the future (unimplemented) AST macro feature.
818 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:29:12 ] >>815 ttp://support.microsoft.com/kb/902225/ → 方法2
819 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:55:14 ] What's New for D 1.011 Apr 11, 2007 New/Changed Features Extended Codeview symbolic debug output with LF_OEM types. Extended Dwarf symbolic debug output with DW_TAG_darray_type, DW_TAG_aarray_type, and DW_TAG_delegate types. Added keywords ref and macro. final classes cannot be subclassed. final for variables now works. ref now works as a replacement for inout. Fixed so multiple type inferring declarations like auto a=1,c=2; works. Bugs Fixed Fixed problem with overloading of function templates that have the same template parameter list, but different function parameters. Fixed problems with type deduction from specializations that are template instances. Fixed assert template.c(2956) s->parent Got .property to work for typeof. Fixed bug in DW_AT_comp_dir output for some linux versions. D.announce/8027 D.announce/8047 D/51800 Bugzilla 1028: Segfault using tuple inside asm code. Bugzilla 1052: DMD 1.009 - aliasing functions from superclasses may result in incorrect conflicts Bugzilla 1080: Failed to link to std.windows.registry Bugzilla 1081: with using real and -O option, dmd generate bug code Bugzilla 1082: The .offsetof property yields a signed int, a size_t would be more appropriate Bugzilla 1086: CodeView: missing line information for string switch Bugzilla 1092: compiler crash in ..\ztc\cod1.c 2528 Bugzilla 1102: switch case couldn't contain template member Bugzilla 1108: Indexing an int[] not evaluatable at compile time Bugzilla 1122: dmd generate bad line number while reporting error message
820 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:02:31 ] 今になってrefを導入してくるか……っ! 「inoutはrefに置き換えるかもしれません」って確かに言ってたけど!
821 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:13:22 ] コード書き換えの嵐ktkr いつかはやらなくちゃだったかもだけど、1.00になったときがよかったなぁ
822 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:46:21 ] それでこそD言語
823 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 15:32:12 ] D 0.1011 でいいんじゃね?
824 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 16:14:34 ] >>823 なんか二進数みたいに見えてきた・・・orz
825 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 16:16:16 ] 実は16進数で 0.D0.1011
826 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 18:17:07 ] >>825 その投稿時間はネタに合わせたのか
827 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 19:49:04 ] >>825 みらくるだなぁ
828 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:44:25 ] >>825 の16揃いはバネを使ったインチキだったので 警察に捕まりました。
829 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:50:07 ] >>825 上手いねえ
830 名前:815 mailto:sage [2007/04/12(木) 21:57:56 ] >>818 d
831 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 06:46:32 ] ドキュメント生成が見た目いまいちなんですけども標準以外でツール作られてたりしないの?
832 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:49:14 ] Doxygen は、Dに対応してるらしいぞ。 見た目はdmdでも、.ddocファイルで指定すれば、在る程度好きなようになるでしょ。 .ddocでユニークな文字列を埋め込んでおいて、スクリプトなどで再加工するとか…。
833 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:44:06 ] 1.012きた バグ修正オンリーか
834 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 16:27:23 ] digitalmars重すぎる。ミラーとか無いのかな?
835 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 09:08:50 ] >>831 candydocとかいいかんじかも。
836 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:22:12 ] すみません。 最近始めたものですが、無名クラスについて教えていただけないですか。 Java で書くと以下のようになるものは、Dだとどのように書けば良いのでしょうか。 Player player = new Player(new Strategy(){ public void method() { }});
837 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 01:39:16 ] auto player = new Player(new class Strategy { public void method() { } });
838 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 05:31:38 ] >>835 サンクス。 無駄に格好いいなこれw
839 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 12:23:53 ] DでAjaxやってるひといますか?
840 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 13:23:20 ] DとAjaxに何の関係が? DでCGIするって話?
841 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:45:13 ] CGI用のFrameworkっぽい物あったっけ?
842 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:41:05 ] ttp://www.wikiroom.com/sakurai/index.php?FrontPage ここくらいしか知らない
843 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:52:10 ] dsource.orgにあった気がする。
844 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 03:52:07 ] GWTみたいなのをDでやりたいんです
845 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 04:19:04 ] Dのような低レベル言語でWebアプリ作るの大変そうだな〜。 PHPとかとはまた違った面白さがありそうだが。
846 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 04:49:42 ] いやD言語は高レベルだし。ライブラリが揃ってないのが激しく面倒だけど。
847 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 09:23:20 ] これが歳の差か
848 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 09:26:47 ] Dは中レベルだよ。
849 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 10:03:03 ] Dでファイルのアップに対応したCGIライブラリ作ったけど、 1.4MB以上のファイルを食べさせるとしぬという素敵仕様になってしまったorz
850 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 10:06:31 ] Dで使えるODBCアクセス用クラスみたいなのありますか
851 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 10:15:44 ] 言語仕様の変更が怖くて D でライブラリ作る気しないなあ。
852 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 11:47:19 ] あなたにはD言語はおすすめできません
853 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:18:31 ] >>850 Cで使えればDでも使えますが ttp://www.kmonos.net/alang/wnd/topics/ddbi.ja.html こんなのもあります
854 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:21:48 ] しかしinout->refの変更は結構痛いなw DMD1.012だとDirectXのヘッダーとかDFLとか使えなくなったし 自分ですぐ直せるけど早く公式の方で対応されないかなー
855 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:27:00 ] Tango 0.97 RC1 has been released.
856 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:08:24 ] s/inout/ref/g で直しとけ
857 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:06:36 ] さらにs/ref/inout/gで直さなきゃならないなんてことは無いよな?
858 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:09:29 ] もしかして、参照も導入されることになったの?
859 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:31:30 ] ?
860 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:44:52 ] 文字列をコードとしてミックスイン なんていう機能があるんですか。
861 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:46:16 ] はい。あるんです。
862 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:52:28 ] なんかリフレクションできそうだな。 これでjarみたいなリンクが出来たら主戦言語にかえるかも。
863 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:55:12 ] flectioned
864 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:55:34 ] >>856-857 s/ref/ref_/g s/inout/ref/g としないと死ねるぞ
865 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:53:15 ] std.boxerでバグ見つけた Mac OS X 10.3.9 PowerPCなんだけど4bytes未満のデータをboxするとデータが壊れる。
866 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 17:09:49 ] Box box(TypeInfo, void*)のコード読んでみたらどうみてもstd.stdarg使ってないな。 しかもリトルエンディアン前提でコード書いてやがる。まあ仕方ないか。
867 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:15:01 ] 既出かもしれないが、 void func(void[] v) { } void main() { func(cast(void[])['a']); } で落ちる。
868 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:58:24 ] これだけで落ちるな。 void main() { void[] v = cast(void[])['a']; } 配列リテラルを void[] にキャストするのが無理っぽいね。
869 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:59:08 ] というか、 void main() { cast(void[])['a']; } これだけでいいか。
870 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:16:15 ] 落ちないなあ… dmd v1.012 windows xp
871 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:27:51 ] >>867-869 落ちない gdc 0.23 @ Mac OS X 10.3.9 PowerPC
872 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:27:12 ] ああ、コンパイラ古いからなのか? gdc 0.21 @ MacOSX 10.4.9 Core 2 Duo
873 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:53:54 ] 可変個引数テンプレートで悩んでいます。 class foo(T...) { int opApply(int delegate(ref T) dg) { int result = 0; return result; } } void poo() { foo!(int) hoge; foreach(int i ; hoge) { } } Compile Error: function foo!(int).foo.opApply (int delegate(ref (int))) does not match parameter types (int delegate(ref int __applyArg0)) foreachを動作させるにはどうすればよいのでしょうか? どなたかご教授お願いいたしますm(_ _)m
874 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:07:34 ] class foo(T...) Tが複数なんだから int opApply(int delegate(ref T[0]) dg) あと foo!(int) hoge; は auto hoge = new foo!(int); それともタプルをforeachで回したいのかな
875 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:12:36 ] foo!(int)とやればforeach(int n; hoge)に対応できて、 foo!(int,int)とやればforeach(int i, int n; hoge)に対応できる、 ってやりたいんじゃない?
876 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:19:47 ] >> 875 はい、そのとおりです
877 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 07:41:46 ] そこで文字列mixinですよ import std.metastrings; template F(int i,T...){ static if(T.length == 0) const char[] F=""; else const char[] F="ref T["~ToString!(i)~"]" ~ (i+1==T.length?"":","~F!(i+1,T[1..$])); } struct A(T...){ mixin("alias int delegate("~F!(0,T)~")dg_t;"); int opApply(dg_t dg){ return 0; } } void main(){ A!(int,char)X; A!(int)Y; foreach(int x,char c;X){} foreach(int y;Y){} }
878 名前:873 mailto:sage [2007/04/19(木) 12:38:15 ] >> 877 ありがとうございます!無事動作しました。 ただ、 (i+1==T.length?"":","~F!(i+1,T[1..$])); だと期待する動作ではなかったので(引数が一つ足りない)、 (i==T.length?"":","~F!(i+1,T[1..$])); とさせていただきました。 文字列mixin、すごいですねえ!!
879 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 14:57:54 ] 頼むから>>の後にスペースを入れないでくれ
880 名前:873 mailto:sage [2007/04/19(木) 15:26:42 ] >>879 はっっ ごめんなさい
881 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:31:09 ] gdc固有のバグは何処に報告すればいいんだ?
882 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 17:27:22 ] インターフェーステンプレートなんてものも出来るのか・・・
883 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 18:49:12 ] >>881 バグ報告? 自分で修正してパッチ公開だろ。 そのコードが良かったら誰かがいつかマージしてくれる。
884 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 18:51:00 ] >>881 bugzilla
885 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 06:24:59 ] DFL 0.9.5.03 リリース DMD 1.013 リリース
886 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 07:33:15 ] > DMD バグ潰しか
887 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 08:44:43 ] DFLキター
888 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 11:54:54 ] あぁ・・昨日アップデートしたばかりなのに・・・
889 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:49:00 ] 毎日アップデートするのを楽しむのじゃ
890 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 15:57:00 ] >>889 D言語ってそうゆうワクワク感がいいですよね。 アップデートを確認してバグが大量にフィックスされていた時は いつも感動の連続ですよ。
891 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 15:59:11 ] 結局ダメ言語
892 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:55:55 ] Richard Deyman って誰?
893 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 22:02:00 ] readlnがバグってるの早く直してほしいな
894 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 00:49:55 ] 久しぶりにJavaで仕事したらスイスイ書けてこんなに便利だったのかと改めて思った Dにも頑張って貰いたい
895 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 00:58:13 ] 便利なのはEclipse
896 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 10:41:01 ] IDE マダァ?(・∀・ )っ/凵⌒☆チンチン
897 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 11:06:36 ] >>896 CodeBlocksがまあまあ使える