D言語 Part24
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/01/26(火) 00:06:57■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1253443684/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
>>2へ続く
0685デフォルトの名無しさん
2010/06/16(水) 08:10:34Tango……。
あんまりTangoを使うことオススメ出来ないな。
D2 + phobos はGood
0686デフォルトの名無しさん
2010/06/16(水) 08:37:39bugzillaによるとそのバグ修正されてるからTangoの環境によるのかなぁ
xfBuildのissue見てるとobjとlibで被っているとかあったけど,どれが原因かは分からんね
0687685
2010/06/16(水) 08:41:40と思うのは俺だけじゃないはず。
0688678
2010/06/16(水) 10:46:55新しいverを入れると既存のコードのコンパイルが通らなくなって、修正するのが面倒くさくて、つい先送りに・・・。
今回も2.047にするとstd.rangeのTakeやらRetroでコンパイルエラーが発生して直し方がわかりません。
2.046なら、今作ってるプログラムは1箇所簡単な修正で済んだので、とりあえずはこれで・・・。
0689デフォルトの名無しさん
2010/06/16(水) 20:16:16特にファイルパス周りがヤバい
std.pathは合理的だわ、std.fileへの関数の振り分け方の基準が謎だけど
でもtraitsとか使ってるとD2が欲しくなるなぁ
0690デフォルトの名無しさん
2010/06/16(水) 20:45:430691デフォルトの名無しさん
2010/06/17(木) 04:02:50ttp://www.amazon.co.jp/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361
0692デフォルトの名無しさん
2010/06/17(木) 04:38:190693デフォルトの名無しさん
2010/06/17(木) 21:04:530694デフォルトの名無しさん
2010/06/17(木) 21:33:160695デフォルトの名無しさん
2010/06/17(木) 23:12:06確かにな、いつのバージョンだろ(笑
この2ヶ月でけっこー大きくphobosが変わったからな。
買うの危険?
0696デフォルトの名無しさん
2010/06/17(木) 23:26:260697デフォルトの名無しさん
2010/06/18(金) 01:31:24C:\dmd\dmd\bin\..\..\src\phobos\std\functional.d(179): instantiated from here: Body!(dchar,string)
C:\dmd\dmd\bin\..\..\src\phobos\std\algorithm.d(1984): instantiated from here: result!(dchar,string)
これってPhobosとdmdのバージョンがあってないんですかね?
0698デフォルトの名無しさん
2010/06/18(金) 07:08:37最近のdmdは一番大元の呼び出し元も教えてくれるんだっけ?
0699695
2010/06/18(金) 10:49:52std.containerが出たのは、つい最近だかな・・・。
dcollectionをphobosに入れたくないからって、
事前予告もなしに急に出てきたし。
それにミカン・・・。
>>643
同意。
0700デフォルトの名無しさん
2010/06/18(金) 19:19:47誰ぞインタフェース部分を乗っ取って博士のコードを内側に追いやってくれないかのう
0701デフォルトの名無しさん
2010/06/18(金) 19:22:540702デフォルトの名無しさん
2010/06/18(金) 19:33:21とかやらない限り無いねぇ
そして大抵は__FILE__も__LINE__も抜きに例外が投げられてる
アプリがどこで落ちたのか知りたい場合は-gオプション付きでコンパイルして
ddbg辺りで実行するなりすればいいと思う
0703デフォルトの名無しさん
2010/06/18(金) 23:53:29スタックトレースが最近入ったからそれで頑張ってくれ
0704デフォルトの名無しさん
2010/06/19(土) 02:41:41あれってなんなの?
どうすればスタックトレースを見られる?
0705デフォルトの名無しさん
2010/06/19(土) 11:03:36Windowsで見る方法あるの?
0706デフォルトの名無しさん
2010/06/19(土) 19:27:310707デフォルトの名無しさん
2010/06/19(土) 23:56:50import std.date;
d_time now = getUTCtime();
d_time old = now - ticksPerSecond * 60 * 60 * 24 * 365;
writeln(toString(old), toString(now));
Wed Jun 02 14:05:44 GMT+0000 2010Sat Jun 19 14:46:13 GMT+0000 2010
1年前の日付が表示されるつもりが、17日前の日付が表示されます。
どこが間違っているのでしょうか?それともphobosのバグ?
0708デフォルトの名無しさん
2010/06/20(日) 00:10:15>ticksPerSecond * 60 * 60 * 24 * 365
これがオーバーフローしてるみたいね
0709デフォルトの名無しさん
2010/06/20(日) 00:22:26なるほど。thxでした。
0711デフォルトの名無しさん
2010/06/23(水) 00:46:22Enter入力してもreadlnから抜けない気がする
↓をコマンドプロンプトで実行するとEnter毎に!が出るけど
cygtermだと何もでない。readlnが入力全部食ってる気がする
import std.stdio;
import std.cstream;
void main()
{
char s[];
while((s = readln()) !is null){
dout.writefln("!");
}
}
※cygterm=cygwinにteratermで接続するやつ
0712デフォルトの名無しさん
2010/06/23(水) 00:50:55readlnは改行コードCRLF、CR、LFに関わらず一行として認識すると
書いてあった気がするのだけどCRだけだとだめなんかね
0713デフォルトの名無しさん
2010/06/23(水) 13:24:38CR のみ判定しようとすると、LFが来るか来ないか待たないとダメだからな。
0714デフォルトの名無しさん
2010/06/23(水) 13:36:09CR 見た瞬間改行扱いにして、次のLFを無視するようにすればいいか。
ただ、CR 改行って Mac でしか見たことないんだよなぁ。
0715デフォルトの名無しさん
2010/06/24(木) 05:45:57dwtのドラッグする時にラベルのテキスト取りにいったら落ちるんですが
char[]を返してるだけなんですよね。
多分。
0716デフォルトの名無しさん
2010/06/24(木) 05:53:570717デフォルトの名無しさん
2010/06/24(木) 07:21:150718デフォルトの名無しさん
2010/06/24(木) 09:41:13サンプルもないし、SWTのソース流用してもdragStartすら呼ばれんのですが・・・
0719デフォルトの名無しさん
2010/06/24(木) 20:27:22TableのはバグってるけどTreeのドラッグは修正した記憶がない
0720デフォルトの名無しさん
2010/06/24(木) 21:13:26なんかおかしな点ありますか?
Listでやるとこのままでもうまくいくんですが・・・。
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
// Create the drag source on the tree
DragSource ds = new DragSource(tree, operations);
TextTransfer[] t ;
t ~= TextTransfer.getInstance();
ds.setTransfer(t);
ds.addDragListener(new class(tree) DragSourceAdapter {
Tree tree;
this(Tree _tree) {
this.tree = _tree;
}
void dragStart(DragSourceEvent event) {
Stdout("drag").newline;
event.doit = (this.tree.getSelection().length != 0);
}
public void dragSetData(DragSourceEvent event) {
Stdout("dragSetData").newline;
// Set the data to be the first selected item's text
auto txt = new ArrayWrapperT!(char)(this.tree.getSelection()[0].getText());
event.data = txt;
}
});
0721デフォルトの名無しさん
2010/06/24(木) 21:55:13でも手元のプログラムのツリーではちゃんとドラッグできる
えええ何でやねん
TreeItemに画像を設定したり
DropTargetもつけてみたり
TextEditorをくっつけてみたり
してみたけどやっぱりできないな
何が違うんだ?
0722デフォルトの名無しさん
2010/06/24(木) 21:59:10…何でやねん
0723デフォルトの名無しさん
2010/06/24(木) 22:05:47ありがとうございます!
0724デフォルトの名無しさん
2010/06/25(金) 10:47:53コンストラクタでドラッグリスナーの処理を行うと落ちます。エラーメッセージは
dwt.DWTError.DWTError: Cannot initialize Drag
ですが全く同じ処理を、コンストラクタから抜けた直後に書く(関数を呼ぶ)と普通に実行出来ます。
auto tree = new CTree(shell);
tree.init(); <-ドラッグ処理
コンストラクタって何か気をつけてないといけない事があるんでしょうか?
0725デフォルトの名無しさん
2010/06/25(金) 19:24:06>public this(Control control, int style) {
> super(control, checkStyle(style));
> this.control = control;
> if (control.getData(DND.DRAG_SOURCE_KEY) !is null) {
> DND.error(DND.ERROR_CANNOT_INIT_DRAG);
> }
> control.setData(DND.DRAG_SOURCE_KEY, this);
DND.DRAG_SOURCE_KEYをキーにしてデータを登録する処理が
うっかりどこかで走ってるんじゃないかなあ
0726デフォルトの名無しさん
2010/06/25(金) 21:37:44mixinで2度同じ関数が呼ばれてました・・・。
おかげでバグが取れました。ありがとうございます。
連投を重ねてすいませんが、恥をしのんであと一つお願いします><
ドラッグしたTreeItemが黒いのは、これもやはり自分のバグなんでしょうか?
画像をつけるとそこだけはちゃんとアイコンが表示されてるんですが。
0727デフォルトの名無しさん
2010/06/25(金) 22:13:05画像を作ってるのはTreeDragSourceEffect.getDragSourceImage()だから
その辺を調べるといいのかも
0728デフォルトの名無しさん
2010/06/26(土) 05:38:57そうなんですか・・・
>>720
で試して頂いた奴でもならなかったって事でしょうか?
となると自分の環境の問題なのかなぁ・・・
とりあえず頂いたヒントを調べてみます。ありがとうございました。
0729デフォルトの名無しさん
2010/06/26(土) 16:11:16環境次第で何が起きても驚かん
0730デフォルトの名無しさん
2010/06/27(日) 21:46:59writeln("abcd"[i..i + 4]);// "abcd"
writeln("abcd"[i..i += 4]);// ""
これってバグですか?
0731デフォルトの名無しさん
2010/06/27(日) 21:50:360732デフォルトの名無しさん
2010/06/28(月) 21:49:100733デフォルトの名無しさん
2010/06/28(月) 21:58:180734デフォルトの名無しさん
2010/06/28(月) 22:19:22cdecllってことでしゅ
0735デフォルトの名無しさん
2010/06/28(月) 22:25:43完全趣味で完全クローズドで未成年なのでそんなのどうでもいいです
>>734
なるほど
ありがとうございました
0736デフォルトの名無しさん
2010/06/29(火) 08:08:42構造体の配列を確保するときにデフォルトコンストラクタがあると
0で埋めるんじゃなくて要素数分コンストラクタを呼ばないといけなくなって
パフォーマンスに問題が出るから、だと思う。
0737デフォルトの名無しさん
2010/06/29(火) 10:52:200738デフォルトの名無しさん
2010/06/29(火) 18:19:01thx
0739デフォルトの名無しさん
2010/06/29(火) 19:42:43union {T field;}
}
A!(int, real, string) a;
a.field[0] = 0;
a.field[1] = real.nan;
a.field[2] = "aho";
foreach (f; a.field) writeln(f);
みたいなことができると今日知った
仕様書に書いてあればいいのに
0740デフォルトの名無しさん
2010/06/29(火) 21:51:590741デフォルトの名無しさん
2010/06/29(火) 22:12:300743デフォルトの名無しさん
2010/06/29(火) 23:03:39最初
T field;
とやったらできなくて、だったらどうやってstd.typecons.Tuple実現できるねん
と思ってソース見たらunionがいた
0744デフォルトの名無しさん
2010/06/29(火) 23:12:360745デフォルトの名無しさん
2010/06/29(火) 23:26:370746デフォルトの名無しさん
2010/06/30(水) 01:00:100747デフォルトの名無しさん
2010/06/30(水) 07:21:40じゃああの時出たエラーは別の要因だったのか…
union意味ねぇ!
0748デフォルトの名無しさん
2010/06/30(水) 22:45:58std.socketの改造の話が!
0749デフォルトの名無しさん
2010/06/30(水) 23:07:03標準ライブラリだけでfork-execやりたいです
0750デフォルトの名無しさん
2010/07/01(木) 02:48:350751デフォルトの名無しさん
2010/07/01(木) 10:06:17std.processって別ブランチで新しいの開発されてるけどいつマージされるのやら
0752デフォルトの名無しさん
2010/07/01(木) 21:38:19すばらしいね
未来はバラ色だな
0753デフォルトの名無しさん
2010/07/02(金) 05:28:290754デフォルトの名無しさん
2010/07/02(金) 19:24:43Dの有償IDEとか人類史上希に見る大胆なプロダクト
0755デフォルトの名無しさん
2010/07/02(金) 21:13:26ばかな・・・
0756デフォルトの名無しさん
2010/07/02(金) 21:36:40本体のバージョンアップで全て台無しにされる未来が……
0757デフォルトの名無しさん
2010/07/02(金) 21:49:35↓
IDEのバージョンアップ
↓
アップデートは有償
↓
ウマー
0758デフォルトの名無しさん
2010/07/02(金) 22:07:470759デフォルトの名無しさん
2010/07/02(金) 22:11:57まだ大丈夫だ
0760デフォルトの名無しさん
2010/07/02(金) 22:29:560761デフォルトの名無しさん
2010/07/02(金) 22:44:210762デフォルトの名無しさん
2010/07/02(金) 22:56:11DOS-BASIC
は許してあげて下さい…
0763デフォルトの名無しさん
2010/07/02(金) 23:02:53toString16(tango)で変換した文字列渡すと指定されたモジュールが見つかりませんとかでるんですが・・・
0764デフォルトの名無しさん
2010/07/02(金) 23:04:28でもリテラルで直接渡すとちゃんと通るんですよね・・・。何か間違ってるんでしょうか?
0765デフォルトの名無しさん
2010/07/02(金) 23:39:140766デフォルトの名無しさん
2010/07/03(土) 00:13:41はい。自分の環境だと自動的にLPCWSTR(wchar*)になってしまうんですが、tangoの方はそっちはくれないんですよね。
0767デフォルトの名無しさん
2010/07/03(土) 00:22:38main関数からもらったパス(args[][])のargs[0]をtango.io.FilePathに渡すと
tango.core.Exception.IOException: unexpected '\' character in path: D:\declipse\workspace\xdwt\main.exe・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
というエラーが出るんで、\を/に変えて使ってるんですが、
すると上記のエラーが出てしまうんです。
0768デフォルトの名無しさん
2010/07/03(土) 00:32:24auto fp = new FilePath(standard(args[0]));
auto lpcwstr = toString16z(toString16(fp.native().toString()));
多分こんな感じじゃないか?
0769デフォルトの名無しさん
2010/07/03(土) 08:33:56うまくいきました。
ありがとうございました。
0770デフォルトの名無しさん
2010/07/03(土) 15:14:020771デフォルトの名無しさん
2010/07/03(土) 16:39:570772デフォルトの名無しさん
2010/07/03(土) 21:04:090773デフォルトの名無しさん
2010/07/03(土) 21:19:07これって正常なんですかね?
0774デフォルトの名無しさん
2010/07/03(土) 21:53:080775デフォルトの名無しさん
2010/07/03(土) 22:45:120776デフォルトの名無しさん
2010/07/03(土) 23:38:080777デフォルトの名無しさん
2010/07/04(日) 10:22:190778デフォルトの名無しさん
2010/07/05(月) 22:03:05dmdからFFTWを呼ぶ場合、
implibでlibfftw3-3.dllを処理したlibをリンクし、
リンケージはextern(Windows)ではなくextern(C)を使う
</俺専用メモ>
0779デフォルトの名無しさん
2010/07/06(火) 07:50:280780デフォルトの名無しさん
2010/07/07(水) 11:58:52xml手書きするおとこの人って、、、
0781デフォルトの名無しさん
2010/07/07(水) 16:42:21HAGE = cast(Fuga*) 0b1,
...
}
てな感じで列挙体定義すると
Hoge.HAGE
で
Error: no property 'HAGE' for type 'Fuga'
って怒られてしまう。
これってDMDのバグ?
0782デフォルトの名無しさん
2010/07/07(水) 18:14:310783デフォルトの名無しさん
2010/07/08(木) 04:43:16ポインタの下位3ビットが0になることを利用して、
1つの値で31ビット整数とポインタ値を表現できるってやつをやろうとしてるのです。
スクリプト言語の値表現でよく使われるやつ。
で、処理系の実装上で使う特殊な定数値をenumで定義しようとして>>781のエラーにぶちあたった。
けどDにはGCがあるからポインタ直接触るのはよくないっぽいね
0784デフォルトの名無しさん
2010/07/08(木) 14:20:29ポインタで持たなければいいんじゃない?
■ このスレッドは過去ログ倉庫に格納されています