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へ続く
0655デフォルトのD言語er651さん
2010/06/12(土) 22:00:22>>649は"undefined"を書き忘れたのかと思ったから、言ってみた。
"identifier"ってエラーは実は見たこと無いんだ。
0656デフォルトの名無しさん
2010/06/12(土) 22:23:03オレは逆にDFLのsubversion開発版を使うことでdmd2の最新版で動くようになったぞ。
0657デフォルトの名無しさん
2010/06/12(土) 23:50:51プロパティって+=演算とかに対応してないんですか
0658デフォルトの名無しさん
2010/06/13(日) 00:54:23する予定はあるらしい
0659デフォルトの名無しさん
2010/06/13(日) 00:55:300660657
2010/06/13(日) 02:09:500661デフォルトの名無しさん
2010/06/13(日) 05:06:42あれー?おかしいなあ。
入れ直してみる。
0662デフォルトの名無しさん
2010/06/13(日) 12:46:200663デフォルトの名無しさん
2010/06/13(日) 14:30:122.061だと?
0664デフォルトの名無しさん
2010/06/13(日) 15:15:150665デフォルトの名無しさん
2010/06/13(日) 15:37:04D1と混ざってました
生まれてきてすいません
0666デフォルトの名無しさん
2010/06/13(日) 17:27:300667649
2010/06/13(日) 20:12:05mixinを使用したファイルでもtemplate内で使用される別ファイルで定義されてる関数等は同じようにimportが必要なだけでした。
mixn使えばimportが延々と並ぶの防げるかなーとか考えてたんですが・・・・
単なる勉強不足でした。
0668デフォルトの名無しさん
2010/06/13(日) 21:43:25std.range.zipとstd.range.recurrenceはD言語の象徴的機能という感じだな。
std.range.zipあたりは素でこういう機能が欲しかったという感じなので、
なんというか感動的でさえある
C++で似たようなことをやるときはインターフェースとなるクラスにはめてからこういう操作やってたが、
型情報保存済みで素で出来るようになるというのが恐ろしい
0669デフォルトの名無しさん
2010/06/13(日) 22:31:29ttp://p-stade.sourceforge.net/oven/doc/html/oven/utilities.html#oven.utilities.zipped
0670デフォルトの名無しさん
2010/06/14(月) 20:08:09Bad file descriptor例外が出るんですけど何か回避方法は無いんでしょうか。
Poseidonのオプションの[-L/SUBSYSTEM:windows:4]を使っているせいかな?
dmdのバージョンは2.039です。
0671デフォルトの名無しさん
2010/06/15(火) 21:02:55同じプログラムを何回も実行すると文字化けする時と正常な時があり、実行時にエラーはでません。
どういった原因が考えられるのでしょうか?
0672デフォルトの名無しさん
2010/06/15(火) 21:04:580673デフォルトの名無しさん
2010/06/15(火) 21:08:050674デフォルトの名無しさん
2010/06/15(火) 21:40:13その変数の中身が他所から書きかえられてるのかなぁ
単純なプログラムなら調べもつくんだろうけど
0675デフォルトの名無しさん
2010/06/15(火) 21:42:35代入といってもコピーされるわけじゃないから
char[] b = "test";
char[] a = b;
b[1] = '*';
writefln(a); // t*st
0676デフォルトの名無しさん
2010/06/15(火) 21:50:29代入直後なら文字化けしないので、文字コードの問題ではない気がします。
>>674
簡単なテストコード書いても再現しないんですよね。
原因を特定するのが難しいです。
>>675
すみません、ただの代入ではなく
char[] str = "ほげ".dup;
のように複製してます。
そして、strを他の配列にはコピーしてないです。
コンパイラはdmd2.041です。
0677デフォルトの名無しさん
2010/06/15(火) 21:56:07破棄されたポインタを使おうとしてハマったりとかあったけど、この場合関係なさそうだな
2.041って配列にappendしたものをGCがカウントミスって回収しちゃうバグがあったような
GC offにして試してみたらどうだろう
0678デフォルトの名無しさん
2010/06/15(火) 22:17:33まさにそれでした!
GC.disable();
としたら、何度やっても文字化けしなくなりました。
どうもありがとうございました。
0679デフォルトの名無しさん
2010/06/15(火) 22:42:050680デフォルトの名無しさん
2010/06/16(水) 05:39:12一つ前とかなら分かるんだけど…
0681デフォルトの名無しさん
2010/06/16(水) 05:46:40- DMD
- Phobos
- ユーザコード
0682デフォルトの名無しさん
2010/06/16(水) 05:48:440683デフォルトの名無しさん
2010/06/16(水) 05:53:09最新版……dmd2.047にアップ。
GC.disable(); しなくても文字化けしない。
0684デフォルトの名無しさん
2010/06/16(水) 07:34:40ってエラーがでたんですが、何を追えばいいのかわかりません。
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とか人類史上希に見る大胆なプロダクト
■ このスレッドは過去ログ倉庫に格納されています