【char[] str】 D言語 Part7 【str ~= "nullpo"】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語をベースにC++やJAVAの要素を取り入れさらに一歩進めた
新進気鋭のプログラミング言語Dの総合スレッドです。

かつて高性能C++コンパイラで知られたDigital Mars社が送り出す
より実践的で、本当に使える仕様が目標に去れています。

百出するあらゆるプログラミング言語が、閉鎖的で自己満足に留まっているなか
次世代に向けて快心の一作がこの生ぬるい日本のソフトウェア業界に渇を入れます!!

■ 参考URL

プログラミング言語 D
http://www.kmonos.net/alang/d/

D言語研究
http://www.kmonos.net/alang/d/

GCCフロントエンド gdc
http://home.earthlink.net/~dvdfrdmn/d/

本家
http://www.digitalmars.com/d/

Digital Mars
http://www.digitalmars.com/
2デフォルトの名無しさん:2005/08/02(火) 03:29:27
2get
3デフォルトの名無しさん:2005/08/02(火) 04:51:12
3ゲト
>>1 乙です

前スレ急に落ちたけれど何かあったの?
もっと流れの遅いスレ読んでるけど落ちて無いし
4デフォルトの名無しさん:2005/08/02(火) 05:01:35
5デフォルトの名無しさん:2005/08/02(火) 05:31:48
D言語にはJavaのように様々なプラットフォームで共有に使えるGUIライブラリはありますか?
それともCのようにOSベンダーがプラットフォームごとに用意したAPIを使うのでしょうか
6デフォルトの名無しさん:2005/08/02(火) 05:47:24
>>5
CだってクロスプラットフォームなGUIライブラリは存在するし使えるが…
標準ライブラリにって意味か?
7デフォルトの名無しさん:2005/08/02(火) 10:38:00
前スレ980で落ちてる、ってことでFA?
8デフォルトの名無しさん:2005/08/02(火) 11:31:07
まだやってんのか、こんな糞言語
9デフォルトの名無しさん:2005/08/02(火) 14:43:21
>>3
Wikipediaによるとレス数980以上の場合
即死判定が有効になるらしい

>>7
981で落ちてる、と思う


> 981 名前: デフォルトの名無しさん [sage] 投稿日: 2005/07/31(日) 15:06:56
> >>980
>
> Newsgroupsの提案記事で読んだ記憶があるのは、例えば、
> a[] = [1,2,3,4]とか、b[3..6]=[i,j,k]とかそんな感じのものだった。
10デフォルトの名無しさん:2005/08/02(火) 17:28:38
>>9
そう言う事だったか。なるほどね。
しかし980越えても即死判定が行なわれるというのは初耳ですた
11デフォルトの名無しさん:2005/08/02(火) 21:09:36
おまいらぶっちゃけ今の所、D言語
気に入ってる?
理由も書いておくれ
中間報告てことで。
12デフォルトの名無しさん:2005/08/02(火) 21:46:23
まずお前から
13デフォルトの名無しさん:2005/08/03(水) 00:04:27
俺からか、しかし俺はHelloWorldくらいしか書いたこともねーのよ

俺はダイエットしたC++、ネイティブなJava/C#ってだけで満足なんで
安定したらメインで使おうと思っております。
けちつけるなら
シンタックスシュガーな雰囲気のスライシングとか
char a[10]とかint*[]*[2] pのようなCっぽい宣言を許してる点なんかが
時代にそぐわないような気もしないではないなぁくらい。
14デフォルトの名無しさん:2005/08/03(水) 00:21:33
ああ、あとプロパティがごちゃごちゃしてる気もするなぁ
ああ、、、
そのうち慣れるつぅもんかな
15デフォルトの名無しさん:2005/08/03(水) 00:37:33
>>11
printf("abc
def
ghi\n");

とかかくと
abc
def
ghi
と表示してくれるのが最近気に入ってる。
16デフォルトの名無しさん:2005/08/03(水) 00:59:17
マルチスレッドなどでSegmentationFault相当のエラーが発生した時に親が
それを検知して対処し、強制停止などを食らわなくてすむ方法が欲しい。
17デフォルトの名無しさん:2005/08/03(水) 01:01:37
>>15
なんだこれ仕様なんか??
18デフォルトの名無しさん:2005/08/03(水) 17:47:21
ポインタが使えるのは短所だが長所でもあると、

個々の機能は単純だから
使いたい機能だけ使う人にはいいと思ってる
19デフォルトの名無しさん:2005/08/03(水) 21:43:51
糞言語
20デフォルトの名無しさん:2005/08/03(水) 22:24:13
糞はプログラマーの芽を育てる
21デフォルトの名無しさん:2005/08/03(水) 22:27:02
まあ昔から糞は肥料として使われてるからな。
22デフォルトの名無しさん:2005/08/03(水) 23:07:42
D言語でXMLが扱えるライブラリって無い?
23デフォルトの名無しさん:2005/08/03(水) 23:49:32
>>17
仕様じゃなかったっけ?
CGI作るとき楽でいいなと思ってるんだけどね。
24デフォルトの名無しさん:2005/08/04(木) 00:56:55
HTMLは<br>で改行する罠
25デフォルトの名無しさん:2005/08/04(木) 01:33:29
>>24
HTMLのソースを記述するところが楽っつー話。
26デフォルトの名無しさん:2005/08/04(木) 02:01:36
>>25
HTMLはプログラムの外にだした方がいいよ。

ところでDにもJavaでいう所のプロパティファイルが欲しくない?
Phobosで採用してくれないかな。
27デフォルトの名無しさん:2005/08/04(木) 18:31:45
> HTMLはプログラムの外にだした方がいいよ。

そんなこと指示される筋合いはない
28デフォルトの名無しさん:2005/08/04(木) 20:52:20
moduleって、ディレクトリ構造と完全に一致してないとダメなの?
29デフォルトの名無しさん:2005/08/05(金) 00:29:24
>>27
指示はしてないよ。提案しただけ。
おまえ要件定義とかできない人でしょ。
30デフォルトの名無しさん:2005/08/05(金) 00:54:22
仕事みたいなこという人だなあ
31デフォルトの名無しさん:2005/08/05(金) 01:23:46
>>29
死ねボケ
32デフォルトの名無しさん:2005/08/05(金) 11:45:07
スルーというか誰もcatchしてくれなかったんでもう一度。
D言語でXMLが扱えるライブラリって無いですか?
D言語研究のリンク集にあるxmldは一応見てみようとしましたが、
リンクが切れているので困っています。
33デフォルトの名無しさん:2005/08/05(金) 12:30:01
>>32
newsgroupのどっかにあがってた
3432:2005/08/05(金) 14:18:16
サンクスです。一応当該ページ貼っておきます
ttp://svn.dsource.org/projects/mango/trunk/mango/xml/
35デフォルトの名無しさん:2005/08/05(金) 22:45:25
>>27>>31痛いね
36デフォルトの名無しさん:2005/08/05(金) 23:47:56
>>35
お前だし寝ぼけ
37デフォルトの名無しさん:2005/08/06(土) 02:14:51
わたしのために喧嘩はやめて!
38デフォルトの名無しさん:2005/08/07(日) 12:55:12
std.c.stringがない…
39デフォルトの名無しさん:2005/08/07(日) 17:01:22
いつのまにやら0.129だな
40デフォルトの名無しさん:2005/08/07(日) 18:21:15
Added postfixes c, w, d to string literals to denote type.
↑これって
"foo"wとか"bar"cとかいうことであってる?
41デフォルトの名無しさん:2005/08/07(日) 20:40:34
だね。 あってるっぽい。

foo( r"w\r"w ); とかなるともはや暗号かと
42デフォルトの名無しさん:2005/08/07(日) 21:50:55
DMD 0.129リリース
43デフォルトの名無しさん:2005/08/07(日) 21:54:25
アフォ
44デフォルトの名無しさん:2005/08/08(月) 09:06:39
http://www.wikiroom.com/sakurai/?DJcode#content_1_2
の文字コード自動判定バージョン by ahiruってコンパイル通らない??
.sizeを.sizeofに変更とかしたけど色々エラーがorz
45デフォルトの名無しさん:2005/08/08(月) 09:26:47
ソース見てみたけど、C言語形式のキャストを使っている、古いソースみたいだね。
(Hoge *)という形式でキャストしている部分をcast(Hoge *)というD言語形式のキャスト変更して.sizeを.sizeof
に書き直したらコンパイルは通った。
4644:2005/08/08(月) 11:29:14
エラー書き忘れてたorz

jcode.d(6574): unsupported char 0xef
jcode.d(13124): Hex digit expected, not '・
jcode.d(13124): unsupported char 0xef
jcode.d(13124): comma expected separating field initializers
47デフォルトの名無しさん:2005/08/08(月) 11:40:41
gcc version 3.4.5 20050719 (prerelease) (gdc 0.15, using dmd 0.128) [FreeBSD]
でcastと.sizeを直せばサンプル?のmainはちゃんと動いたよ。
48デフォルトの名無しさん:2005/08/08(月) 11:42:44
こっちはそのエラーは発生しなかったな。

エラーの文章から推測すると文字コード関係のエラーかな?
ファイルのエンコードはちゃんとUTF-8で保存した?
4944:2005/08/08(月) 13:00:53
>>48
文字コードはUTF-8(秀丸にて確認)

ちなみに
環境はWinXP
dmd 0.128

ちなみにjcode_ahiru.zipの方だから…勘違いしている人いたらすまんm(_ _)m
50デフォルトの名無しさん:2005/08/08(月) 13:11:06
そっちはcastはD言語形式だからsizeofだけ修正したけど、それで動きましたよ。
ちなみに俺もWinXPで環境はdmd 0.128
51デフォルトの名無しさん:2005/08/08(月) 19:53:17
以前文字コード変換を探していて、これを見付けたんですが、
The Artistic License ってのがよく分からなかったので使わなかった。

ttp://www.gnu.org/licenses/license-list.ja.html
の辺には、
「私たちは、これをフリーソフトウェアのライセンスということはできません。
なぜなら、あまりにも曖昧過ぎるからです。
いくつかの節はそれらに期待される目的の割りには手が込みすぎていて、
また意味も不明瞭です。」
とあるが。
個人的にはGPLで充分だが、
それでは困る場合もあるだろうし……。

52デフォルトの名無しさん:2005/08/09(火) 12:16:09
>>46
もう解決した?一応手元のjcode.dの該当行
6573: {0x7246, 0xe0af},
6574: {0x7247, 0xcad2},
6575: {0x7248, 0xc8c7},
13123: {0xff0a, 0xa1f6},
13124: {0xff0b, 0xa1dc},
13125: {0xff0c, 0xa1a4},
5344:2005/08/09(火) 13:37:47
>>52
それを見て解決した。サンクス。(謎の空白があった。orz)
54デフォルトの名無しさん:2005/08/10(水) 07:46:11
akIDE 0.297が出てるね。
55デフォルトの名無しさん:2005/08/10(水) 08:28:23
static libも楽に扱えるようになってる。

あとはエディタで日本語コメントが化けなくなり、
コードコンプリートが実装されてくれればelephantを使う理由がなくなる。
56デフォルトの名無しさん:2005/08/10(水) 08:30:55
誤解を招きそうなので自己レス。

>elephantを使う理由がなくなる。
「漏れが」elephantを使う理由がなくなる、ってことね。
57デフォルトの名無しさん:2005/08/10(水) 12:31:12
どうやってakIDEにコンパイラのパスを教えてあげるのかが分からん…
58デフォルトの名無しさん:2005/08/10(水) 12:40:03
環境変数PATHに追加する
59デフォルトの名無しさん:2005/08/10(水) 12:52:48
0.297、インポートパスを複数指定しても最初のパスしか認識しないみたい。
トップページで告知してないのはそういう理由?
60デフォルトの名無しさん:2005/08/10(水) 18:56:23
>>58
トンクス。

明らかに違うと思いつつもakIDEと同じフォルダにある
programs.xmlを弄くって今までコンパイル通してた。

61デフォルトの名無しさん:2005/08/12(金) 00:40:33
akIDE超気に入った。すげー柔軟性w

xml弄くればメニューを日本語化できるし、キーアクセラレータも変えられるし、
エディタのフォント周りはstyle.xmlで変更可能。

style.xmlのcharset="204をcharset="128"に置換すると
エディタ上で日本語が文字化けしなくなる。(ただキャレットの移動がorz)
62デフォルトの名無しさん:2005/08/12(金) 11:04:23
ストリームのwriteメソッドで引数がchar[]なやつ、なんか出力に
ゴミ(文字列の長さ)が入るんだけどこれって既出?
63デフォルトの名無しさん:2005/08/12(金) 11:37:21
自己解決。writeStringを使うのね。
64デフォルトの名無しさん:2005/08/12(金) 15:31:05
libpngのインポートライブラリないかな?
ttp://d.hatena.ne.jp/hideki_i/searchdiary?word=png
しかみっけられんかったから仕方なく自分でコンパイルしてpng.h->png.d
に自前変換してみてるけど無駄なことしてるような気がしないでもない。
65デフォルトの名無しさん:2005/08/12(金) 15:59:38
読みだけならsdl
swigかwxWidgets辺りも使えると思う
66デフォルトの名無しさん:2005/08/12(金) 17:08:32
>>65
thx
SDLとか大げさな気がしてその辺避けてた。調べてくる。
67デフォルトの名無しさん:2005/08/14(日) 18:56:14
>>61
詳しくプリーズ
68デフォルトの名無しさん:2005/08/14(日) 20:18:59
詳しくと言われても…>>61で書いたことそのまんまなんだけどなー
将来アプリケーションの編集ダイアログでできるだろう事が、
現在のバージョンでもxmlを弄くればできますよって話。
ttp://aomura.hp.infoseek.co.jp/cgi-bin/img-box/img20050814201031.jpg

>ただキャレットの移動がorz
これは日本語が2byteで表現されているにも関わらず、
キャレットの左右移動が1byteずつだから、想像通りのことが起こるって話。

全然見当違いの事言ってたらスマソ。
69デフォルトの名無しさん:2005/08/14(日) 20:31:38
>>61はtypoしてるからそのまんまじゃねー罠。
×charset="204をcharset="128"に置換すると
○charset="204"をcharset="128"に置換すると

204とか128の数値は下図を参考。
enum {
ANSI_CHARSET =0,
DEFAULT_CHARSET =1,
SYMBOL_CHARSET =2,
SHIFTJIS_CHARSET =128,
HANGEUL_CHARSET =129,
GB2312_CHARSET =134,
CHINESEBIG5_CHARSET =136,
OEM_CHARSET =255,
JOHAB_CHARSET =130,
HEBREW_CHARSET =177,
ARABIC_CHARSET =178,
GREEK_CHARSET =161,
TURKISH_CHARSET =162,
VIETNAMESE_CHARSET =163,
THAI_CHARSET =222,
EASTEUROPE_CHARSET =238,
RUSSIAN_CHARSET =204,

MAC_CHARSET =77,
BALTIC_CHARSET =186
}
70デフォルトの名無しさん:2005/08/14(日) 20:41:11
>>68
ものすごい説明不足ですね・・・
すいません

style.xmlのcharset="204をcharset="128"に置換してから
menu_main.xmlのitem name="File"をitem name="ファイル"にすると文字化けします
何か足りない設定等はあるんでせうか?
71デフォルトの名無しさん:2005/08/14(日) 21:01:33
>>70
どう文字化けする?

@繝輔ぃ繧、繝ォ
A$B%U%!%$%k(B
B・ユ・。・、・・
C+MNUwoTCkMOs-
72デフォルトの名無しさん:2005/08/14(日) 21:08:43
>>70
こちらこそ説明不足スマソ。
charset="128"は文字セットがshift-jisだから
menu.main.xmlもshift-jisコードで保存しなきゃ文字化けする筈。

>>69の「下図」も図じゃないし…
書き込めば書き込むほど恥を上塗ってるorz
73デフォルトの名無しさん:2005/08/14(日) 22:25:23
皆さん(?)わざわざスイマセン OTL

>>71
1番目の繝輔ぃ繧、繝ォです

>>72
encoding="Shift-JIS"にすれば宜しいのでしょうか?
しかし、これにすると.xmlファイルの中の文字も文字化けします・・・
74デフォルトの名無しさん:2005/08/14(日) 22:34:15
解決しました

一度encoding="Shift-JIS"に変えて.xmlファイルを保存し、
再度ファイルを開いてから、日本語に設定すれば良かったんですねorz

こんな質問にわざわざ答えてくれて、ありがとう
75デフォルトの名無しさん:2005/08/15(月) 01:43:43
日本語化の情報見てすぐにakIDE入れてみた。
すげえ快適。

でも次からまたテキストエディタ+makefileの漏れがいる。
慣れって恐ろしいな。
76デフォルトの名無しさん:2005/08/15(月) 02:52:53
むしろvi+makeが最強だと思っている
77デフォルトの名無しさん:2005/08/15(月) 16:40:02
D触り始めました。
static関数が別ソースファイルから見えるのだが、これって仕様?

-- mod1.d
import mod2;

void func()
{
static_function();
}

-- mod2.d

static void static_function()
{
}
78デフォルトの名無しさん:2005/08/15(月) 16:46:39
private じゃ無いんだから見えるのは正常だろ?
79デフォルトの名無しさん:2005/08/15(月) 16:52:09
80デフォルトの名無しさん:2005/08/15(月) 17:38:50
static 属性は関数もしくはデータに適用されます。
これは、その宣言が特定のインスタンスに関するものではなく、
ある型に関するものである、という意味になります。
言い方を変えると、this を参照しない、ということです。
static がその他の宣言についた場合は無視されます。


アクセス保護属性は、
private, package, protected, public, export, のいずれか一つです。
private は、同じクラスのメンバのみが参照できる、
あるいは同じモジュールのクラス/関数のみが参照できることを示します。
private メンバをオーバーライドすることはできません。
モジュールのメンバを private と宣言するのは、 C での static 宣言と同等です。
81デフォルトの名無しさん:2005/08/15(月) 23:36:52
>static がその他の宣言についた場合は無視されます。

今思ったがこれってすごい仕様だな
8277:2005/08/16(火) 10:55:12
みなさんありがとです。
staticはだめで、privateにすればいいんですね。

・・・でも、不親切な仕様だなぁ。
C/C++とは互換性ないと考えた方がよさそうだ。
83デフォルトの名無しさん:2005/08/16(火) 11:09:41
ファイルの一行読みかできない。

import std.stream;
void main()
{
File src = new File("tmp.txt");

char[] len;
src.read(len);
}

実行結果:Error: Access Violation

環境:
Windows2000
Digital Mars D Compiler v0.128
84デフォルトの名無しさん:2005/08/16(火) 12:22:11
一行読みたいなら
len = src.readLine();
こうじゃない?わからんけど
85デフォルトの名無しさん:2005/08/16(火) 12:28:52
多分len.lengthが0だからじゃない?
わからんけど
86デフォルトの名無しさん:2005/08/16(火) 12:48:37
import std.stream;
void main()
{
File src = new File("tmp.txt");

char[1000] len;
src.read(len);

}

にしたら

test.d(7): cast(char[])(len) is not an lvalue
終了コード: -1073741819

でdmdが落ちた。

len = src.readLine();
の方試して見ます。
87デフォルトの名無しさん:2005/08/16(火) 13:01:00
import std.stream;
void main()
{
File src = new File("tmp.txt");

char[] len = src.readLine();
printf(len);
}

で行けました。

くだらないことでm(。・ε・。)mスイマソ-ン
88デフォルトの名無しさん:2005/08/16(火) 18:42:21
>>81
Dの設計思想から言えば、エラーになるべきだよね。
でも、とりあえずCから適当に変換しても通るようになってるみたいではある。
89デフォルトの名無しさん:2005/08/16(火) 19:01:56
moduleの宣言やインポートでいちいちtemplateとかobjectとかの
キーワードに反応してエラーを出すのが大変不愉快なんだがどうか。
90デフォルトの名無しさん:2005/08/16(火) 19:30:18
>>89
ハゲドウ
バグ報告したいところだが、バグじゃなかったら赤っ恥だしチキンな漏れは突撃出来ん。
つーかバグだよな?
91デフォルトの名無しさん:2005/08/16(火) 22:07:53
関数名にpublicとかclassとかを使えないのと同じ理屈で
moduleのそれらが通らないのかも。

とりあえず質問投げてみる。
92デフォルトの名無しさん:2005/08/16(火) 22:51:11
よく考えたらinterface.d内の識別子にアクセスしたいときに
interface.識別子って記述になっちゃってヤバイよな。
int.dの識別子initにスコープを使ったアクセスとかムリポ
9391:2005/08/16(火) 23:17:55
う。そいつは盲点だった。
思ったより根の深い問題だったのね。
94デフォルトの名無しさん:2005/08/16(火) 23:29:32
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ...   --─-  :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::..   (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡::::   //[||    」  ||]  ::::::::::゜:::::::::: ...:: :::::
 :::::::::::::::::: . . . ..: :::: / ヘ | |  ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .:::::::::  /ヽ ノ    ヽ__/  ....... . .::::::::::::........ ..::::
:.... .... .. .     く  /     三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧   ∧∧  ∧∧   ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:(   )ゝ (   )ゝ(   )ゝ(   )ゝ無茶しやがって… ..........
....  i⌒ /   i⌒ /  i⌒ /   i⌒ / .. ..... ................... .. . ...
..   三  |   三  |   三  |   三 |  ... ............. ........... . .....
...  ∪ ∪   ∪ ∪   ∪ ∪  ∪ ∪ ............. ............. .. ........ ...
  三三  三三  三三   三三
 三三  三三  三三   三三

つーか>>92の考えに至るのが遅かったり、バグバグ連呼したり、
漏れがバグ報告を扇動したみたいな形になったな。スマソ。
95デフォルトの名無しさん:2005/08/17(水) 12:20:14
解決案。

module(int).init
とか
cast(module)int.init
とか。
96デフォルトの名無しさん:2005/08/17(水) 17:50:26
ところでcast(*)って関数呼び出しみたいで紛らわしくないか?
97デフォルトの名無しさん:2005/08/17(水) 19:06:59
if()とか、while()とかもそう思うわけ?
98デフォルトの名無しさん:2005/08/17(水) 20:21:57
完全に慣れの問題だな。
右側に演算子が来ないから問題ないと思う。

…けどこういう書き方もできるんだよな。
real f;

int i = cast(int)-f;
99デフォルトの名無しさん:2005/08/17(水) 20:32:51
>>97
いや、castは値を返すから他の式の中に潜む性質を持つ訳で…。
まあ実際慣れの問題なんですがね…。
100デフォルトの名無しさん:2005/08/17(水) 23:53:50
Dで、自分のファイル名をとるのってどうやるの?
mainの引数に入ってこないんだが。
101デフォルトの名無しさん:2005/08/18(木) 00:26:20
int main(char[][] args)
{
char[] name = args[0];

とかでいけないか?
102デフォルトの名無しさん:2005/08/18(木) 01:16:58
パスに日本語入ってるとまずいから
char* name = args[0];
で受けてからUTF8に変換した方がいいと思う
103100:2005/08/19(金) 01:28:50
>>101, >>102
ありがと。
writef("usage: %s <dns server>", argv[0]);
で、できました。昨日はなぜかできなかった(そんわけないけど)。
でも、
foreach (char []s; argv) {
writef("\n%s\n", s);
}

foreach (char []s; argv) {
printf("\n%s\n", std.string.toStringz(s));
}
としたら、argv[0]が表示されないのはなんでですか?
>hoge 2
とすると

2
と、0番目は空行が表示されます。
(`Document and Setting' のスペースと関係が?)
104デフォルトの名無しさん:2005/08/19(金) 01:42:29
>>103
とりあえず試してみたらちゃんとatgv[0]は表示されたぞ?

後、空行が入るのは当たり前じゃないか、\n二つ入ってるんだから。
105デフォルトの名無しさん:2005/08/19(金) 03:35:54
int main(char[][] args)
{
foreach(char[] s; args){
printf("%s\n", cast(char*)s);
}

return 0;
}

とやってみたところ、実行ファイルのフルパスと引数がちゃんと表示されたよ。
WinXP SP2、DMD0.129で。
106デフォルトの名無しさん:2005/08/19(金) 05:53:27
printf("%.*s\n", s);
でいいと思うんだが。
107100:2005/08/19(金) 22:07:23
ほんまスマン。

C:\Documents and Settings\def\My Documents\Dev\dtest>dtest 23

C:\Documents and Settings\def\My Documents\Dev\dtest\dtest.exe

23

C:\Documents and Settings\def\My Documents\Dev\dtest>

と表示されていて、『23』だけが表示されて、その上はプロンプトとかと思っていた..


なにか、ただ、文字を表示するだけでも、いろいろありますね。
標準の出力ライブラリってどれです?個人的にwritefじゃないかとおもったのですが。
これが、マルチバイトの日本語を使えないので、char*にキャストしてprintfを使うのですか?
108デフォルトの名無しさん:2005/08/19(金) 22:23:25
普段stdout使ってるけど、標準って言われると良くわからんなぁ……。
109100:2005/08/19(金) 23:03:42
実現する方法が1つじゃないってのは、Perlみたいに自由な言語だとは思うのですが、
文字の出力関数くらい『これをつかえ!』ってのを決めてもらわないと、
みんな自分の方法で、printf(数通り)やらstreamやらwritefやらで、
わけわかなになりそうです!
110デフォルトの名無しさん:2005/08/19(金) 23:33:11
小難しいこと考えたくない→printf
(入・)出力先を選択可能にしたい→stream
小難しいこと考えたい→writef
これでどうだ。
111100:2005/08/19(金) 23:45:49
関数引数のconstについての質問です。

void [] toPacket(header *hdr,void [] data)
{
ubyte [] pack = (cast(ubyte *)hdr)[0 .. header.sizeof].dup;
pack ~= cast(ubyte [])data;

return cast(void [])pack;
}
という関数の引数をconst宣言したいのですが、
void [] toPacket(const header *hdr, const void [] data)
とすると、
dtest.d(5): basic type expected, not const
dtest.d(5): found 'const' when expecting ')'
とエラーが出ます。
Cのように引数を変更しないことを宣言するには、Dではどうするのでしょうか?
112100:2005/08/19(金) 23:52:03
>>110
なるほど。用途ごとにわけるわけですね。

個人的には、
writef-> Dのデータ型用
printf-> Cのデータ型用
のような気もしています。
113デフォルトの名無しさん:2005/08/20(土) 01:02:54
>>106
まぁそれでいいんだけどさ。
はじめわからんで>>105みたいな書き方してたから
そのまま慣れちゃって。

>>112
> writef-> Dのデータ型用
> printf-> Cのデータ型用
なるほど。
114デフォルトの名無しさん:2005/08/20(土) 11:59:09
派生して使うケースも

import std.cstream;
int main()
{
StdOutEx soe = new StdOutEx();
soe.hoge();
return 0;
}
class StdOutEx : CFile
{
this() { super(std.c.stdio.stdout, FileMode.Out); }
void hoge() { writeLine("hoge"); }
}
115デフォルトの名無しさん:2005/08/20(土) 14:38:12
標準出力に書き込む方法が色々あるのはいいんだが、
文字列操作関数がほとんどchar[]用なのがなんだかなあ。
いちいちtoUTF8呼ばされて幻滅しちゃう。
116デフォルトの名無しさん:2005/08/20(土) 14:51:37
>>115
つoverride
117デフォルトの名無しさん:2005/08/20(土) 15:46:21
>>116
言わんとするところがわからないので言語化してください。
118デフォルトの名無しさん:2005/08/20(土) 16:28:51
ひょっとしてもしかしてオーバーロードのこと?
119デフォルトの名無しさん:2005/08/21(日) 06:26:06
文字列を言語レベルでサポートとか言ってるけどどうやって使うの?
string型とか見当たらないんだけど
120デフォルトの名無しさん:2005/08/21(日) 07:29:22
char[]等が文字列扱い

>文字列を言語レベルでサポート
文字列クラスが特別にあるとかいうのじゃなくて
文字列関連の(基本的な)処理が言語のコア寄りに位置するってだけだと思う

ttp://www.kmonos.net/alang/d/cppstrings.html
121デフォルトの名無しさん:2005/08/21(日) 09:38:40
以下のコードで、変数nの値が1回目のprintfでは正常に出力されるのですが、
2回目のprintfでは0と表示されます。
これはバグだと思われるのですが、どうなのでしょうか。

int main()
{
int n = 10;
printf( "%d\n", n );
printf( "%d,%d\n", __LINE__, n );
return 0;
}
122デフォルトの名無しさん:2005/08/21(日) 10:03:43
__LINE__が32bitではないとかそういう話だったりする?
123121じゃないが:2005/08/21(日) 10:18:53
>122
(略)
printf( "%d,%d\n", cast(int)__LINE__, n );
(略)

にしてみたら

10
5,10

になった
124デフォルトの名無しさん:2005/08/21(日) 11:04:24
__LINE__ は 64bit だな

printf("%d\n", __LINE__.sizeof);
125デフォルトの名無しさん:2005/08/21(日) 11:18:55
>>124
字句解析の__LINE__の処理を見ても
> dmd\src\dmd\lexer.c
> 468: else if (id == Id::LINE)
> 469: {
> 470:   t->value = TOKint64v;
> 471:   t->uns64value = loc.linnum;
> 472: }
__LINE__は64ビット扱いだね。

>>121
ソースをそのままコピペしたけど
10
5,10
と普通に出力された。
当方WinXP SP2 dmd 0.129

出力値が異なったのは0x0000000000000005の
上位32ビットを出力したのか下位32ビットを出力したのかの違いによるものかな?
126デフォルトの名無しさん:2005/08/21(日) 11:26:13
>121です。

簡単にバグとか言って恥ずかしいです。
すばやい回答をありがとうございました。
127デフォルトの名無しさん:2005/08/21(日) 11:56:58
static assert(8 == __LINE__.sizeof);
static assert(long.max == __LINE__.max);

8バイトでlong型で間違いないな
128デフォルトの名無しさん:2005/08/21(日) 12:54:18
>>121のソースを見て「C言語スレ池」と言いそうになったのは秘密
129デフォルトの名無しさん:2005/08/21(日) 17:06:46
D言語の文字列の末尾に\0が入らないバグは直った?
130デフォルトの名無しさん:2005/08/21(日) 18:00:56
>>129
それってバグなの?
文字配列に長さの概念があるのにどうしてNull終端する必要があるの?
131デフォルトの名無しさん:2005/08/21(日) 18:19:05
>>131
仕様に書いてなかったか?
132デフォルトの名無しさん:2005/08/21(日) 18:24:11
>>131
そうか。
133デフォルトの名無しさん:2005/08/21(日) 18:28:41
>>133
リテラルには入る。他は入らない。
134デフォルトの名無しさん:2005/08/21(日) 18:31:17
>>134
これは今の流行なのか?
135デフォルトの名無しさん:2005/08/21(日) 19:43:53
>>135
なにやってるんだおまえら?
136デフォルトの名無しさん:2005/08/21(日) 20:35:09
>>136
ループスレにする気かこの馬鹿野郎。
137デフォルトの名無しさん:2005/08/21(日) 20:51:45
Dのテンプレート機能はどう?
あとMixin
138131:2005/08/22(月) 01:08:10
>>138
ごめん
139デフォルトの名無しさん:2005/08/22(月) 12:34:10
教えてください。

ある昔のソースを拾ってきて
SerialMemoryStream messageStream = messageTable[hWnd];

SerialMemoryStream messageStream = cast(SerialMemoryStream)(hWnd in messageTable);
と修正し、

その部分は動くようになったのですが、
他の箇所でエラーになります。

修正方法として間違ってますか?
(それともこの修正とは別の問題?)
140デフォルトの名無しさん:2005/08/22(月) 12:51:07
どこで拾った何のソースだかわからないけど、
 messageTable[hWnd]   -> SerialMemoryStream
 hWnd in messageTable  -> SerialMemoryStreamのポインタ

in 演算子を使うと要素へのポインタが帰ってくる。
messageTable[hWnd]で動かないなら他の部分に問題あるんじゃないかな。
141デフォルトの名無しさん:2005/08/22(月) 13:26:45
ttp://hp.vector.co.jp/authors/VA031566/d_direct3d9/
の、hdklib.zipのframebase.dを利用させてもらおうとしています。

DMD 0.126リリースの
・配列内にまだ存在しないキーを指定して連想配列にアクセスした場合に、
ArrayBoundsError?をスローするようになった。以前は、キーが配列に追加されていた

の影響かと思い、 hWnd in messageTableに変えて見ました。

勘違い?
142デフォルトの名無しさん:2005/08/22(月) 22:28:48
本家の言語仕様のページが更新されてまつ。
143デフォルトの名無しさん:2005/08/23(火) 14:26:19
SerialMemoryStream messageStream;
try{
messageStream = messageTable[hWnd];
}catch(ArrayBoundsError e){
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}

にしたらうまくいきました。
ありがとう。
144デフォルトの名無しさん:2005/08/23(火) 15:52:11
if (hWnd in messageTable) {
messageStream = messageTable[hWnd];
} else {
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
とする方がよいではないかと思うんだが。
145デフォルトの名無しさん:2005/08/23(火) 17:29:18
>>144
(>Д<)ゝ”了解!

ありがとうです。
146デフォルトの名無しさん:2005/08/23(火) 19:38:58
DMD 0.130sage
147デフォルトの名無しさん:2005/08/23(火) 21:11:46
ウォルター氏 real 好きだな、 double double 言いまくってた癖が抜けない
148デフォルトの名無しさん:2005/08/23(火) 21:14:45
realって何がリアルなんだろうな
149デフォルトの名無しさん:2005/08/23(火) 21:35:39
real number以外に何があるんだ
150デフォルトの名無しさん:2005/08/24(水) 00:31:34
モジュール内で、

class A {
private real a;
}

class B : A {
public real get() { return a; }
}

と、B の関数から a にアクセスできるのに激しく違和感が
確かに
「private は、同じクラスのメンバのみが参照できる、
あるいは *同じモジュール* のクラス/関数のみが参照できることを示します」
なんだが
151デフォルトの名無しさん:2005/08/24(水) 07:47:34
ver0.130ってどこにあるんだ?

>>146の告知後から何度も確認してるけど、changelogは更新されてるけど
/dmd.130.zipは存在しないし/dmd.zipの中身はdmd.129,zipなんだが
152デフォルトの名無しさん:2005/08/24(水) 12:22:02
changelogが0.129までしかない。
153デフォルトの名無しさん:2005/08/24(水) 12:23:50
>152
digitalmarsの方を見れ
154153:2005/08/24(水) 12:25:04
と思ったら消えてる・・・・・・?
何個かバグフィックスが載ってたはずなんだが。
155153:2005/08/24(水) 12:27:24
156152:2005/08/24(水) 13:00:46
>>153-155
いや、本家のchangelogから0.130が消えたから>>152を書き込んだんだが。
changelogはwikiの翻訳版が残ってるし…
誤解させるようなレスでスマンカッタ。
157デフォルトの名無しさん:2005/08/24(水) 20:43:46
Walter曰く、
0.130 is a work in progress and I accidentally uploaded the changelog for it.
158デフォルトの名無しさん:2005/08/25(木) 05:07:04
>>150
同じファイル内のクラスぐらいは同時には一人が管理するはず、という前提にたてば、
そういう例外を認めることで融通が利くのは良いことだと思う。

違和感を感じさせるような不統一が仕様にあっても、現実的に利点があれば
それでいいしそうすべきだと思う。上回る欠点があれば別だけど。
159デフォルトの名無しさん:2005/08/26(金) 06:26:22
ver1マダー?
160デフォルトの名無しさん:2005/08/26(金) 15:29:50
http://sakots.pekori.jp/cgi/sn/src/up32688.txt
Dで2ちゃんんるdatからテキストに変換する奴作ってみたw
161デフォルトの名無しさん:2005/08/26(金) 15:31:17
162デフォルトの名無しさん:2005/08/27(土) 13:28:34
D言語でcursesかそれに類する機能を持つライブラリを使うことはできるのでしょうか。
163デフォルトの名無しさん:2005/08/27(土) 16:15:50
お願いがあります。
std.socketを使った簡単なサーバとクライアントの
プログラム書いてもらえないでしょうか?

使い方がよくわからず、サンプルプログラムとか
探しても見つからず。
探し方悪いんですかね?それともサンプル自体が少ないとか。

その辺もうちょっと充実して欲しいなぁと思うところ。
164デフォルトの名無しさん:2005/08/27(土) 17:09:07
なんか日本語とかマルチバイト文字がちゃんと表示されないのですがどうすればいいのですか?
165デフォルトの名無しさん:2005/08/27(土) 19:58:17
>164
自分の環境くらい晒してくれんか。
166100:2005/08/27(土) 20:53:59
>>163
普通のbsd socketを使ったことがあれば分かると思うので、
Dにこだわらず、LinuxやUnixの説明サイト見たらいいと思う。
それがすでに分かってるなら、dmd\src\phobos\std\socket.d見れば分かるよ。

--
C++でいうthisは、Dではなんですか?
ない?クラスのメソッドから状態によって、自分のリファレンスを返したいのですが。
167デフォルトの名無しさん:2005/08/27(土) 21:07:42
>>162
やってみれば?

>>164
UTF-8じゃないコンソールにUTF-8で出力してるから、に一票。

>>166
this
168デフォルトの名無しさん:2005/08/27(土) 21:13:34
Dのsockedはmemcpyでディープコピー出来ないから糞なんじゃなかったっけ?
Apacheみたいな鯖は一生出てこない気がする
169100:2005/08/27(土) 21:29:27
>>167
ありがと。

>>168
>memcpyでディープコピー出来ない
くわしく。
socketをmemcopyとか普通しなくないです?
ディスクリプタのdup()のこと?
170100:2005/08/27(土) 21:36:36
>>163
dmd\samples\d\htmlget.d
dmd\samples\d\listener.d

サンプルにありました。
171デフォルトの名無しさん:2005/08/28(日) 00:22:31
>>166,>>170
情報ありがとう。
頑張ってみる。
172デフォルトの名無しさん:2005/08/28(日) 01:03:31
>>169
memcpy(&fds, &readfds, sizeof(fd_set));
173デフォルトの名無しさん:2005/08/28(日) 03:52:22
Dの翻訳みてみたらSocketSetってのでうまいことやってるみたいだけど。
なんでfd_setを使うの?
174デフォルトの名無しさん:2005/08/28(日) 12:56:15
sset.reset();
sset.add(listener);
foreach(Socket each; reads)
{
    sset.add(each);
}

この処理が冗長なんだよ。
selectってのは配列なりコレクションなりを引数にとって
勝手にremoveして返すから。
175デフォルトの名無しさん:2005/08/28(日) 15:06:29
質問です。
main.dとhoge.dが同一ディレクトリ内にあって、それぞれの内容が
----- main.d -----
import hoge;

int main(){
hoge hg = new hoge;

return 0;
}
----- hoge.d -----
class hoge
{
}
-----------------
となっています。それをdmd main.dとコンパイルした際に

main.obj(main)
Error 42: Symbol Undefined __Class_4hoge4hoge
errorlevel 1

のようにリンカエラーが出てしまいます。
これはimport宣言の使い方が間違っているのでしょうか。

コンパイラのバージョンはdmd ver0.129です。
176デフォルトの名無しさん:2005/08/28(日) 15:16:33
>>174
冗長なことが気になるなら、
void addSocketArray(SocketSet socketset, Socket [] socketarray)
{
socketset.reaset();
foreach (Socket each; socketarray) {
set.add(each);
}
}
とかつくっておけばいいことないですか。
速度云々言われると、そもそもD使えないし。

あと、sizeof(fd_set))って大丈夫です?
fd_setって、(OSがポーリングできる最大ソケット数*(ソケットハンドルサイズ + α))分の
サイズを固定長でとってますか?
ポインタメンバをもって、そこに使う分だけ確保していると思っていたんだけど。
177デフォルトの名無しさん:2005/08/28(日) 15:19:00
>>175
hoge.dの先頭に
module hoge;
と書く必要があります。

>>176
変数名間違えた>set.add
178175:2005/08/28(日) 15:45:14
>177
module hoge;をhoge.dの先頭に追加しても同様の結果になります。

それに、kmonos.netの和訳版マニュアルには
>もし宣言が存在しなければ、 ソースファイル名と同じ名前(パスと拡張子は除かれる)が使用されます。
と載っているのですが・・・
179デフォルトの名無しさん:2005/08/28(日) 15:50:02
>>176
fd_setは固定要素数を持った整数配列をひとつメンバにもった構造体だよ
最大数はカーネル依存だけどFreeBSDなら1024個だったかな
180デフォルトの名無しさん:2005/08/28(日) 16:04:10
>>175
> dmd main.d hoge.d
でいけたよ。
181175:2005/08/28(日) 16:37:16
>180
回答ありがとうございます。手元でもうまく動作するのを確認しました。

しかしそうすると、ローカルに存在する自作のモジュールを読み込む際には
全てのモジュールを列挙する必要があるのですか?
どうにも煩雑なように思えるのですが。
182デフォルトの名無しさん:2005/08/28(日) 16:55:55
>>181
てか、Cで dmc main.c hoge.c hage.c とか
やるのと同じ感じじゃないのかな。
183デフォルトの名無しさん:2005/08/28(日) 17:00:49
コンパイルだけやりたいって事なのか?
184デフォルトの名無しさん:2005/08/28(日) 17:11:15
makefileの使い方を覚えよう!
DMのmakeはスペースを受け付けないらしいけど
185175:2005/08/28(日) 17:15:23
>182
まあそうかもしれませんが、モジュールと(C/C++における)ヘッダファイルに対応付けて考えていたので
今ひとつしっくりきませんでした。

>184
cygwinのmake使ってみます。
ABA GAMESの中の人はAnt使ってるみたいですが・・・
186175:2005/08/28(日) 17:16:19
訂正
×モジュールと
○モジュールを
187デフォルトの名無しさん:2005/08/28(日) 21:52:49
ドキュメンテーションコメントが策定中みたいね。
個人的には、@paramと書くjavadocよりは好み。
188デフォルトの名無しさん:2005/08/29(月) 04:39:57
>>185
Cでも #include "hoge.h" とやったときに、
gcc main.c hoge.o ってやんないと実行バイナリを生成できんと思う。

#include <stdio.h> とやって gcc main.c で実行バイナリが生成できるのは、
暗黙に標準ライブラリがリンクされるから(のようなもの)じゃないかな。
189デフォルトの名無しさん:2005/08/30(火) 00:11:35
>>188
Dのモジュールは、Cでいうヘッダーファイルもかねているから、
.hの中に関数の実体書いているようなものと思ったんじゃないの。
テンプレートライブラリのヘッダーファイルみたいな。
190デフォルトの名無しさん:2005/08/30(火) 13:16:32
UTF-8は深刻なんだな…
191デフォルトの名無しさん:2005/08/30(火) 20:41:29
ふーむ D便利っすね
192デフォルトの名無しさん:2005/08/30(火) 20:56:17
>188
>Cでも #include "hoge.h" とやったときに、
>gcc main.c hoge.o ってやんないと実行バイナリを生成できんと思う。

ちょっとまて
193デフォルトの名無しさん:2005/08/30(火) 21:08:02
わろす
194デフォルトの名無しさん:2005/08/30(火) 21:18:45
Dって何が便利なの?
195デフォルトの名無しさん:2005/08/30(火) 21:28:10
wxDも出たことだし、後はwx-devcppのような感じの開発環境が出てくれば・・・
196デフォルトの名無しさん:2005/08/30(火) 22:14:24
>>195
出たことだし、ってもっと前から無かったっけ?>wxD
197デフォルトの名無しさん:2005/08/30(火) 22:26:09
WinSock使うときは
ttp://hp.vector.co.jp/authors/VA028375/d/
を入れて
pragma (lib, "win32.lib");
しないと逝けないんだな。
198デフォルトの名無しさん:2005/08/30(火) 22:26:44
もちろん
pragma (lib, "ws2_32.lib");
は大前提だけど。
199デフォルトの名無しさん:2005/08/31(水) 00:16:31
wxDってポーティング終わったの?
鬼畜米兵とジャップがそれぞれ作ってたよね
200デフォルトの名無しさん:2005/08/31(水) 00:29:58
200
201デフォルトの名無しさん:2005/08/31(水) 09:22:53
>>192
202デフォルトの名無しさん:2005/08/31(水) 14:14:05
DからCの関数の呼び出しってどうやるんだ?
203デフォルトの名無しさん:2005/08/31(水) 14:27:17
>>202
つ extern(C)

extern(C){
    int strlen(char*);
    int printf(char*,...);
}
void main(){
    printf("%d",strlen("Hello World"));
}
204192:2005/08/31(水) 16:51:35
>201
なんかどうも勘違いしてたっぽい。

俺は
Dの場合:main.d hoge.d
        ↓   ↓
Cの場合:main.c hoge.h
という風に対応させて思ってたけど

188は多分
Dの場合:main.d hoge.d
        ↓   ↓
Cの場合:main.c (hoge.h + hoge.c)
という風に考えてたんだと思う。

すいません。
205デフォルトの名無しさん:2005/08/31(水) 20:51:58
>>199
鬼畜米兵のほうが公開済み
ジャップのほうは挫折済み
206デフォルトの名無しさん:2005/09/02(金) 10:13:46
align(x) 効かないっすなぁ・・・ (ver1.3.0)

ttp://www.digitalmars.com/d/archives/digitalmars/D/23023.html

同じくこまってる人がいたけど、5月から直ってないのかぁ・・・
207デフォルトの名無しさん:2005/09/02(金) 15:19:07
208デフォルトの名無しさん:2005/09/02(金) 16:39:23
本家で十分な気がしないでもない。
209デフォルトの名無しさん:2005/09/02(金) 17:50:00
それよりphobosでwcharに対応したstd.stringを入れておいてホスィ
なんでwcharとdcharだけ対応してないのかねえ?
210デフォルトの名無しさん:2005/09/02(金) 19:49:05
面倒だからだろう
211デフォルトの名無しさん:2005/09/02(金) 20:38:16
マルチバイト文字にはdcharを使うことを推奨ってことで、
charはアルファベット以外の文字を見たことのない人用
wcharはwindowsAPIにアクセスするときぐらいしか使わない
212デフォルトの名無しさん:2005/09/02(金) 21:14:44
>>209
コレでは、だめかい?
http://spottedtiger.tripod.com/D_Language/D_Support_Projects_XP.html

StringW v0.46 - Phobos' std.string converted to use wchar[] as it's base instead of char[].
213デフォルトの名無しさん:2005/09/02(金) 21:25:43
というかchar型決め打ちのライブラリよりも、
templateを使った汎用的な配列操作用のライブラリを標準で作って欲しい。
214デフォルトの名無しさん:2005/09/02(金) 21:53:56
D言語パーフェクトガイド
http://www.gihyo.co.jp/books/syoseki.php/4-7741-2208-4

今更ながらこの本を買ってみようかな〜
他言語のソースも載っているんですよね?
一緒に他言語も勉強できそうなんで。どうだろ?
215デフォルトの名無しさん:2005/09/02(金) 22:03:25
>214
まあぶっちゃけ微妙といわざるを得ない
216デフォルトの名無しさん:2005/09/02(金) 23:08:16
>>214
立ち読みしただけだけど、そのソースは単純にDと比較するだけの物であって、
他言語を知ってる人のための物。
217デフォルトの名無しさん:2005/09/03(土) 01:43:19
>>214
ぶっちゃけ、買わないほうがいいと思う。
サンプルプログラム最新のコンパイラでコンパイル
出来ないのあるし。

それなりに仕様変わったからなぁ。

まぁ記念に一冊なw
218209:2005/09/03(土) 13:51:11
>>211
どこにそんなの書いてあった?
つかWin環境で使うことが多いから俺はwcharよく使うんだけど。

>>212
それ知らんかった。昔ニュースグループに流れてたやつかな?
何はともあれthx

>>213
ここで作ってwalterタンにphobosに入れてもらう…無理そうだな('A`)
219デフォルトの名無しさん:2005/09/03(土) 13:58:54
英語が出来れば無理ではないよ

外部有志のライブラリをDeimosとして纏めてくれんかな
Javaでいうところのjavaxみたいな位置づけでさ
有用そうなら積極的に採用してライブラリの肥大化を進めて欲しい
下手にGPLなライブラリとかが優勢になると身動きが取れなくなる
220209:2005/09/03(土) 14:16:11
いや無理かなって言ったのは"ここで作って"の部分。
まとめられないだろうし、何より俺がなんの貢献も出来ないだろうって
いうのがでかい自虐的意味だったスマソ。
221デフォルトの名無しさん:2005/09/03(土) 14:48:27
試しにSTLを真似て書いてみたけど、
関数templateが無いから少し使いにくい。
template find(T,InIt=T*){
    InIt find(InIt begin,InIt end,T value){
        for(;begin != end;++begin)
            if(begin[0] == value)return begin;
        return end;
    }
}
222デフォルトの名無しさん:2005/09/03(土) 17:34:43
>>215-217
お返事どうも有難うござました。
あまり期待しないほうがよさそうですね。とりあえず、やめときます。
223デフォルトの名無しさん:2005/09/03(土) 19:35:20
>>221
ん、それってstd.string.findと仕様違うぽくね?
いやわざとなら別にいいけど。
224デフォルトの名無しさん:2005/09/03(土) 20:08:42
C++のstd::findに似せて書いたからstd.string.findとは仕様が違う。
std.string.findと同じ形で書くならこんな感じ。

template find(T,Container=T[]){
    int find(Container container,T value){
        foreach(int index,inout T it ; container)
            if(it == value)return index;
        return -1;
    }
}

でも、整数で返したら配列 or opIndexが定義されてる物 以外で使いにくくなるのが少し嫌。
ま、配列決め打ちでも全然問題ないけどね。Dの配列は便利だし。
225デフォルトの名無しさん:2005/09/03(土) 20:19:26
配列スライスって速い?
226デフォルトの名無しさん:2005/09/03(土) 20:24:47
>>225
遅くなる要素がないような処理だが。
227デフォルトの名無しさん:2005/09/03(土) 20:30:06
スライスしても中身のコピーはしないから高速。
228デフォルトの名無しさん:2005/09/03(土) 20:34:29
int[] aryFull = new int[ary1.length+ary2.length];
aryFull[0 .. ary1.length];
aryFull[ary1.length .. ary2.length];

こんな感じで使われるなら楽でいいね
229デフォルトの名無しさん:2005/09/03(土) 20:38:17
ごめ、すっごいボケかましたw
もちろん代入値はary1とary2です。
230デフォルトの名無しさん:2005/09/03(土) 20:44:52
スライスしても中身のコピーはしないが、
スライスする元のものと、してできたものが同じものをさす保障はない点に注意

int[] a1 = new int[10];
int[] a2 = a1[2..5];

a2[0] = 100; //a1も書き換わる
a1.length = 100;
a2[1] = 200; //a1は書き換わらない
231デフォルトの名無しさん:2005/09/03(土) 20:55:42
なるほど。オフィシャルの翻訳の配列の項をみると目からうろこだな。
これがネイティブで出来るのか…鯖でも作ろう
232デフォルトの名無しさん:2005/09/05(月) 16:20:31
さすが糞言語だ。
233デフォルトの名無しさん:2005/09/06(火) 21:29:36
>230

int[] a1 = new int[10];
int[] a2 = a1[2..5];

a2[0] = 100;
printf("a1[0]:%d, a2[0]:%d\n", a1[0],a2[0]);
a1.length = 100;
a2[1] = 200;
printf("a1[1]:%d, a2[1]:%d\n", a1[1],a2[1]);

この結果は
a1[0]:0, a2[0]:100
a1[1]:0, a2[1]:200
となったんだが(@dmd0.129)。
書き換えるときにコピーするという認識で大丈夫だと思うのだけど。
234デフォルトの名無しさん:2005/09/06(火) 21:45:56
>>233
あのさあ、、、
スライスで、a1[2]をa2[0]ととってるのに、a1[0]とか、a1[1]を表示してどうすんのよ?

int main()
{
int[] a1 = new int[10];
int[] a2 = a1[2..5];

a2[0] = 100;
printf("a1[2]:%d, a2[0]:%d\n", a1[2],a2[0]);
a1.length = 100;
a2[0] = 200;
printf("a1[2]:%d, a2[0]:%d\n", a1[2],a2[0]);

return 0;
}

結果:
a1[2]:100, a2[0]:100 // a1も書き換わる
a1[2]:100, a2[0]:200 // a1には反映されてない
235デフォルトの名無しさん:2005/09/06(火) 22:10:43
236233:2005/09/07(水) 00:02:32
スマン。寝ぼけてた。吊ってくる
237デフォルトの名無しさん:2005/09/07(水) 00:59:21
質問です。

import std.string;

class hoge{
public char[] test(){
return toString(1000);
}
}

int main(){
hoge hg = new hoge;
printf("%.*s\n", hg.test());

return 0;
}

↑のようなコードをdmdでコンパイルしようとすると

hoge.d(5): function object.Object.toString () does not match argument types (int)
hoge.d(5): Error: expected 0 arguments, not 1

のようにエラーが出てしまいます。
何らかの記述ミスがあるのでしょうか。

hogeクラスを削ってmainの中身をprintf("%.*s\n", toString(1000));だけにしてコンパイルし、
実行すると期待したように1000という文字列が出力されます。
238デフォルトの名無しさん:2005/09/07(水) 01:04:55
>>237
return .toString(1000);
にすると幸せになれるかもしれない。

ヒントは暗黙のtoString。
239237:2005/09/07(水) 01:27:08
>238
ありがとうございます。解決しました

なんだかC++を念頭に入れて書くと戸惑うことばっかりな気がする・・・・・・
240デフォルトの名無しさん:2005/09/07(水) 10:48:12
DMD 0.130リリース

DL出来ることも確認。
241デフォルトの名無しさん:2005/09/07(水) 13:33:48
>changed size parameters to ulong instead of size_t

size_t を uint から ulong に変更って
Cのライブラリのポーティングの際とかに問題にならない?
242デフォルトの名無しさん:2005/09/07(水) 17:33:21
どんなにバージョンが上がっても、絶対にメジャーになる可能性はゼロ。
243デフォルトの名無しさん:2005/09/07(水) 17:53:35
予言者乙
244デフォルトの名無しさん:2005/09/07(水) 19:45:16
>>241
それは、std.mmfileの引数に関する変更点だよ。
245デフォルトの名無しさん:2005/09/07(水) 21:27:36
確かに size_t.sizeof==4 だ‥  勘違いスマソ
246デフォルトの名無しさん:2005/09/08(木) 14:13:55
64bitコードをはいてくれればなぁ・・・
247デフォルトの名無しさん:2005/09/08(木) 15:05:56
2年後だな
248デフォルトの名無しさん:2005/09/08(木) 15:23:10
>>247
リアルさにわろたw
249デフォルトの名無しさん:2005/09/08(木) 23:32:11
250デフォルトの名無しさん:2005/09/08(木) 23:42:37
コンパイラのためのOOPっていう謡は伊達じゃないってか
251デフォルトの名無しさん:2005/09/09(金) 07:21:14
>>249
まぁ、全部の言語のMissingがきえてからだな
252デフォルトの名無しさん:2005/09/09(金) 11:20:14
ver 1.0マァァァダアッァアァー?
253デフォルトの名無しさん:2005/09/09(金) 18:09:53
DMD 0.131リリース
254デフォルトの名無しさん:2005/09/09(金) 18:15:51
バグフィックスだけか。

暗黙の関数テンプレート実体化まだー?
255デフォルトの名無しさん:2005/09/10(土) 00:12:21
akIDE 0.298が出てるね。
256デフォルトの名無しさん:2005/09/10(土) 01:21:50
Ver1.0が出てみんなが本格的に何かを作る段階になったら、
char*をchar[]を置き換える手間が問題になってくると思う。

char[] str = std.string.toString(pStr);



char[] str = pStr.toString();

ぐらいまで簡単になれば作業速度の向上でグッと利用者増加やツール充実が
みこめるはず。
せっかく「コンパイラの為の言語仕様」みたいな話のわかる設計してるんだし。
「実際に”使える”」にも注力して欲しい。

最新の言語仕様ではC++やJavaに対するアドバンテージが低下してしまってる。
この辺の勝手が(まるでPHPのように)良くなればヘタすりゃデファクトにもなりうるって。
257デフォルトの名無しさん:2005/09/10(土) 03:34:21
>>256
馬鹿だ。馬鹿がいる。
258256:2005/09/10(土) 11:36:40
>>257
なんかいい方法があるんか?
259デフォルトの名無しさん:2005/09/10(土) 12:13:04
char[] str = pStr.toString();

……今でも使えなかったっけ?
260名無しさん@そうだ選挙に行こう:2005/09/10(土) 17:06:22
>>258
 char[] str = .toString(pStr);
でOKだろ。

>>259
それはできんけど、
 "%s".printf(pStr);
とか
 "abc".split("b");
とかできるという不思議があるね。
261名無しさん@そうだ選挙に行こう:2005/09/10(土) 17:18:20
>260
そういうのが中途半端にできるのは戸惑うな。
Ruby感覚で100.toString()とかできるかなと思ったができないし。
262名無しさん@そうだ選挙に行こう:2005/09/10(土) 17:36:40
まあ、D言語の場合、大体の仕様は「コンパイラありきですから」で
納得のし様(筋の通され様?)があるからいいんだけどな。
263名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:06:10
Dの高速さを維持するために必要なのかもしれないしな
264デフォルトの名無しさん:2005/09/12(月) 17:26:38
int h = "hello, world.";

main() { printf("%s\n", h); }

dmcで -Jmオプション付けてもこのコードが通らないんですが、
これを許可する方法ないですか?
困りました。


>sc -Jm hello.c
int h = "hello, world.";
^
hello.c(3) : Error: need explicit cast to convert
from: char *
to : int

こいつが出ます。

VC6は警告ありで通るのに・・
int をchar *にでも変えればよいのはわかってますが、
やりたくありません。
ちなみにgccでも通りました。
265デフォルトの名無しさん:2005/09/12(月) 17:43:11
>264
いやここD言語のスレなんだけど。
266デフォルトの名無しさん:2005/09/12(月) 21:33:13
>>264
やりたくないって駄々こねる方が悪いだけでしょw
所詮どっちも4バイトやん
267デフォルトの名無しさん:2005/09/12(月) 21:38:30
>>264
キャストすればいいだけだろ。CでもDでも
268デフォルトの名無しさん:2005/09/12(月) 22:20:08
DでQtは使えないのかな?
269デフォルトの名無しさん:2005/09/12(月) 22:47:41
wxDがあるってことは間接的に使ってるってことでは?
GTK?
270デフォルトの名無しさん:2005/09/12(月) 22:51:42
>>264
古いスタイルを受け付けない、dmcのバグだな。
271デフォルトの名無しさん:2005/09/12(月) 23:11:40
>>264
ある日、マホメットは「自分はあの山をこちら側に引き寄せてみせる」と公言した。
この奇跡を見ようと集まった群衆の前で、マホメットは山に向かって叫ぶ。
「おーい、山よ。こっちへ来い!」しかし山は動かず。
再び彼は山に叫ぶが動かない。3度目を叫んだ時、群集は失望と軽蔑。
しかしマホメットは言う。
「諸君!ご覧のとおり私は山に向かって3度呼びかけたが、山は動かなかった。
 このうえは、私が山に向かって歩いていくよりほかはないだろう」
そして彼は山に向かってスタスタと歩き始めた

# 暗いと不平を言うよりも すすんで明かりをつけましょう。
272デフォルトの名無しさん:2005/09/12(月) 23:18:15
別に264もそのままhello.cを動かしたいわけじゃないだろ。
昔のソースをコンパイルできないってことじゃないか?
>>271がもの凄い駄文に見える。
273デフォルトの名無しさん:2005/09/13(火) 00:05:55
これアドレスが入るって事だよね?
だとしたら通らない方がよくない?

この書き方で実用的な例があるなら見てみたい。
274デフォルトの名無しさん:2005/09/13(火) 09:40:11
>>272
そんなのいざとなればプリプロセッサでも通せばいいだけじゃん?
バカ?
275デフォルトの名無しさん:2005/09/13(火) 15:18:09
>>274
それってソースコード全部直すのと変わらんじゃん。何の解決になるんだ?
「dmc使うな」っていうなら分かるけど。
276デフォルトの名無しさん:2005/09/13(火) 22:41:35
>>274
型書き換えとかキャスト挿入で済むならとっくにやってるだろ。
おまえ馬鹿じゃないのか?
277デフォルトの名無しさん:2005/09/13(火) 23:26:25
キャスト挿入ですまない理由が知りたい。
というか、もういい加減にスレ違い。
278デフォルトの名無しさん:2005/09/13(火) 23:52:18
で、結論はdmcは通らないということか
279デフォルトの名無しさん:2005/09/14(水) 00:45:38
基地外警報が発令されました。
スルーをお願いします。
280デフォルトの名無しさん:2005/09/14(水) 22:50:19
ポインタってuint32じゃないの?
int32へキャストしたらコストが発生するのでは?
適当なこと言ってすまん
281デフォルトの名無しさん:2005/09/15(木) 09:06:28
>>280
そんなことはないと思う

MarsのHPに載ってたんだけど、
ハンガリアン記法がダメな理由を誰か教えてくれ〜
282デフォルトの名無しさん:2005/09/15(木) 09:39:09
char *からintのキャストでは(双方32bitだとすれば)、何もやることはないですね。
283デフォルトの名無しさん:2005/09/15(木) 11:12:46
>>281
デメリットのほうを強く感じているだけじゃねーかな?
変数名を見ただけで型がわかるっつーけど、そんなの俺らが気にする事
じゃなくてコンパイラが間違ってるぜーって教えてくれるし、わざわざ
醜い命名規則使う必要ないって感じ?
よくはwalterタンに聞かなきゃワカンネと思う。

ただ、winapiとか使ってるといつの間にかハンガリアン使ってる俺ガイル。
HRESULT onCreate(HWND hWnd, LPCREATESTRUCT lpcs)とか。
284デフォルトの名無しさん:2005/09/15(木) 12:02:13
昔は長い変数名は嫌われてた
今みたいに20〜30文字当たり前の状況では
ハンガリアンは受け入れられるのではないか

まぁ、命名ルール覚えるのが面倒っつーのが大きいわな
IDE支援があればともかく
285デフォルトの名無しさん:2005/09/15(木) 13:22:14
するってーと、ハンガリアンのように一文字に省略するのは流行らないから
const char * const constCharConstPointerTentative;
とかになるのかな?
#あ、Dじゃないや(ぉぃ
286デフォルトの名無しさん:2005/09/15(木) 14:12:42
ちゅーか普通に
const char* foo;
ってすれって意味じゃないのか?w
287デフォルトの名無しさん:2005/09/15(木) 19:54:11
>>281
元々型情報で表すことができない情報をプレフィクス化したのがはしりだったらしい。
…が、Windowsの開発チームが誤解して広めたらしい。
http://www.radiumsoftware.com/0507.html

個人的には型に対するコンパイラのチェックが貧弱な言語のためのもので、strong typedefが使えるならいらないと思う。
288デフォルトの名無しさん:2005/09/16(金) 09:00:54
>個人的には型に対するコンパイラのチェックが貧弱な言語のためのもので、strong typedefが使えるならいらないと思う。
俺もそー思うYO
289デフォルトの名無しさん:2005/09/16(金) 09:39:19
>>282
型チェックとかで違ってくるだけだろうね
でもDとしてはそういう、ポインタを整数として直接いじるようなことは
言語仕様としてやめたいはずで、だから通らないのはむしろ本来的なんじゃね
290デフォルトの名無しさん:2005/09/16(金) 22:55:45
if (hoge in {1,3,5}) {
//statements
}
こういうの希望
291デフォルトの名無しさん:2005/09/17(土) 00:24:35
if (hoge in {1,2,3} union bar.values())
うはっ、夢がひろがりんぐw
292デフォルトの名無しさん:2005/09/17(土) 00:34:06
いいかげん暗黙のテンプレート実体化をくれ。
293デフォルトの名無しさん:2005/09/17(土) 01:02:59
bit[int]とかvoid[int]とかのハッシュの定数ってまだ書けないんだっけ。
294デフォルトの名無しさん:2005/09/18(日) 15:11:18
日本語扱うのマンドクセ
295デフォルトの名無しさん:2005/09/19(月) 19:21:02
dmdでコンパイルしてるとき
class Foo is forward referenced when looking for 'KEY_CODE'
ってな感じのエラー出たんだけど、forward referenceはどうやって回避したら良いの?
ちなみに'KEY_CODE'は
public class Foo {
public static enum KEY_CODE { ... };
}
て言う風に定義してるんだが…
C言語のヘッダーファイルでこんがらがったときと同じようなものなのか?
296デフォルトの名無しさん:2005/09/19(月) 20:15:53
DからC++の関数を呼び出したいんだがクラスとか絡んできたらどうするの?
297デフォルトの名無しさん:2005/09/19(月) 20:51:53
マングリングでぐぐった後途方に暮れて諦める
298デフォルトの名無しさん:2005/09/19(月) 21:00:12
>>295
最小再現コードうpうp
299デフォルトの名無しさん:2005/09/19(月) 21:17:54
>>297
マングリング名のままのシンボルでデバッグする羽目になったこと有るのですげぇその気持ちよく分かる。
↑ブレークポイントしかけるのも頭痛かった。
300デフォルトの名無しさん:2005/09/19(月) 21:24:57
マングリングとはまんぐり返しをしている状態だと思ったのは俺のほかに何人いるだろう
301デフォルトの名無しさん:2005/09/19(月) 21:49:08
違うとわかっていても本当はそうなんだと信じたい俺を0.5人として数えておいてくれ('A`)
302デフォルトの名無しさん:2005/09/19(月) 21:57:43
マジレスするとこれを使えばいい
http://www.prowiki.org/wiki4d/wiki.cgi?DwithSwig
303295:2005/09/20(火) 00:02:27
サンプル "forward_decl.d"
------------------------------------------
import std.cstream;

void f1(Class.SOME_ENUM value) {
dout.writeLine("do nothing");
dout.flush();
}

class Class
{
public static enum SOME_ENUM {
VAL1,
VAL2
};
}

void main()
{
f1(Class.SOME_ENUM.VAL1);
}
304295:2005/09/20(火) 00:03:05
コンパイル
dmd forward_decl.d
------------------------------------------
出力
forward_decl.d(3): identifier 'SOME_ENUM' is not defined
forward_decl.d(3): SOME_ENUM is used as a type
forward_decl.d(3): cannot have parameter of type void

C:\home\work_private\code\D\forward_decl>dmd forward_decl.d
forward_decl.d(9): class forward_decl.Class is forward referenced when looking f
or 'SOME_ENUM'
forward_decl.d(9): class forward_decl.Class is forward referenced when looking f
or 'SOME_ENUM'
forward_decl.d(3): no property 'SOME_ENUM' for type 'forward_decl.Class'
forward_decl.d(3): Class.SOME_ENUM is used as a type
forward_decl.d(3): cannot have parameter of type void
------------------------------------------
てなかんじ。
305295:2005/09/20(火) 00:04:20
すまそ、さっきのちょと変

------------------------------------------
出力
C:\home\work_private\code\D\forward_decl>dmd forward_decl.d
forward_decl.d(9): class forward_decl.Class is forward referenced when looking f
or 'SOME_ENUM'
forward_decl.d(9): class forward_decl.Class is forward referenced when looking f
or 'SOME_ENUM'
forward_decl.d(3): no property 'SOME_ENUM' for type 'forward_decl.Class'
forward_decl.d(3): Class.SOME_ENUM is used as a type
forward_decl.d(3): cannot have parameter of type void
------------------------------------------
306デフォルトの名無しさん:2005/09/20(火) 00:09:52
問題の最小コードはこんな感じか。
Class.Enum f();
class Class{enum Enum{e}}

で、自分が困ったときは

class Class{enum Enum{e}}
Class.Enum f();

と定義順を変更して回避した。(importが絡むとさらにメンドイ)

でもDって前方参照しても良いはずじゃなかったっけ?
307デフォルトの名無しさん:2005/09/20(火) 01:09:10
のはず。
308デフォルトの名無しさん:2005/09/20(火) 12:47:52
DMD 0.132リリース
309デフォルトの名無しさん:2005/09/20(火) 19:48:30
Ddocね。
ネーミングが・・・
310デフォルトの名無しさん:2005/09/20(火) 20:02:39
[[

 ̄l
311デフォルトの名無しさん:2005/09/20(火) 20:21:14
>>309
dDocにするべきだよな
312デフォルトの名無しさん:2005/09/20(火) 21:41:32
DDocでもいい
313デフォルトの名無しさん:2005/09/20(火) 21:44:15
合間を取ってdogsで手を打たないか?
314デフォルトの名無しさん:2005/09/20(火) 21:46:06
Newsgroupsで一時期候補に挙がっていた、Docterとか良さそうだったんだけどな。
315デフォルトの名無しさん:2005/09/20(火) 21:47:45
ブラックボックステスターみたいなイメージがする <どくたー
316デフォルトの名無しさん:2005/09/20(火) 21:49:53
D Oxygenって名前にして元の奴乗っ取る
317デフォルトの名無しさん:2005/09/20(火) 21:53:54
惑星探査機とかそういうのから名づければいいのに・・・
318デフォルトの名無しさん:2005/09/20(火) 22:13:21
なんだろう。
DocPathFinderとか?
319デフォルトの名無しさん:2005/09/20(火) 22:40:38
Microsoftを見習ってDocument

説明翻訳されるとよいなぁ。
和訳マニュアルは本家のデザイン変更に追従するのかどうだか。
320デフォルトの名無しさん:2005/09/20(火) 22:46:35
NetBeansみたいにソースやJavaDocにサクッと飛べる関連付けを意識して頑張って欲しい。
321デフォルトの名無しさん:2005/09/20(火) 23:23:45
DeepDocsとか

#HTMLにDを埋め込めるよ! っての忘れられてる希ガス
322デフォルトの名無しさん:2005/09/20(火) 23:27:51
>>321
わざわざHTML書くか?っていう問題にぶち当たったんだと思うw
323デフォルトの名無しさん:2005/09/20(火) 23:30:16
HTMLは検証コードをコンパイルするためのものでしょ
ベンチマークとか良くネットに晒されてるじゃん。あれをお手軽コンパイルするのが目的。
324デフォルトの名無しさん:2005/09/20(火) 23:38:22
そんなんどうでもいいからコンパイラを先に完成させろといいたい。
ソースの最初にenumを書いてるので前方参照ではありえないのに
forward referenceの警告と一緒にぬるぽ吐いて止まるので
ものすごく困ってるんだが。
325295:2005/09/21(水) 00:44:11
>306

私も同様に定義順を並び替えて回避した。
しかし、前方参照を許可するはずのD言語なのに…
326デフォルトの名無しさん:2005/09/21(水) 23:40:41
wikiにDdocの情報を追記してくれた人ありがとう。
327デフォルトの名無しさん:2005/09/22(木) 17:26:52
質問です。
Win32API の GetWindowText 関数を使用したいのですが、

int len = GetWindowTextLengthA(m_hwnd);
char[] str = new char[len + 1];
GetWindowTextA(m_hwnd, str, len);
printf(str ~ "nullpo");
printf("aho");

上のコードを "title" というタイトルのウインドウに適用すると
出力が以下のようになります。

titlaho

これはどうすればよいのでしょうか。
328デフォルトの名無しさん:2005/09/22(木) 21:05:29
>>327
そもそもGetWindowTextはヌル文字も含めたバッファサイズを指定するのだからGetWindowTextA(m_hwnd, str, len + 1);だろ。
329デフォルトの名無しさん:2005/09/22(木) 21:09:49
んで、str ~ "nullpo"がnullpoを表示しないのは、
strの中にnul文字があるから、そこで文字列の終了と勘違いするから。

str[0..$-1] ~ "nullpo"とすればこの場合は大丈夫
330327:2005/09/22(木) 21:17:41
>>328-329

仰るとおりにしたら正しく動きました。
どうもありがとうございました。
331デフォルトの名無しさん:2005/09/22(木) 21:20:13
DのNULL終端なしは大失敗な設計に終わるかも
332デフォルトの名無しさん:2005/09/22(木) 23:00:37
Cとのインターフェイスで気をつければいいだけだろ。
333デフォルトの名無しさん:2005/09/22(木) 23:05:01
Dだけでやってる分には特に問題ないし
334デフォルトの名無しさん:2005/09/22(木) 23:08:53
D以外に触ろうとすると問題。
ま、自分はD言語の外はあまり触らんから問題ないけど
335デフォルトの名無しさん:2005/09/22(木) 23:39:37
Dも仕様見てる分には楽しそうなんだけどな
JavaはGUI周りがしっかりしてきて実用しても楽しい段階だし
Dも早くその領域に追いついて欲しい

336デフォルトの名無しさん:2005/09/23(金) 00:02:10
Javaはどうも好きになれなかった・・・・・・
なんでテンプレート無くてコンテナから出してもObject扱いなんだよーとか(当時)
なんで演算子オーバーロード無いくせにStringだけ特別扱いなんだよーとか
なんで組み込み型はクラスじゃないんだとか
標準ライブラリのクラス群の名前の長さに辟易したりとか

趣味でプログラム書く分にはどうも気に触る点ばっかりだったように思う。
当時既にC++信者だったし。
今改めてやってみたらまた別かもしれんけど。
337デフォルトの名無しさん:2005/09/23(金) 00:13:47
インクリメンタルサーチやインテリセンス(これは製品名か、俗称知らね)が普及してるからなぁ
逆に公開メソッドは略さない用に気を使うほどになったよ。(内部はガリガリだけど)
NetBeansってIDE使えば、VC++とVB6.0の間くらいの手間でアプリが作れるしね。

言語や環境の成長を見届けるのは楽しくもあり、もどかしくもあるw
338デフォルトの名無しさん:2005/09/23(金) 00:15:54
>>336
それで合ってるよ。
個人の趣味レベルの規模であれば、
とにかく言語仕様がシンプルであることに尽きる。
それには膨大なライブラリやオブジェクト指向はお荷物となる。
つまり、JavaやC++は個人で使うには向かない。
339デフォルトの名無しさん:2005/09/23(金) 00:21:09
OOPが企業向け?なんか違うような…
340デフォルトの名無しさん:2005/09/23(金) 00:21:22
ネイティブで動かない言語は
余計なところで、気を使わないといけないから
いいんじゃないの?
341327:2005/09/23(金) 00:29:10
もう一つ質問してよろしいでしょうか。
ウインドウを作成してウインドウプロシージャに自前の関数を指定したいのですが、
非 static なクラスメンバ関数を指定するにはどうしたらよいでしょうか。

extern (Windows) private LRESULT WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { ... }

として宣言した WndProc に対して WNDCLASS で

wc.lpfnWndProc = &WndProc;

とすると、コンパイル時に

cannot implicitly convert expression (&this.WndProc) of type \
  int delegate(HANDLE hwnd,uint msg,uint wParam,int lParam) to \
  int(Windows*)(HANDLE,uint,uint,int)

というエラーが出力されます。
static 修飾子をつけると問題なくコンパイルされます。
342デフォルトの名無しさん:2005/09/23(金) 00:36:30
OS決めうちならC++を倒せる唯一の言語かもね
FortranやPascalと互角に戦える実行力、短いコードで書けるOOPらしさ
delegateや真typedef、string switch、速いGCなど意味もなく使いたくなる機能目白押し
343デフォルトの名無しさん:2005/09/23(金) 00:37:02
まぁ、CPUがDのソースを直に理解してくれるようになればなんの苦労もないんだがね。
344デフォルトの名無しさん:2005/09/23(金) 00:40:07
1バイト文字圏の香具師らに取っては速いかもしれないが、
毎度変換しなきゃいけないからマルチバイト文字圏な漏れらにとっては
これでエディタとか書いたら遅そう
345char:2005/09/23(金) 02:27:56
346tya-:2005/09/23(金) 02:35:42
347デフォルトの名無しさん:2005/09/23(金) 02:48:47
>>338
> 膨大なライブラリやオブジェクト指向はお荷物となる。
ちょwwwっをまwwww
348デフォルトの名無しさん:2005/09/23(金) 03:04:26
>>338
それじゃbrainf*ckなんか最高だね!
だって言語仕様は極めてシンプルだし、ライブラリなんて存在しないもの
349デフォルトの名無しさん:2005/09/23(金) 08:36:22
エスペラント語
350デフォルトの名無しさん:2005/09/23(金) 15:55:45
文字列比較に関数つかわないから好き
351デフォルトの名無しさん:2005/09/23(金) 16:50:33
文字列比較なんて頻繁に起こらない
352デフォルトの名無しさん:2005/09/23(金) 16:53:14
>>249
そこのベンチは不正があった。
最低なサイト。
353デフォルトの名無しさん:2005/09/23(金) 17:27:48
浮動少数の余剰を求めるのに関数つかわないから好き。
354デフォルトの名無しさん:2005/09/23(金) 17:31:22
〜なんて頻繁に使わない
355デフォルトの名無しさん:2005/09/23(金) 17:36:33
文字列の連結に関数つか(r
356デフォルトの名無しさん:2005/09/23(金) 20:10:39
>>352
今も残ってるの?
357デフォルトの名無しさん:2005/09/23(金) 20:44:35
それよりも他の言語のNo programが多すぎてD言語がトップに見える現象が気になる
ベンチの意味あるのかね
358デフォルトの名無しさん:2005/09/23(金) 20:54:14
fortranやpascalが速すぎて投稿できないんじゃない?
my favorite languageが恥を各のは嫌でしょ
359デフォルトの名無しさん:2005/09/23(金) 20:57:30
こういうプログラミング言語ってどうやって作るの
360デフォルトの名無しさん:2005/09/23(金) 21:03:58
>>359
頑張って仕様を考える。
361デフォルトの名無しさん:2005/09/23(金) 21:05:06
それより頑張って実装してみる
362デフォルトの名無しさん:2005/09/23(金) 21:09:49
>>361
それはコンパイラを作る時にする事だろ?
363デフォルトの名無しさん:2005/09/23(金) 21:11:54
まずテキストから実行できる何かに変換する何かをどうにかするのが先
364デフォルトの名無しさん:2005/09/23(金) 21:19:52
いや、先ではないだろ
365デフォルトの名無しさん:2005/09/23(金) 21:42:24
なんか
printf("こんにちわ");
が文字化けするんだけどどうすればちゃんと表示されるの?
366デフォルトの名無しさん:2005/09/23(金) 21:44:18
>>365
コンソールがUTF対応じゃないだけだろ。
367デフォルトの名無しさん:2005/09/23(金) 21:44:53
printf("こんにちわ" ~ 0);
とか
char[] a = "こんにちわ";
printf(a);
とかじゃね?
368デフォルトの名無しさん:2005/09/23(金) 21:44:54
>>366
じゃあ解決できないの?
369デフォルトの名無しさん:2005/09/23(金) 21:47:14
>>367
ムリです。同じ結果になります。
370デフォルトの名無しさん:2005/09/23(金) 21:51:05
char* toMBSz(char[] s)
{
foreach (char c; s)
{
if (c >= 0x80)
{ char[] result;
int i;
wchar* ws = std.utf.toUTF16z(s);
result.length = WideCharToMultiByte(0, 0, ws, -1, null, 0, null, null);
i = WideCharToMultiByte(0, 0, ws, -1, result, result.length, null, null);
assert(i == result.length);
return result;
}
}
return std.string.toStringz(s);
}
371デフォルトの名無しさん:2005/09/23(金) 22:05:13
std.file.toMBSzを呼ぶのが楽。
372デフォルトの名無しさん:2005/09/23(金) 22:09:16
>>371
>>370はそのコードそのものですよ
373371:2005/09/23(金) 22:17:47
でも>>370ではどこで定義されてるか書いてない。
だから、知らん人は下手したら自分で定義して使いそうな気がした。

一応ここで定義されてるのを使うと良いよーと言ってみたかった
374デフォルトの名無しさん:2005/09/23(金) 22:26:56
D言語研究のリンクからjcode.d引っ張ってきて
printf(utf8_sjis("ほげほげ"));
とか。
375デフォルトの名無しさん:2005/09/23(金) 22:33:51
Java並みの強力なコレクションフレームワークはDにも存在しますか?
376デフォルトの名無しさん:2005/09/23(金) 22:37:51
Javaのコレクションフレームワークって強力だったっけか
377デフォルトの名無しさん:2005/09/23(金) 22:41:28
うん、強力。配列かノードリストか丸で考慮する必要なし。ソートも楽チン。
378デフォルトの名無しさん:2005/09/23(金) 22:51:36
D言語は素の配列が多機能だったり連想配列を組み込みでサポートしたりして、
ライブラリじゃなくて言語としてデータ構造をサポートしてる。
だから、その手のライブラリは残念ながら標準にはない。

#queueとlist構造が無いのが少し難点
379デフォルトの名無しさん:2005/09/23(金) 22:51:38
結局効率とのトレードオフだから
よく考えて使わないとヘタクソ加減は変わらんと思う
380デフォルトの名無しさん:2005/09/23(金) 23:11:34
std.algorithmみたいなのがあるだけでぐっと強力になるね。
クラスなりdelegateなり関数ポインタなりを
std.algorithm.mergesort(array, compare)って渡すだけでソート出来て欲しい。
381デフォルトの名無しさん:2005/09/23(金) 23:23:28
言語使用を拡張して、
array.sort(algorithm,comparer);
ってのがかっこいい。
382デフォルトの名無しさん:2005/09/23(金) 23:36:04
というかarray.sortに比較関数渡せない現状って腐ってるんで早くどうにかして欲しいよね
383デフォルトの名無しさん:2005/09/23(金) 23:38:25
ソートくらい自分で書けばいいじゃない。
384デフォルトの名無しさん:2005/09/23(金) 23:40:42
データ構造とアルゴリズムってのはセットで覚える最適化技術だからねぇ
標準で実装してて欲しい分野じゃないかな
385デフォルトの名無しさん:2005/09/23(金) 23:41:21
比較関数渡せるようにするためだけにソート書くのって正直不毛な気がしてならん。
あと暗黙的関数テンプレートがないから微妙に使い勝手悪いし
386デフォルトの名無しさん:2005/09/23(金) 23:57:55
>>385
>あと暗黙的関数テンプレートがないから微妙に使い勝手悪いし
言われてみればその通りだな。

しかし配列に.sortあるとは知らなかった。これ正直気持ち悪いんだけどさ。
なんで>>380みたいになってないんだろう?
って、まさに暗黙的関数テンプレートがないからだったりして・・・
387デフォルトの名無しさん:2005/09/24(土) 00:17:48
忘れるな

D言語はシェアウェア厨のオナニーの成果物だということを
388デフォルトの名無しさん:2005/09/24(土) 00:25:36
暗黙的関数テンプレートがあれば、適当にSTLからコードを真似てalgorithm相当の部分が書けるんだけどねぇ。
現状phobosにもtemplateを使ったライブラリが殆ど無いからな。
あんまりtemplateに対するサポートは期待できそうにないなぁ。
389デフォルトの名無しさん:2005/09/24(土) 01:29:13
>>387
証明せよ
390デフォルトの名無しさん:2005/09/24(土) 10:54:28
.sortに渡す(ようにしたい)比較関数は
opCmpをオーバーライドすればいいんでない?
391デフォルトの名無しさん:2005/09/24(土) 11:01:55
>>390
構造体ソートとかどうするの?昇順、降順、カラムの優先順などなど。
Comparatorなるクラスを放り込めれれば
それをセッタで指定して、比較関数の内容を更新できる。
392デフォルトの名無しさん:2005/09/24(土) 22:47:08
ところで正式リリースの予定とか何も考えてないのかなぁ。
せめてMono以上には注目を集めてほしいもんだが。
393デフォルトの名無しさん:2005/09/25(日) 00:58:50
>>392
そりゃ無理だ
394デフォルトの名無しさん:2005/09/25(日) 01:03:03
暗黙的関数テンプレートって何?
非スタティックメンバにテンプレートは使えないってのとは違う?
395デフォルトの名無しさん:2005/09/25(日) 08:06:10
C++でいうところの
template<typename T>void f(T t){}
のような物。templateのパラメータを暗黙的に推論してくれる関数。

D言語ではtemplateのパラメータを自分で明示的に指定しなくてはならない。
396デフォルトの名無しさん:2005/09/25(日) 08:16:52
#defineが健在だったら

#define func(x) func!(typeof(x))(x)

みたいなことも出来たんだが。まあ無理矢理すぎるな。
#defineを復活させる理由にはならんし。
397デフォルトの名無しさん:2005/09/25(日) 09:38:25
やっぱ#defineって便利だよな
398デフォルトの名無しさん:2005/09/25(日) 09:49:17
便利なだけだったらいいんだけどな
399デフォルトの名無しさん:2005/09/25(日) 12:13:17
Linuxな話ですが、
Dで作った.soファイルってCからダイナミックリンクできますか?
インターフェースになる部分は

- test.d -
extern(C){
  int interface_c_to_d(char *data)
  {
   ...
  }
}

dmd -c test.d
gcc -shared -o libtest.so test.o

って感じを考えてます。
400デフォルトの名無しさん:2005/09/25(日) 17:13:16
DWTでDisplay.asyncExec()を使うとwin32exceptionがおきるんだけど
原因がわかりません。

どのように書けばいいのか教えてください。

以下Win32Exceptionがおきるコード
401400:2005/09/25(日) 17:13:47
import swt.all;
import std.thread;

class Hello
{
private Shell shell;
public Shell open(Display display)
{
shell = new Shell(display);
shell.open();
return shell;
}

public static void run()
{
Display display = Display.getDefault();
Hello hello = new Hello();
Shell shell = hello.open(display);
// スレッド作成
Thread th = new Thread(&foo, null);
th.start();

while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
402デフォルトの名無しさん:2005/09/25(日) 17:14:24
//続き
class Huga : Runnable
{
public void run()
{
}
}

int foo(void *nullpo)
{
Display.getDefault().asyncExec(new Huga()); //Win32Exception発生
return 0;
}

void main(char[][] args)
{
try{
Hello.run();
}catch(Object o){
MessageBox.showMsg(String.fromChar(o.toString()));
}
}

//以上
403デフォルトの名無しさん:2005/09/25(日) 23:41:29
いつのまにやら0.133だな。
404デフォルトの名無しさん:2005/09/26(月) 01:03:52
仕様変更は落ち着いたっていう認識でいいのかな?
やっと本格的に何か作る価値が出てきたのかな?
405デフォルトの名無しさん:2005/09/26(月) 01:18:08
いや、落ち着いたと思ったら一気に仕様が変わった事が何度もあるから、
明示的に仕様変更がフリーズされたことが発表されない限りは安心できない。
406デフォルトの名無しさん:2005/09/26(月) 01:20:21
関数テンプレートあたりが変わってくれるといいね
407デフォルトの名無しさん:2005/09/26(月) 10:23:47
早速Ddocの仕様が変わってるしw
408デフォルトの名無しさん:2005/09/26(月) 12:12:52



387 名前:デフォルトの名無しさん 投稿日:2005/09/24(土) 00:17:48
忘れるな

D言語はシェアウェア厨のオナニーの成果物だということを





409デフォルトの名無しさん:2005/09/26(月) 21:50:27
( ゚д゚)σ)Д`)オナニースキナクセニ
410デフォルトの名無しさん:2005/09/26(月) 22:52:04
オナニーじゃ子供はできんのですよ。
子供ができちゃった以上オナニーじゃないのですよ。
411デフォルトの名無しさん:2005/09/27(火) 03:21:51
じゃ、クローン。

D IS FOR DOLLY.
412デフォルトの名無しさん:2005/09/27(火) 15:33:40
質問です。
http://hp.vector.co.jp/authors/VA028375/d/windows.h.html
のサイトのライブラリを使用して LOGFONT 構造体を使いたいんですが、
リンク時にエラーが出ます:
 Symbol Undefined __init_5win326wingdi11tagLOGFONTW

そこで関数のインポート方法にならって *.def に次のように書いて *.lib を構築し、
リンクするとリンクエラーは出なくなります:
 LIBRARY 'gdi32.dll'
 EXPORTS
    __init_5win326wingdi11tagLOGFONTW = LOGFONTW

ところがこの方法では実行時に次のようなメッセージボックスが出ます:
 プロシージャエントリポイント LOGFONTW がダイナミックリンクライブラリ gdi32.dll から見つかりませんでした。

これはどのような方法で回避すればよいのでしょうか?
413デフォルトの名無しさん:2005/09/27(火) 17:01:57
一緒についてるwin32.libをリンカに渡すの忘れてるだけじゃね?
414412:2005/09/27(火) 17:32:14
>>413 その通りでした・・・orz
スレ汚しすいませんでした。
415デフォルトの名無しさん:2005/09/28(水) 01:16:26
D言語のプロパティってキャピタライズしない方がいいのかな?
visibleとかsizeとか、ローカル変数と衝突しそうで気持ち悪いんだが。
本家のスタイルガイドにはプロパティに関する記述はないし。
416デフォルトの名無しさん:2005/09/28(水) 08:21:29
ところでEclipseDってどうなっってんの?
417デフォルトの名無しさん:2005/09/29(木) 13:54:42
DIDEってもう公開してないんですか?
418デフォルトの名無しさん:2005/09/29(木) 17:02:27
象さんになったってことでしょ

個人的にはThebeがもうちょっと拡張されてくれればな、と思ってるんだけど
419デフォルトの名無しさん:2005/09/30(金) 09:09:56
DMD 0.134リリース

いつも報告してた人はどないしたの?
420デフォルトの名無しさん:2005/09/30(金) 21:53:52
Ddocばっかだな
どうでもいいとまでは言わないけど
なんかまたリリース版が遠のいた感じが
421デフォルトの名無しさん:2005/10/02(日) 01:04:49
typedef class Hoge{}
って書くとtypedefが無視されてHogeが宣言されたかのように扱われるんだが
これってバグでいいのか?
422デフォルトの名無しさん:2005/10/02(日) 01:14:30
ぽいね。
423デフォルトの名無しさん:2005/10/02(日) 17:35:42
std.dateを試しに使ってみたのですがいまいち思ったような動作をしてくれません

private:
import std.date;

int main(){
d_time tm1 = getUTCtime();
d_time tm2 = UTCtoLocalTime(tm1); // JSTに変換?
printf("%.*s\n", .toString(tm1));
printf("%.*s\n", .toString(tm2)); // JSTで表示されてほしい

return 0;
}

実行結果:
Sun Oct 02 08:27:00 GMT+0000 2005
Sun Oct 02 08:27:00 GMT+0000 2005

ローカルタイムに変換したつもりが同じ結果になってしまいます。
JSTが表示されるようにするにはどうしたらよいのでしょうか。

dmdのバージョンは0.134
OSはWindows2000 SP4です
424デフォルトの名無しさん:2005/10/02(日) 18:21:43
バグじゃねーの?
半年以上前にバグ報告されてるみたいだけど。
425デフォルトの名無しさん:2005/10/02(日) 18:24:16
多分、バグですね。
自分は諦めてstd.c.timeでお茶を濁してる。
426デフォルトの名無しさん:2005/10/02(日) 18:26:28
Win32版だとgetLocalTZAを弄れば直りそうな希ガス
427デフォルトの名無しさん:2005/10/02(日) 18:36:09
TIME_ZONE_ID_UNKNOWNを無視しちゃってるのね。
std.date.LocalTZAを上書きするって荒業はどうよ
428423:2005/10/02(日) 18:44:09
バグなんですか・・・・・・まあ仕事で使ってるわけじゃないので放置することにします。
回答ありがとうございました。
429デフォルトの名無しさん:2005/10/02(日) 23:52:48
以下のコードですが、1.を有効にするか2.を有効にするかで実行結果が変わってしまいます。
具体的には、1.を有効にすると出力は
 Welcome to C
 Welcome to D
 Welcome to D
2. を有効にすると
 Welcome to C
 Welcome to C
 Welcome to D
となります。
一体何が起きているんでしょうか。
430デフォルトの名無しさん:2005/10/02(日) 23:53:19
import std.stdio;
const char[] g_str = "Welcome to D";
char[] getHello() {
   return g_str;
}
int main() {
   char[] hello;
   hello = g_str;        // 1.
//  hello = getHello();      // 2.
   hello[$-1] = 'C';
   writef("%s"\n, hello);
   writef("%s"\n, getHello());
   writef("%s"\n, g_str);
   return 0;
}
431デフォルトの名無しさん:2005/10/03(月) 00:19:59
constを書き換えようという根性に乾杯。
まぁ書き換えたいならconst外せっていう話は置いといて、
constはそこに直接定数を書くのと同じって扱いみたいだな。

hello = g_str; が
hello = "Welcome to D" という風に解釈されて別の文字列とメモリを共有しないと。

まぁ同じ文字列ならメモリの無駄ですから書き換えを完全に禁止にして、
メモリを共有して欲しいですな。
432デフォルトの名無しさん:2005/10/03(月) 00:45:29
ああ、なるほど・・・納得しました。どうもサンクスです。
const char[] hoge() {...}
っていうコードがエラーになるのでいろいろやってるうちにこんな変なコードを
書くに至ったんですが、D では書き換え不可な配列ってないんですかね。

関数内外で書き換えられていないことを保障するためにあった方がいいと思うんですがねえ。
433デフォルトの名無しさん:2005/10/03(月) 01:34:36
これ単なるバグでしょ?仕様だったらすこし引いちゃうかも。
gdcだとconstがあってもなくても hello[$-1] = 'C'; のとこで
Bus error (core dumped) になるのが悲しい。
434デフォルトの名無しさん:2005/10/03(月) 19:58:19
constはDでは定数であることを宣言する。
つまり、コンパイル時に値が確定しているということですね。

Walter氏は値が不変という意味のconstは大嫌いみたいですが。
435デフォルトの名無しさん:2005/10/03(月) 21:18:45
正直、char[][char[]]等という連想配列の宣言がどうも気持ち悪い。
436デフォルトの名無しさん:2005/10/03(月) 21:32:23
>>435
var[文字列]が文字列要素を返す連想配列の事?
可変長の変換テーブル作るのに便利じゃん。
437デフォルトの名無しさん:2005/10/03(月) 21:37:52
>>435
割と直感的だと思うけどな。
438デフォルトの名無しさん:2005/10/03(月) 21:40:59
Dはcharが神聖化されすぎている。
int[][int[]]じゃ駄目なのか
439435:2005/10/03(月) 21:51:30
>436
そういうことじゃなくて、型の宣言のしかたがいまいち慣れなくて違和感を覚えるというか。
まあ437の言うように、慣れればOKなのかもしれないけど。
440デフォルトの名無しさん:2005/10/03(月) 21:54:07
>>438
ダメなのか・・・って。
そういう使い方もできるけど、用途はあんまり思いつかないなあ。

int main()
{
int[][int[]] iiaa;
int[] ia1,ia2,ia3;
ia1 ~= 1;
ia2 ~= 2;
ia3 ~= 3;
ia3 ~= 4;
iiaa[ia1]=ia3;
iiaa[ia2]=ia1;
iiaa[ia3]=ia2;

printf("%d\n",iiaa[iiaa[iiaa[ia3]]][1]);
return 0;
}
441デフォルトの名無しさん:2005/10/03(月) 21:57:06
せめてint[][int]なら使いでがありそうだったのに
442デフォルトの名無しさん:2005/10/03(月) 21:58:51
charは文字にだけ使えって意味でしょ。wcharやdchar然り。
443デフォルトの名無しさん:2005/10/03(月) 22:01:37
int[int[int[][int][]]]
444デフォルトの名無しさん:2005/10/03(月) 22:02:55
aliasを使えばOK

alias char[] string;
string[string] a;
445デフォルトの名無しさん:2005/10/03(月) 22:21:44
>>440
int[][][]じゃだめなのか?w
446デフォルトの名無しさん:2005/10/04(火) 03:38:46
>>445
飛び番だと困るじゃないか.
447デフォルトの名無しさん:2005/10/04(火) 17:25:05
DMD 0.135 release (Ddoc update)

Another extensive update of Ddoc, www.digitalmars.com/d/ddoc.html

This one adds color syntax highlighting of D code, and the ability to
process any document, not just D modules. A big chunk of the D documentation
was converted to using Ddoc, you can see it in the color syntax
hightlighting!

I hope to get back to regular bug fixing after this.

http://www.digitalmars.com/d/changelog.html
448デフォルトの名無しさん:2005/10/04(火) 18:22:48
ディーエムディーって響きがカッコイイよな
449デフォルトの名無しさん:2005/10/04(火) 18:35:26
カラーの履歴なんて初めて見たよ。これはもう正式版かもわからんね。
450デフォルトの名無しさん:2005/10/04(火) 19:13:21
version0.128で止まってる俺はついていけない・・・ orz
451デフォルトの名無しさん:2005/10/06(木) 00:49:33
最新版を入れろ、それも今すぐにだ!
452デフォルトの名無しさん:2005/10/07(金) 00:53:18
ttp://gba.imou.to/gcc.html
を参考にarm-agb-elf用のgcc環境を作成し、
同時にgdc-0.15も作成しようとしてるのですが、
phobosのconfigureで"ハネられてしまいます。
どなたか成功された方がおられたら、ご教授
よろしくお願いします。
453デフォルトの名無しさん:2005/10/07(金) 22:53:21
>>447
lが見えない
454デフォルトの名無しさん:2005/10/08(土) 00:10:25
news.digitalmars.com
って落ちてる?
俺だけ?
455デフォルトの名無しさん:2005/10/08(土) 00:40:49
落ちてるぽいですな
456デフォルトの名無しさん:2005/10/08(土) 18:36:28
D言語でライブラリ作りたいんだがなんか特殊な作法とかあるの?
OSはWin以外って事で
457デフォルトの名無しさん:2005/10/08(土) 18:36:30
まだ、復旧してないですな
458デフォルトの名無しさん:2005/10/09(日) 07:48:38
>>456
ちゃんと開発を続けること
459デフォルトの名無しさん:2005/10/09(日) 08:39:06
JavaでいうArrayListを配列スライスで表現しようと思ったけど
同じ領域のコピーはダメなんだったっけか。
新しいの作ったほうがいいのかな?
460デフォルトの名無しさん:2005/10/09(日) 20:41:04
>>459
ArrayListとスライスの関連がよくわからん。くわしく。
461デフォルトの名無しさん:2005/10/09(日) 20:48:42
list.remove(i);
で切り詰めコピーができない
462デフォルトの名無しさん:2005/10/09(日) 22:28:43
removeの中身を自分で書くのなら、スライスにこだわらず、いくらでも書きようがあるだろう。

しかし、リストはリストであって配列とは異なるデータ構造ではあるな。
463デフォルトの名無しさん:2005/10/09(日) 22:34:21
代入演算子のオーバーロードが無いんだから、素直にmemmove呼ぶのが良いんじゃないの
464デフォルトの名無しさん:2005/10/10(月) 14:44:36
構造体を一度、配列に確保してからforで各構造体のメンバに値を代入していくってできないのか?
465デフォルトの名無しさん:2005/10/10(月) 15:03:11
すいません。教えてください。
コンパイルしようとすると以下のメッセージがでて失敗します。
object.d: module object cannot read file 'object.d'
dmd\src\phobosにobject.dがあったのでそれをソースのある場所と
同じところにおいたらコンパイルできました。
いちいちobject.dをソースのある場所に置くのは馬鹿らしいと思うのですが、
なんかpassみたいな環境変数があってそれを設定すればobject.dをソースと
同じ場所に置かなくてもすむようになるのでしょうか。
環境はWinXP+Cygwinです。
466デフォルトの名無しさん:2005/10/10(月) 15:08:25
>>465
Win側の環境変数をいじれ
467デフォルトの名無しさん:2005/10/10(月) 15:11:06
環境変数てpathですか?
pathじゃだめだったんですが。
なにかほかの変数があるのでしょうか。
468デフォルトの名無しさん:2005/10/10(月) 15:22:33
sc.iniはどうなってるんだろう?
469デフォルトの名無しさん:2005/10/10(月) 15:39:02
こんな感じでした。

dmd/sc.ini
[Version]
version=7.51 Build 020

[Environment]
LIB="%@P%\..\lib";\dm\lib
DFLAGS="-I%@P%\..\src\phobos"
LINKCMD=%@P%\..\..\dm\bin\link.exe


dm/sc.ini
[Version]
version=7.51 Build 020

[Environment]
PATH=%PATH%;"%@P%\..\bin"
BIN="%@P%\..\bin"
INCLUDE="%@P%\..\include";"%@P%\..\mfc\include";%INCLUDE%
LIB="%@P%\..\lib";"%@P%\..\mfc\lib";%LIB%
HELP="%@P%\..\help"

これをいじれば良いんですか。
470デフォルトの名無しさん:2005/10/10(月) 22:09:10
>pathじゃだめだったんですが。
無駄口グダグダ抜かす前にやったことを正確に書け
471デフォルトの名無しさん:2005/10/12(水) 15:56:57
半角スペースが入ってる名前のフォルダにdmd入れるとダメ、
とかじゃなったっけ、それ
472デフォルトの名無しさん:2005/10/12(水) 17:57:34
>>471
本当だ。
DFLAGS="-I\"%@P%\..\src\phobos\""
にすれば動くね

akIDEを使ってるんだけど、同様の問題でソースパスに
スペースが入ってるケースでも駄目なんだよね。
dmdがリンカに渡す際に二つに分かれてしまう
これはリンカのラッパを書けばok
473465:2005/10/12(水) 22:55:53
>>471
おっしゃるとおりProgram Filesにdmd入れてました。
解決しました。
ありがとうございます。
474デフォルトの名無しさん:2005/10/13(木) 00:29:29
ちょっと怖いのでageときますね
475デフォルトの名無しさん:2005/10/13(木) 20:10:37
dmdはwin32とlinux版以外に作る予定はないのかしら?
476デフォルトの名無しさん:2005/10/13(木) 20:24:33
dmcを見れば答えはわかるだろ
477デフォルトの名無しさん:2005/10/13(木) 20:25:09
とりあえず、その二つだけで、ユーザー層の90%以上には対応するでしょうから、
dmdはそれだけでしょうね。
478デフォルトの名無しさん:2005/10/13(木) 21:13:53
>>477
じゃあ俺はユーザー層の10%以下の中にいるってことか・・・
479デフォルトの名無しさん:2005/10/13(木) 21:21:09
WinもLinuxも使ってない開発者となると、それこそ1%じゃ済まないんじゃない?
480デフォルトの名無しさん:2005/10/13(木) 21:46:15
C or Objective-Cぐらいしか選択肢がないんで
481デフォルトの名無しさん:2005/10/13(木) 21:48:30
macですか
482デフォルトの名無しさん:2005/10/13(木) 22:01:02
>>481
そうです。今はgdc使ってますがやっぱりね〜
483デフォルトの名無しさん:2005/10/13(木) 22:49:50
あれ、macって消滅したんじゃなかったっけ?
484デフォルトの名無しさん:2005/10/14(金) 06:34:01
SUNが採用してるんだからUNIXにも対応するだろ
485デフォルトの名無しさん:2005/10/14(金) 07:08:34
http://www.kmonos.net/alang/d/lex.html
に"16進整数は、'0x' で始まるかまたは 'h' で終わる、 0,1,..,9,A,..,F,a,..,f の並びです"
って書いてあってFFhとか0xFFh試してみたけどコンパイル通らない。
これってドキュメントのミスで、昔の仕様かなんかが残ってるだけ?
486デフォルトの名無しさん:2005/10/14(金) 07:14:15
>>484
SUNが使ってるのは同名だけど全然別の物
487デフォルトの名無しさん:2005/10/14(金) 16:23:21
>>485
Hexadecimal:
 0x HexDigits
 0X HexDigits
としか書いてないから、文章の誤りですね。

単純に考えれば、FFhと書いてあったら、識別子と区別がつかないので、
そんな仕様にするわけがないのに、何でそんなミスをやってるんだろう。。。
488デフォルトの名無しさん:2005/10/15(土) 01:03:54
ソース見てみたけどその部分を処理するパスは一応書かれてるな。
マクロ"ZEROH"が定義されてないからコメントアウトされてるが。
489デフォルトの名無しさん:2005/10/15(土) 21:08:35
iftypeはいつドキュメントから消えるのだろう(あるいはobsoleteと明記されるのだろう)
490デフォルトの名無しさん:2005/10/18(火) 02:12:27
D 0.136
でたよ
491デフォルトの名無しさん:2005/10/19(水) 01:07:54
だから何
492デフォルトの名無しさん:2005/10/19(水) 01:39:51
0.136カワイソス(´・ω・`)
493デフォルトの名無しさん:2005/10/20(木) 15:14:04
elephant 0.30リリース
494デフォルトの名無しさん:2005/10/20(木) 18:50:29
だから何
495デフォルトの名無しさん:2005/10/20(木) 19:18:29

     〃∩ ∧_∧
     ⊂⌒( ´・ω・)  はいはいカワイソスカワイソス
       `ヽ_っ⌒/⌒c
          ⌒ ⌒

     ∧_∧
  ⊂(#・ω・)  カワイソスって言ってんだろ!!
   /   ノ∪
   し―-J |l| |
           人ペシッ!!
         __
         \  \
496デフォルトの名無しさん:2005/10/21(金) 22:59:26
ttp://l.skr.jp/vip130493.gz.html

テキトーにモジュール作ってみたんだけどどうよ?
497デフォルトの名無しさん:2005/10/22(土) 09:56:54
どうよっていわれても開けんからなぁ
498デフォルトの名無しさん:2005/10/22(土) 12:24:55
こっちの環境じゃエスケープシーケンス使えんから評価できん。
まぁ適当にソースだけ読むと、ファイル名以外、
特に突っ込むとこもない、普通の書き方だな
499デフォルトの名無しさん:2005/10/22(土) 19:19:14
カワウソス
500デフォルトの名無しさん:2005/10/22(土) 21:56:01
gdcでextern (C)で関数の宣言したらシンボル名のアンダースコアが削られるんだけどなんでかな?
おれが書いたアセンブリ側のソースがおかしいかな?
501デフォルトの名無しさん:2005/10/23(日) 01:08:59
C言語のexitに対応する関数って何ですか?
std.c.stdlib.exit()しかないの?
502デフォルトの名無しさん:2005/10/23(日) 08:09:03
適当に終了用クラス作って、それを例外で投げれば?
503デフォルトの名無しさん:2005/10/23(日) 12:56:37
正常終了の時にも例外投げるってのはあんまり気持ちが良くないと思う
504デフォルトの名無しさん:2005/10/23(日) 13:06:13
>>503
制御構造における例外の便利さを知らないという発言に聞こえる
505デフォルトの名無しさん:2005/10/23(日) 13:09:00
>>503
同意

次にSTLあたりを挙げて反論が来るんだろうがw
506デフォルトの名無しさん:2005/10/23(日) 13:09:34
>>504
例外を単なる制御構造としてしか見ていないという発言に聞こえる。
507デフォルトの名無しさん:2005/10/23(日) 13:20:05
最初のところでつまづいてるんだが

stdoutがデファインされとらんとか言われて
てっきり、ライブラリにパスが通ってないとかかと思ってさんざん悩んだ挙句

さっき公式で検索かけたらstdoutがD0.126で非推奨になりましたーとか書いてあるしOTL
もしかして、stdoutって、もう使えない?
508デフォルトの名無しさん:2005/10/23(日) 13:23:43
printfが特別に残されているんだしvoid exit(int)も組み込みで用意して欲しい。
でないとちょっとしたツールとかでメンドクサイ。
メンドクサイという事は創作意欲を損ねてしまい、結果Dで作る必要性もなくなる。
509デフォルトの名無しさん:2005/10/23(日) 13:30:50
>507
import std.cstreamしてdout使えばいいんじゃない

>508
import std.c.stdlibはそんなにめんどくさいか?
510デフォルトの名無しさん:2005/10/23(日) 13:42:33
>>506
はあ?504がそんな主張に見えるお前は
プログラム言語より日本語勉強しろよ(藁
511デフォルトの名無しさん:2005/10/23(日) 15:10:10
>>510
実のない人格攻撃でスレ浪費するな。
512デフォルトの名無しさん:2005/10/23(日) 15:29:59
gc.addRange(>>510, >>511);
513デフォルトの名無しさん:2005/10/23(日) 22:05:29
exitが単に_exit呼ぶだけならいいんだけどな
514513:2005/10/23(日) 22:18:54
お、ぜんぜん関係なかったです。すまそん
515デフォルトの名無しさん:2005/10/25(火) 11:19:57
0.137
516デフォルトの名無しさん:2005/10/25(火) 13:10:44
バグリストってどこかにある?
DWikiに載ってないのかな?

517デフォルトの名無しさん:2005/10/25(火) 17:02:44
http://dstress.kuehne.cn/
にテストケースつきで載ってる。
518デフォルトの名無しさん:2005/10/25(火) 17:58:06
なんだよcnドメインって中国かよ
519デフォルトの名無しさん:2005/10/25(火) 21:18:23
>>517
公式なのは、ないのか・・・
昔からのバグとか、ステータス状態みたかったんだが
520デフォルトの名無しさん:2005/10/25(火) 21:35:07
D言語って、オリジナルのソースがないとimportできないものなの?
生成されたバイナリからシンボルをimportすることできないの?
Javaだったら、コンパイルされてできた.classファイルからシンボルをimportできるよね。
Dだと、元のソースが必須になってしまってかっこわるい。
521デフォルトの名無しさん:2005/10/25(火) 22:03:27
別に元のソースは必須じゃないけどな、、、インポート用に中身のない宣言だけのソースを別に作れば、、、

ま、旧来のobjファイルを使ってるが故の制限ではある。
522520:2005/10/25(火) 22:42:41
>>521
ほうほう、宣言だけのソース作ればいいっと… って、C/C++のヘッダファイルと変わんないじゃん!
importするだけでリンクまでできちゃえばいいのに。

わざわざ、importを書いて、またコンパイラに各モジュールをパラメータとして書いてやるのがめんどい。
せっかくJavaの使いやすさとC/C++の小回りの良さを持ってるんだから、あとちょっとなのになぁ
523デフォルトの名無しさん:2005/10/25(火) 22:43:42
.NETにおけるDLLはソースなくても宣言がひっぱり出せるからそれでライブラリのインポートできるんだがなぁ。
GCCがこれに対応してくれりゃ問題ないんだが。
524520:2005/10/25(火) 23:02:57
そうそう、そんな感じの実装がほしい。
525デフォルトの名無しさん:2005/10/25(火) 23:20:51
>>524
news.digitalmars.com
へリクエストするんだ!

って、また落ちてる?
526デフォルトの名無しさん:2005/10/25(火) 23:41:49
一応、pragmaでライブラリのリンクはできたと思うんで、
インポートされるファイル中に入れておけば自動リンクできたりしないかな。

普通のソースから宣言のみのソースを生成するのは難しくはないよね。
DMD本体に持って欲しいな。
527デフォルトの名無しさん:2005/10/26(水) 00:49:57
だから宣言(ry
528デフォルトの名無しさん:2005/10/26(水) 03:07:59
>515
added implicitまで読んでついにテンプレートの暗黙実体化が来たかと喜んだ。
違った。
529デフォルトの名無しさん:2005/10/26(水) 11:24:36
>>515
型推論のautoとRAIIのautoで2重の意味でautoが使われてるのが少しキモイなぁ。
RAIIのほうは別の予約語導入したほうがいいんちゃう? とか思ってしまう。
530デフォルトの名無しさん:2005/10/26(水) 15:02:07
>>528 お前は俺か。
531デフォルトの名無しさん:2005/10/26(水) 17:09:43
俺のものは俺のもの。
お前のものは俺のもの。
532デフォルトの名無しさん:2005/10/26(水) 18:01:28
俺の物は俺の物。
お前は俺の物。
533デフォルトの名無しさん:2005/10/26(水) 18:18:32
>>532
ちょっと待った!
今のは聞き捨てならないぞ!!
534デフォルトの名無しさん:2005/10/26(水) 18:26:09
D言語で8進数の値の表現はどうしたらいいの?
535デフォルトの名無しさん:2005/10/26(水) 18:36:33
C/C++と同じく数値リテラルの先頭に0をつける
010が10進数で8になる
536デフォルトの名無しさん:2005/10/26(水) 18:40:39
>>532
おい!
537デフォルトの名無しさん:2005/10/26(水) 18:46:31
>>535
Thanks.
Cと一緒なんだな
538デフォルトの名無しさん:2005/10/26(水) 23:37:35
Cで読めるものはCで動く
が一応のコンセプトだしね
ところどころ違ってるだろうけど
539デフォルトの名無しさん:2005/10/28(金) 22:31:33
 
540デフォルトの名無しさん:2005/10/29(土) 04:10:47
  <⌒/ヽ-、___
/<_/____/
541デフォルトの名無しさん:2005/10/29(土) 04:20:14
やっぱD言語は間違った方向に行ってるな。
設計してる奴相当のアホだわ。
542デフォルトの名無しさん:2005/10/29(土) 07:31:49
じゃあ、お前が作り直せ
543デフォルトの名無しさん:2005/10/29(土) 09:18:37
Code::Blocks
The open source, cross platform Free IDE.
http://www.codeblocks.org/
544デフォルトの名無しさん:2005/10/29(土) 11:53:39
いちいちSJISに変換しなきゃいけないのが面倒くつすぎて日本人には使えない言語ですな
545デフォルトの名無しさん:2005/10/29(土) 13:40:40
お、かな入力か
546デフォルトの名無しさん:2005/10/29(土) 18:24:54
UNICODE?
547デフォルトの名無しさん:2005/11/05(土) 15:00:27
一週間カキコ無しage
548デフォルトの名無しさん:2005/11/05(土) 15:06:51
いまさら作りたいものなんて無いんだよな
もう言語仕様じゃなくてライブラリの時代だからめんどいだけ
549デフォルトの名無しさん:2005/11/05(土) 15:45:15
まともなIDEがあればなぁ。
550デフォルトの名無しさん:2005/11/05(土) 17:29:37
またくだらんものを作ってしまった・・・orz
ttp://www.vipper.org/vip137190.gz
551デフォルトの名無しさん:2005/11/05(土) 18:37:45
>>550
ぶーんて、あーた、vipperかい!
552デフォルトの名無しさん:2005/11/07(月) 07:57:22
dmd 0.138
553デフォルトの名無しさん:2005/11/07(月) 10:01:50

     〃∩ ∧_∧
     ⊂⌒( ´・ω・)  はいはいカワイソスカワイソス
       `ヽ_っ⌒/⌒c
          ⌒ ⌒
554デフォルトの名無しさん:2005/11/07(月) 18:07:19
 ∧ ∧
(*‘ω‘ *)  ちんぽっぽ
 (   )
  v v    
       ぼいんっ
   川
 ( (  ) )
ttp://www.vipper.org/vip138077.tgz
555デフォルトの名無しさん:2005/11/07(月) 22:59:46
0.138の"string"[constant]が定数になるのを利用すると、
こういうtemplateを作れるのか。

template ULtoString(ulong n,int b:0){
    const ULtoString = .ULtoString!(n/10,n/10 < 10) ~ "0123456789"[n%10..n%10+1];
}
template ULtoString(ulong n,int b){
    const ULtoString = "0123456789"[n%10..n%10+1];
}
template ULtoString(ulong n){
    alias .ULtoString!(n,n<10) ULtoString;
}
int main(){
    printf("%.*s",ULtoString!(1002));
    return 0;
}
これ以外にもオモロイ使い方ありそうな気がするけど思いつかない......
556デフォルトの名無しさん:2005/11/07(月) 23:52:18
>>555
そういうコードがNewsgroupsに投稿されてたよ。
で、
template digittostr(int n) {
const char [] digittostr="0123456789"[n]; // これがうごかねー
}

という話があったかと。

ちなみに、こんなコード。
template inttostr(int n)
{
static if (n<0) const char [] inttostr = "-" ~ .inttostr!(-n);
else static if (n<10) const char [] inttostr = digittostr!(n);
else const char [] inttostr = .inttostr!(n/10) ~ digittostr!(n%10);
}
static ifの使用例だね。
557555:2005/11/08(火) 01:33:50
>>556
残念。同じネタを既に出してる人いたのか。
その人になんとなく負けた気がするので、対抗意識燃やして文字列をパースして数値型に変換するのを書いてみた。

template SubString(T,int s,int e){
    typedef char[] SubString = T.init[s..e];
}
template Str2L_(T){
    static if(T.init.length == 0){
        const r = 0l;
    }else static if(T.init[0]=='-'){
        const r = -.Str2L_!(SubString!(T,1,T.init.length)).r;
    }else{
        const r = T.init[T.init.length-1]-'0' + 10 * .Str2L_!(SubString!(T,0,T.init.length-1)).r;
    }
}
template Str2L(T){
    alias Str2L_!(T).r Str2L;
}
int main(){
    typedef char[]str ="-232";
    printf("%lld",Str2L!(str));
    return 0;
}
558デフォルトの名無しさん:2005/11/08(火) 20:37:55
0.139
559デフォルトの名無しさん:2005/11/08(火) 23:36:21
gdc0.16にアップデートしてみた・・・


やっとDdoc使えるや
560デフォルトの名無しさん:2005/11/09(水) 05:44:41
MessageBoxAはあるけどMessageBoxWは無いんだよなあ
日本語でメッセージを出すにはどうしたらいいんだろう
561デフォルトの名無しさん:2005/11/09(水) 06:22:42
std.fileのtoMBSzを使ってA系のAPIに渡すのが一番楽だと思う。
W系のAPI使いたいなら、どこかから
まともなwindows.hのポーティング拾ってくる必要が。
562デフォルトの名無しさん:2005/11/09(水) 06:37:52
> toMBSz
おお、そんなのあったんだ
ありがとう、dクス
563デフォルトの名無しさん:2005/11/09(水) 14:39:18
MessageBoxWぐらいなら、自分で引いて宣言してもいいんだけど、
あれもこれもとなると面倒くさくなるんだよな。
機械的に変換できるのが最良だけど、SDKのヘッダファイルはめちゃくちゃだからなあ。
564デフォルトの名無しさん:2005/11/09(水) 21:38:25
>>412 のリンク参照
565デフォルトの名無しさん:2005/11/09(水) 23:38:01
566デフォルトの名無しさん:2005/11/12(土) 20:15:55
どこかにD言語のマルチスレッドのサンプルプログラムありませんか。
567デフォルトの名無しさん:2005/11/12(土) 20:23:10
568デフォルトの名無しさん:2005/11/12(土) 21:53:41
>>567
サンクスです。
569デフォルトの名無しさん:2005/11/16(水) 23:38:24
Dでアプリを作っているんだが、
GCが動くとそれまで2MBだったメモリ使用量が一気に300MBまで
上がったりするんだけど、そういうことってありえる?(GC使うの初めて・・・)
アプリが悪いってのは分かっているんだが、
どういうことをしたらそうなるのか分からないたすけて。

アプリはマルチスレッドでスレッド間でメッセージのやり取りしまくりで
ソケットも使いまくってる。
570デフォルトの名無しさん:2005/11/17(木) 21:55:18
CgとかGLSLみたいに、4次元までのベクトルと行列を言語でサポートして欲しいなぁ。
571デフォルトの名無しさん:2005/11/17(木) 22:09:49
問題点は、たとえば、単なる多次元配列との区別かな。
572デフォルトの名無しさん:2005/11/18(金) 22:30:18
>>569
バグとして報告したほうがいいんじゃない?
俺はそんな経験なかったし、気になるね
573デフォルトの名無しさん:2005/11/18(金) 23:09:49
最近ちょっとさわり始めたけど、better C、light C++としてはかなり便利で手軽だと言う印象。
コンパイル早いのがいい。
574デフォルトの名無しさん:2005/11/19(土) 07:21:44
>>569
D言語のマルチスレッドはまだまともに実装されてないって聞いたよ
575デフォルトの名無しさん:2005/11/19(土) 20:40:19
せっかくPowerPC G5なのにreal型は64bitしかないよ・・・
AltiVecがあるのに・・・
576デフォルトの名無しさん:2005/11/21(月) 12:09:37

D言語からLunaを使う情報とか、どこかにないすっか?
577デフォルトの名無しさん:2005/11/21(月) 18:37:30
何も考えなくてもいいと思うのだが。
578デフォルトの名無しさん:2005/11/21(月) 21:14:54
Lunaって ttp://www.twin-tail.jp/ のアレだよね?
だったら、これくらいしか思いつかないな

1 ライブラリのソースをDに書き直す (Direct Xはどうするんだろう)
2 VCとかでライブラリのソースを無理やりC言語ライクにラッピングしてDLL化した後、
そのDLLをナントカして組み込む
579576:2005/11/21(月) 22:46:20
そうです。そのアレです。

ttp://shinh.skr.jp/d/cpplink.html
とか SWIG for D とか、難しくてよく理解できんかった。

DLL化するのが現実的ですよね。
D以外の他言語向けにDLLにして人とかも皆無?
580デフォルトの名無しさん:2005/11/22(火) 00:16:28
D言語でDirectX触れないんだっけ?
581デフォルトの名無しさん:2005/11/22(火) 11:54:49
そりゃ、api呼べば触れますよ。

ある程度のラッパークラス作ってくれてる人も居ます。
ttp://hp.vector.co.jp/authors/VA031566/d_direct3d9/

これ拡張しろよ。って言われれば其れまでなんですけど
Lunaレベルのライブラリまで造りこむスキルも時間もないです。
582デフォルトの名無しさん:2005/11/23(水) 02:37:26
DBuilderが出るまでオレは待つ
583デフォルトの名無しさん:2005/11/23(水) 05:19:24
.NET対応のネイティブコンパイルできないVisualD++が先に出る
584デフォルトの名無しさん:2005/11/23(水) 13:59:18
そういえば、D.NETって誰か作りかけてたけど、もう完全に消えちゃったのかな?
585デフォルトの名無しさん:2005/11/24(木) 10:40:55
eclipseDは?
586デフォルトの名無しさん:2005/11/24(木) 12:25:12
要望が多そうだと思われる事。

・IDE
・RAD
・GCをオプションに
587デフォルトの名無しさん:2005/11/24(木) 12:47:50
↑追加
・早急にver1.0をリリース
588デフォルトの名無しさん:2005/11/24(木) 14:05:48
所詮シェアウェア厨のオナニー言語だから
589デフォルトの名無しさん:2005/11/24(木) 14:44:52
>>588
('A`)?

痛々しい発言だな (´゚c_,゚` )プッ
590デフォルトの名無しさん:2005/11/24(木) 20:52:10
誰か作ってくれよん。
591デフォルトの名無しさん:2005/11/24(木) 22:32:36
何を?
592デフォルトの名無しさん:2005/11/24(木) 22:36:45
D言語ってシェアウェアなの?
593デフォルトの名無しさん:2005/11/24(木) 22:37:15
あのさ、char を(一文字の)char[]にしたい時って
「cast (char[]) c」ではうまくいかないから
俺は「"" ~ c」ってやってるんだけど
これってどうなのかね?
もっとうまいというか、一般的な方法があったら
教えてもらえると勉強になるんだけど
594デフォルトの名無しさん:2005/11/24(木) 22:37:42
>>592
違かろう
595デフォルトの名無しさん:2005/11/24(木) 22:52:33
>>592
588は頭の弱い子だから同情の眼差しでほっといてあげてください。
596デフォルトの名無しさん:2005/11/25(金) 13:38:05
dmd 0.140 リリース
ダカラナニ?
ハイハイカワイソスカワイソス
597デフォルトの名無しさん:2005/11/25(金) 14:57:07
>593
俺は「c[0 .. 1]」を使っている。
598デフォルトの名無しさん:2005/11/25(金) 22:04:13
>>597
(&c)[0 .. 1]じゃなくて?
599597:2005/11/25(金) 22:34:05
> (&c)[0 .. 1]じゃなくて?
すまん、適当に書いてた。それで合ってる。
600デフォルトの名無しさん:2005/11/25(金) 23:10:32
なるほど。こういうときに、配列リテラルがあれば役に立つんだね。
601デフォルトの名無しさん:2005/11/25(金) 23:17:13
>>592
D言語が完成したらシェアウェア化されるはず。
いまはまだ試作段階。
602デフォルトの名無しさん:2005/11/26(土) 00:07:03
>>601
はず?
なんだ、ただの希望的観測か。
603デフォルトの名無しさん:2005/11/26(土) 00:07:18
>>597
なんと。そんな手があったか
つーか char* から char[1] へ
そんなふうに変換できるのも心得てなかったわ
勉強になりますた
604デフォルトの名無しさん:2005/11/26(土) 00:39:32
>>602
過去の実績からみてもシェアウェア化は確実。
605デフォルトの名無しさん:2005/11/26(土) 00:54:37
GDC(GCCのD言語版)があるから気になるところではないけどな。
606デフォルトの名無しさん:2005/11/26(土) 05:09:05
ちょっと教えてほしいことがあるのですが
シャアウェアをインストロールしたらレジスターが
書き換えられてディスクトップがぐちゃぐちゃになって、
エキスプローラでホルダーをクィックしても動かなく
なってしまいました。どうすればレジスターを修復で
きますか? ソフトはWindous95で機種はBMWの
アクティバです。接続環境はフレッシュISBNです。
ヤッホーやゴーグルなどの検索で調べても解らないので
ツーチャンネルの皆様、ご指導よろしくお願いします。
607デフォルトの名無しさん:2005/11/26(土) 06:22:47
はいはい
608デフォルトの名無しさん:2005/11/26(土) 06:24:17
わろすわろす
609デフォルトの名無しさん:2005/11/26(土) 14:28:15
シャア専用板行け。
610デフォルトの名無しさん:2005/11/26(土) 14:52:38
いちいち全部間違えているのでネタだとわかる好例。
611デフォルトの名無しさん:2005/11/26(土) 15:10:20
ひとをだますときは本物の中に嘘を入れると良いってNASAの人も逝ってた
612デフォルトの名無しさん:2005/11/26(土) 17:08:40
というかもともとそういうネタだろ!
マジレスカコワルイ
613デフォルトの名無しさん:2005/11/26(土) 17:15:54
GDCがあるからきにしないでいいよって おかあさんがゆってた
614デフォルトの名無しさん:2005/11/26(土) 18:38:01
しかしGNUも有料化
ソフトウェアをタダで使う精神が間違ってたとRMSも猛省
615デフォルトの名無しさん:2005/11/26(土) 18:38:37
GCC is not an open-source program by Richard Stallman
http://news.com.com/GCC+is+not+an+open-source+program/2009-1081_3-5634298.html
616デフォルトの名無しさん:2005/11/26(土) 21:35:36
プププー、GNUは昔から「金は取らない」なんて言ってませんよ?
617デフォルトの名無しさん:2005/11/26(土) 21:41:30
>>616
だがやらなかった。
何故か?
所詮同じ穴のムジナだからだ。
でもこれからは違う。
618デフォルトの名無しさん:2005/11/27(日) 00:24:31
そんときはそんとき
619デフォルトの名無しさん:2005/11/29(火) 20:34:18
タダだからこそバザールが機能したんだよ
金を取るならまた違うOSSに流れていってそっちにに駆逐されるだけ
620デフォルトの名無しさん:2005/11/29(火) 20:50:44
Dスクリプt…いや、何でもない。
621デフォルトの名無しさん:2005/11/29(火) 22:15:08
バザールとか言われても、バザールでござーるしかわかんねーよバカ
622デフォルトの名無しさん:2005/11/29(火) 22:18:16
JavaにはGUIアプリ開発が可能なNetBeansがある。
DMも最低限それくらい用意して1.0と同時に発表するんだろ?
623デフォルトの名無しさん:2005/11/30(水) 02:34:36
Javaは伽藍?
624デフォルトの名無しさん:2005/11/30(水) 10:26:12
>>622
IDE付は有償になるだろうな。
625デフォルトの名無しさん:2005/11/30(水) 21:23:46
EclipseのJDTを八苦してD用に作り変えるのって逆に遠回りかな?
626デフォルトの名無しさん:2005/11/30(水) 21:33:07
>>624
有償か
ものにもよるけど、4万くらいまでならいいかな。
Flashとかに比べたら屁でもない値段だ。
627デフォルトの名無しさん:2005/11/30(水) 21:42:37
問題はDの案件が来るのかどうかだが。
628デフォルトの名無しさん:2005/11/30(水) 22:01:32
物を作って証明してけばいいんだよ。
「早いJavaです。メモリをアホみたいに食うバグを改善しました」
みたいな
629デフォルトの名無しさん:2005/11/30(水) 22:15:18
>>628
じゃ、Mac版お願いとかいわれたらどうすんの?w
630デフォルトの名無しさん:2005/11/30(水) 22:18:32
gdcでごまかすか。
631デフォルトの名無しさん:2005/11/30(水) 22:21:19
でもDで業務システム作ったらJavaと比べて
CPUは半分、メモリは1/3くらいで作れないかな?
まぁ開発コストが倍になってマシン代のが安いじゃんってなるんだが
632デフォルトの名無しさん:2005/12/01(木) 02:46:07
性能向上でがんばってハードウェアの数が減らす事ができるならTCO削減を言い訳にDを実業務で採用できなくもないけど。


633デフォルトの名無しさん:2005/12/01(木) 05:43:23
>>626
VisualAge for Java位ぶっ飛んでいてDelphi並に軽かったら10万でもいいんだけどなぁ
634デフォルトの名無しさん:2005/12/01(木) 14:58:55
適当なObject型に入ってるインスタンスが、
直接クラス「Hoge」かどうかを判定したいんだけど、そう云う事ってできる?

メンバ変数に埋め込まなきゃ駄目かなぁ?
635デフォルトの名無しさん:2005/12/01(木) 16:48:29
assert(Hoge.classinfo == (new Hoge()).classinfo);
かな
636634:2005/12/01(木) 16:54:19
おお、行けたよ、classinfoなんてあったのか。サンクス。

あと、staticな物体みたいで、
"(new Hoge()).classinfo"
じゃ無くても、
"Hoge.classinfo"
でも取得できたよ。
637デフォルトの名無しさん:2005/12/01(木) 20:21:27
一応、typeidとtypeofを使って、

typeid(typeof(obj)) is typeid(Hoge)

と比較するのが本流。
638デフォルトの名無しさん:2005/12/01(木) 21:29:48
instanceofと比べるとちょっと冗長だね
手間だけど高速化の一環で何かしてるのかな?
639デフォルトの名無しさん:2005/12/01(木) 22:25:00
>>637
残念ながら、それだとこういうとき事したときうまくいかないんだよな……

Object o = new Hoge;
assert (typeid(typeof(o)) is typeid(Hoge)); // assertion failur
640デフォルトの名無しさん:2005/12/01(木) 22:54:40
cast(Hoge)obj
で何が不満なの?
641デフォルトの名無しさん:2005/12/02(金) 01:43:12
こういうとき事したとき?
642639:2005/12/02(金) 23:20:22
誤: こういうとき事したとき
正: こういう事したとき
643デフォルトの名無しさん:2005/12/03(土) 12:09:39
cast(Hoge)obj
で何が不満なの?
644デフォルトの名無しさん:2005/12/03(土) 13:08:46
関数のオーバーライドで何が不満なの?

…std.mathが使いにくいけどね。
645デフォルトの名無しさん:2005/12/03(土) 13:10:41
インタフェースが一緒じゃないときの分配処理で使うんだろ
設計ミスといえば設計ミスだが、
その後の処理がプリミティブ中心だったり
オブジェクト中心だったりと変化するならやる価値はある。
646デフォルトの名無しさん:2005/12/03(土) 16:27:35
cast(Hoge)obj
で何が不満なの?
647デフォルトの名無しさん:2005/12/03(土) 16:35:19
違いが分からないお前のレベルの低さについていけない
648デフォルトの名無しさん:2005/12/03(土) 16:57:00
649デフォルトの名無しさん:2005/12/03(土) 17:02:37
cast(Hoge)obj
で何が不満なの?
650デフォルトの名無しさん:2005/12/03(土) 17:05:00
つまんねー荒らしが湧いてるな・・・
例外おこして判断しろってか?おめでたいやつ
651デフォルトの名無しさん:2005/12/03(土) 17:17:36
おめでたいのはお前の結婚10周年だアホ
652640:2005/12/03(土) 18:16:45
なんで俺の発言のコピペ張ってるのかイマイチ理解できない......

>>650
cast出来ないときは例外は発生せずにnullが返るから問題ないです。
653デフォルトの名無しさん:2005/12/03(土) 18:29:33
cast(Hoge)obj
で何が不満なのか、俺も知りたかったから。

>>650
おめでたいのはお前だ。
654デフォルトの名無しさん:2005/12/03(土) 18:45:40
なんで例外が起きないんだ?バグじゃね?
655デフォルトの名無しさん:2005/12/03(土) 18:52:01
>>654
C++もポインタに対するdynamic_castは同じ仕様(失敗時にNULL)
だし別に普通と思いますけど。
656デフォルトの名無しさん:2005/12/03(土) 18:52:33
>>654
アホか。言語仕様でそうなってるからとしか言いようがない。

> オブジェクト o がクラス B のインスタンスであることを判定するためには、キャストを使います:
>
>if (cast(B) o)
>{
> // o は B のインスタンス
>}
>else
>{
> // o は B のインスタンスでない
>}
657デフォルトの名無しさん:2005/12/03(土) 18:57:27
「どうして作者がそういう仕様にしたのか」が問われているんだと思う
658デフォルトの名無しさん:2005/12/03(土) 19:01:03
いちおうJavaも(Foo)nullをメソッドに放り込んでfoo instanceof Fooってやってもfalseだったような気がする
nullはFooではないというルールが大前提であるのであれば、どっちの仕様でもいいかな。
659デフォルトの名無しさん:2005/12/03(土) 23:40:57
コメントなしでソース見たらわかりにくいなそれ
660デフォルトの名無しさん:2005/12/03(土) 23:45:19
なぜ明示的な用法として

Foo foo = new Foo();

if(Foo == foo.getClass()) {
  printf("foo is class Foo.");
}

みたいな仕様にしなかったんだ。
この点ではJava劣る。
661デフォルトの名無しさん:2005/12/03(土) 23:50:04
そのコードは、fooにサブクラスのインスタンスを入れただけで
動かなくなる糞コードだから、劣っているのはお前の頭。
662デフォルトの名無しさん:2005/12/03(土) 23:52:02
クラスを厳密にしてたら多様性の否定じゃん。
サブクラスは弾いちゃだめ。
663デフォルトの名無しさん:2005/12/04(日) 00:08:37
派生クラスをはじきたいことも無いとは言えない。
664デフォルトの名無しさん:2005/12/04(日) 00:22:20
ヒント: 小回りが効くものを組み合わせて大回りさせることは出来るけど、大回りしか出来ないものでは工夫しても小回りは効かない
665デフォルトの名無しさん:2005/12/04(日) 00:24:50
ヒントって馬鹿かお前。他の方法もあるだろ。
666660:2005/12/04(日) 00:45:55
>>661
一人で作ってる人には分かりにくいだろけど、
標準ライブラリでも無い限りはサブクラスもきっちり弾かないと飛んでもない事になる。

隙の多い設計/実装やってると揚げ足取ったような超低品質なコードを突っ込んでくるバカが多いからちゃんとしにゃきゃダメ。
特に組み込み上がりの派遣PGとか業務系上がりのPGはヤバい。

なのでDを実業務に使えるようにするにはまず最初にバカを一掃する事ができる言語/ライブラリ設計が必要になる。
667デフォルトの名無しさん:2005/12/04(日) 00:50:11
>>637がきっちり弾くバージョンで
多様性が効いたバージョンが>>640か?
668デフォルトの名無しさん:2005/12/04(日) 01:22:08
>>666
だから、一掃されるのはおまえ自身だって
669デフォルトの名無しさん:2005/12/04(日) 02:39:56
>>665 は相当の馬鹿だな…
670デフォルトの名無しさん:2005/12/04(日) 02:44:46
マクロが欲しくなるな。
671デフォルトの名無しさん:2005/12/04(日) 02:52:23
ところでAKIDEの作者が泣いてる件について
672デフォルトの名無しさん:2005/12/04(日) 02:54:01
悪いsage忘れたのでsage
673デフォルトの名無しさん:2005/12/04(日) 02:54:47
といいつつageたかったんだろ?憎い奴
674デフォルトの名無しさん:2005/12/05(月) 15:03:59
dmd 0.141 リリース
ダカラナニ?
ハイハイカワイソスカワイソス
675デフォルトの名無しさん:2005/12/05(月) 17:23:19
コードカバレッジねえ、、、びみょーだな
676デフォルトの名無しさん:2005/12/06(火) 03:02:36
真に可哀想なのは反応すらしてもらえなかった0.139
677デフォルトの名無しさん:2005/12/06(火) 13:37:36
1) This includes a new code coverage analyzer for dmd (I think gcov should
work for gdc users). I've been wanting to add this for 20 years, I finally
realized it was a piece of cake. Took me 3 hours to write, 3 hours to tweak.
I shoulda done it a long time ago. I can't believe some third party tools to
do this cost $800+.

2) The submissions for bug reports on complex numbers has risen a lot
lately, and I never get them for the C compiler. This means that nobody uses
complex numbers in C, but they do in D. Interesting!

3) This incorporates a new 'header' generator capability, written by Dave
Fladebo. I goofed it up merging it in, so it is disabled at the moment (just
the source for it is included). I hope to get it working by the next update.

を要約してー
678デフォルトの名無しさん:2005/12/06(火) 14:07:43
1) これは、dmd(私は、gcovはgdcユーザのために働くべきであると思います)のための新しいコード報道アナライザーを含んでいます。
私は20年間これを加えていたかった。私は、それが容易な仕事であることを最後に理解しました。
私は、書くべき3時間(ぐいとひねるべき3時間)かかりました。
それにずっと前にもたらされたIのshoulda。
私は、これをするいくつかの第三者ツールが800ドルの+を要したと信じることができません。
2) 複素数に関するバグ・レポートのためのサブミッション、最近非常に上昇した、また、私はCコンパイラ用にそれらを得ません。
これは、誰もCで複素数を使用しないことを意味します。しかし、それらは面白いD.の中で行います!
3) これはデイブFladeboによって書かれて、新しい「ヘッダー」ジェネレーター能力を組込みます。
私はそれを中へ合併することを上へそれをへまで台無しにしました。したがって、それはちょうど今(単なるそのための出所が含まれています)無効になります。
私は、それを次の最新版によって働かせることを望みます。
679デフォルトの名無しさん:2005/12/06(火) 14:21:53
1) これには新しい dmd 用のコードカバレッジ解析器が含まれてるよ
(gdc ユーザ向けには gcov が動くはず)。
20 年もこれの追加を待ち続けてきたけど、結局これはこんとんじょのいこって気付いたんだ。
書くのに 3 時間、ちょっと調整するのに 3 時間かかったよ。
もっと前にやっておくべきだったね。
800 ドル以上もするこれをするサードパーティのツールがあるのがアホくさいね。

2) 複素数についてのバグレポートが最近増えてきたけど、C のコンパイラについての
そういうのは受けたことがないね。てことは、C では誰も複素数を使わないけど、
D では使うってことか。おもすれー!

3) これには新しい「ヘッダ」ジェネレータ機能を組み込んだよ。デーブ君が書いたんだ。
それをマージするのにへまをやらかしてしまって、現時点ではそれは無効になってるよ
(それ用のソースが含まれてるだけ)。次のアップデートまでには動くようになってるといいな。
680デフォルトの名無しさん:2005/12/06(火) 14:24:40
3) これは新しいヘッダ生成能力を盛りこみます(written by Dave
Fladebo)。
   しかし私はマージに失敗してしまい現在無効にしてあります。(ソースは含まれてます)
   次のアップデートには機能を有効にしたいなーと思ってます。
681677:2005/12/06(火) 15:05:49
>>679
ありがと
なんか、親しみがもてるよw
682デフォルトの名無しさん:2005/12/06(火) 15:31:48
 *     +    巛 ヽ
            〒 !   +    。     +    。     *     。
      +    。  |  |
   *     +   / /   イヤッッホォォォオオォオウ!
       ∧_∧ / /
      (´∀` / / +    。     +    。   *     。
      ,-     f
      / ュヘ    | *     +    。     +   。 + 
     〈_} )   |                        
        /    ! +    。     +    +     *
       ./  ,ヘ  |
 ガタン ||| j  / |  | |||
――――――――――――

liboggとlibvorbisの一部をDにポーティング出来た
683デフォルトの名無しさん:2005/12/06(火) 16:46:22
>>682
うp
684デフォルトの名無しさん:2005/12/06(火) 19:07:03
lzoのポーティングが( ゚Д゚)ホスィ…
685デフォルトの名無しさん:2005/12/06(火) 19:17:08
コードカバレッジってなんだか流行をはずれてるような気がしないでもない。
686デフォルトの名無しさん:2005/12/06(火) 19:52:39
素人的な考えかもしれない(というか素人)のだが、複素数型より多倍長型をコンパイラ憎みこんで欲しいなぁ
687デフォルトの名無しさん:2005/12/06(火) 20:39:51
憎みこむ・・・w
688デフォルトの名無しさん:2005/12/07(水) 00:38:58
つーか、いまどき最低限でもJavaで実装されているライブラリ群と同等のものは用意しないと。
言語仕様もさる事ながらライブラリがしょぼいとどうにも普及せんよ。

たとえば異なる分野に目を向けるとWeb用途のスクリプト言語であるPHPだって、
Perlとさして変わらん言語仕様、しかも貧弱な組み込み機能で合っても
豊富なライブラリ群やデータベースとの親和性で大成功した。

まぁ、いまどきWebを無視してるようじゃちょっと先が心配だな。
日本サイドでDのWeb特化を進めてみたらどうなんだろう。
689デフォルトの名無しさん:2005/12/07(水) 00:52:58
やろう
690デフォルトの名無しさん:2005/12/07(水) 00:58:36
Web弱い?epollやkqueueを上手くラップしたライブラリとか作ってくれ
691デフォルトの名無しさん:2005/12/07(水) 01:04:40
libeventをラップしる!

つーか俺、libeventの存在を知ったのつい最近なんだけど
どっかに簡単な解説くらいないかな。
selectは知ってるんで、サンプルみりゃ分かる気もするけど。
692デフォルトの名無しさん:2005/12/07(水) 01:20:34
>>688
Webが得意な言語はいくらでもあるんだから、それつかえばいいじゃない。
過渡競争に混じって車輪の再発明しまくって、
そっちにマンパワー使うのも馬鹿らしいしな。

DはDの良いところを伸ばせばよいと思われ。
693デフォルトの名無しさん:2005/12/07(水) 01:49:33
Dの用途って10KLくらいのシステム管理・監視用のデーモンだろ?
694デフォルトの名無しさん:2005/12/07(水) 02:09:54
Dの用途はphpの斜め上、Javaの横、C++の裏辺りかな
695デフォルトの名無しさん:2005/12/07(水) 05:13:48
>>694
なんとなく解ったような、どこだかな〜みたいな
696デフォルトの名無しさん:2005/12/07(水) 06:50:04
>>694
あってるよーなまちがってるよーな
697デフォルトの名無しさん:2005/12/07(水) 09:56:14
せっかくDなんだからDのつく開発に使えばいいんじゃないかな?
DriverとかDemonとか
698デフォルトの名無しさん:2005/12/07(水) 10:21:07
s/Demon/Daemon/
699デフォルトの名無しさん:2005/12/07(水) 11:02:48
DNS Server
700デフォルトの名無しさん:2005/12/07(水) 11:04:34
DBMS
701デフォルトの名無しさん:2005/12/07(水) 12:38:40
Doraemon
702デフォルトの名無しさん:2005/12/07(水) 15:41:39
703デフォルトの名無しさん:2005/12/07(水) 16:11:21

      この辺をフヨフヨしてる
            ↓
                           PHP
            D))              Perl
Java C#             Ada   Ruby
                            Python


            C++        VB
 ObjectiveC
                C
704デフォルトの名無しさん:2005/12/07(水) 16:18:07

            :D
            |||
         ドピ──ン
            |||
            |||
                           PHP
                            Perl
Java C#             Ada   Ruby
                            Python


            C++        VB
 ObjectiveC
                C
705デフォルトの名無しさん:2005/12/07(水) 16:30:59
char**をchar[][]にしたいんだけどどうしたらいいんだ?
706デフォルトの名無しさん:2005/12/07(水) 16:40:53
char** pp;
char[][] aa = pp[][];

でどうか
707デフォルトの名無しさん:2005/12/07(水) 16:46:16
vorbis.d:30: need upper and lower bound to slice pointer
vorbis.d:30: cannot implicitly convert expression (*(this.vc + 0)[][]) of type char*[] to char[]

エラー出た
708デフォルトの名無しさん:2005/12/07(水) 16:48:04
char[][]をchar*[]にキャストしてヌル終端考慮しながら全コピ、その後char**にキャストしてはどうか
709デフォルトの名無しさん:2005/12/07(水) 16:51:08
>>708
いやそっちじゃない
char[][] を char** にするのは問題ないはず
710デフォルトの名無しさん:2005/12/07(水) 16:57:32
>>709

char** charaa2charpp(char[][] charaa)
{
  char*[] charpa = new char*[charaa.length];
  for(int i = 0; i < charaa.length; i++)
    charpa[i] = charaa[i]~"\0";
  return cast(char**)charpa;
}

力業すぎて汚えけどこれで一応動いたお
711デフォルトの名無しさん:2005/12/07(水) 17:05:26
>>710
とりあえず、>>705を読んでくれ。
まぁ、逆にすりゃ良いだけだろうけど。
712デフォルトの名無しさん:2005/12/07(水) 18:04:22
dmain2.dのやり方を抜粋(char** argvをchar[][]argsに変換)

extern (C) int main(int argc,char **argv)
{
char[] *am;
char[][] args;
int result;

version(linux) { am = cast(char[] *) malloc(argc * (char[]).sizeof); }
version(Windows) { am = cast(char[] *) alloca(argc * (char[]).sizeof); }

for (i = 0; i < argc; i++)
{
int len = strlen(argv[i]);
am[i] = argv[i][0 .. len];
}

args = am[0 .. argc];

result = main(args);

return result;
}

713デフォルトの名無しさん:2005/12/07(水) 22:15:52
SQLiteとのマッピングフレームワークを作ったら使いやすいだろうか
ロギングツールとしてうまく機能してくれたらうれしいが・・
714デフォルトの名無しさん:2005/12/08(木) 00:16:00
DAOって事かな?
非常に有用だろうね。
interfaceを元に作ってRDBMSにも流用できるように作って。
715デフォルトの名無しさん:2005/12/09(金) 01:11:37
D言語の出力バイナリってどれぐらい小さくなりますか?
例えば1KBのexe作れますか?
716デフォルトの名無しさん:2005/12/09(金) 01:53:49
>>715
それはDが目指す方向性と違うだろ…。
そゆことしたい人はCなりassemblerをやれ
717デフォルトの名無しさん:2005/12/09(金) 06:19:03
Ruby書くようなノリでバカみたいに開発・テストが進み
既存のライブラリがリンクし放題で
ELFやOMFを吐く嘘の様に速いコンパイラ
そんな出来すぎた言語それがD
敢えて愚痴を言うならソースレベルデバッガが欲しい所
718デフォルトの名無しさん:2005/12/09(金) 12:38:00
>>715
1KBはPEヘッダに入れるセクションの影響でまず無理。
スタートアップがどれくらいの大きさかによるけど、
GC積んでるD言語で小さくするのは難しい。
719デフォルトの名無しさん:2005/12/09(金) 12:55:03
象さん 0.31 開放
720デフォルトの名無しさん:2005/12/09(金) 15:04:47
像さん 0.32 & source 開放
721デフォルトの名無しさん:2005/12/09(金) 17:13:56
>>717
>敢えて愚痴を言うならソースレベルデバッガが欲しい所
VisuatlStudioなりWinDbgなり使うよろし
722デフォルトの名無しさん:2005/12/09(金) 18:12:11
VC2005 Expressでもちゃんとデバッグできる?
試してみたけど、ブレークポイントで止まってくれないんだが…
723デフォルトの名無しさん:2005/12/09(金) 20:02:19
>>452
俺もやってみたが、失敗した
Dは組み込み用には無理なんじゃね?

>>585
使えるレベルになってから紹介しろよw

>>704
お茶吹いた
724デフォルトの名無しさん:2005/12/09(金) 22:48:16
>>715
自前でスタートアップ定義して、
標準ライブラリ等(含むGC)を使わずに書いたらHello Worldで4KB程度になります。

でも正直、辛過ぎるので実用上はGC込みの最低でも80KBにしか出来ないかと。
725デフォルトの名無しさん:2005/12/09(金) 22:55:30
あれ?DOMやSAXは標準で付いてこないの?
726デフォルトの名無しさん:2005/12/09(金) 23:05:19
>>725
君が作って著作権フリーでDigitalMarsにポストすれば、標準でついてくるようになるよ。
727デフォルトの名無しさん:2005/12/09(金) 23:42:50
>>725
それと、当然ながらシェアウェアだから金払わないとできないよ。
728デフォルトの名無しさん:2005/12/10(土) 12:18:52
文字列の連想配列って使えないの?
729デフォルトの名無しさん:2005/12/10(土) 12:28:45
>>728
使えますよ。
char[][char[]]map;
730デフォルトの名無しさん:2005/12/10(土) 12:32:20
>>729
そう宣言するのか。今までchar[char[]][]にしてた
731デフォルトの名無しさん:2005/12/10(土) 15:38:43
象さんのCompiler Settingsが毎回リセットされるんですが私だけですか?
732デフォルトの名無しさん:2005/12/10(土) 16:22:07
>>723
phobosを抜けばコンパイルに成功した。
ただインラインアセンブラが使えねorz
しかもphobosの移植は依存箇所が非常に分かり難いorz
733デフォルトの名無しさん:2005/12/10(土) 16:27:13
Cすらない環境にDを持ってくのは無茶だよな・・・
734732:2005/12/10(土) 16:39:56
>>733
無茶では無いと思うけど、標準ライブラリが結構混沌としてるからね。(version{}else version{}else{static assert(0);}ってなってない所とかあったりとかversion(GNU)の部分とかインラインアセンブラの部分とか)
735デフォルトの名無しさん:2005/12/10(土) 16:55:42
>>686
多倍長欲しいねぇ(特に暗号化とかに)
まぁadd(uchar[] a,uchar[] b)とかを作れば十分だとは思うけど標準ライブラリにキボン
736デフォルトの名無しさん:2005/12/10(土) 16:58:29
>>734
phobos自体Cライブラリ依存だよね。あとスタートアップルーチンも書かなきゃ行けないのか<#`Д´>
737デフォルトの名無しさん:2005/12/10(土) 17:09:26
>>736
C言語用のスタートアップルーチンがあれば十分だとおも
738デフォルトの名無しさん:2005/12/13(火) 01:39:17
emacsでd-modeを使おうと
http://home.comcast.net/~benhinkle/d-mode.zip
を試してみました。
READMEの通りにcc-engine.elでbyte-compile-fileを実行すると
cc-bytecomp.elがオープンできないというエラーがでます。
cc-bytecomp.elcはあるのですけどelがどこにもないのです。
同じ経験をされた方、解決方法がわかる方いらっしゃいませんでしょうか?
739デフォルトの名無しさん:2005/12/13(火) 13:10:25
emacs22だと動かなかった。ショボーン
740デフォルトの名無しさん:2005/12/13(火) 16:15:45
phobosのDLLとかないんですか?
741デフォルトの名無しさん:2005/12/14(水) 11:18:55
ないんじゃないですか
見たことないです
742デフォルトの名無しさん:2005/12/14(水) 12:40:14
象さん 0.33 開放
743デフォルトの名無しさん:2005/12/14(水) 12:56:45
akIDEでexe出力したいんだけど、どうやってもobjしか出力できないorz
どうすればいいの?
744デフォルトの名無しさん:2005/12/14(水) 15:11:57
どうすればいいかなんて分からんよ。
エスパーじゃあるまいし。
情報が少な杉。


リンカが無いとか、phobos.libやsnn.libみたいな必要なlibを指定してないとか、
単なるコンパイルエラーやリンク時エラーでexeを出力してないとか。
745デフォルトの名無しさん:2005/12/14(水) 15:51:24
>>744
すまん。リンカはあるし、コンパイルエラーもない。

よくよく調べてみるとこんなエラーがあった

C:\Documents.obj
Error 2: File Not Found C:\Documents.obj
--- errorlevel 1
746デフォルトの名無しさん:2005/12/14(水) 17:13:09
>>745
>>472で呟いたのだけど、akIDEはdmdにソースを渡すときにフルパスを使うんだけど、
dmdがlinkerに渡す際に、それを二つに分けてしまうバグがあるらしいんだよね。
漏れはsc.iniを弄ってLINKCMDを自前のものに変えてワンクッション挟んで使ってる。
必要ならうpろうか?
747745:2005/12/14(水) 17:57:22
>>746
そうしてくれるとありがたいです。m(_ _)m
748デフォルトの名無しさん:2005/12/14(水) 18:13:42
749745:2005/12/14(水) 18:32:47
>>748
解決しました。ありがとうございますm(_ _)m
750デフォルトの名無しさん:2005/12/14(水) 23:39:29
DもSwing実装してくれないかなぁ
751デフォルトの名無しさん:2005/12/15(木) 00:07:23
Swing重いから嫌
752デフォルトの名無しさん:2005/12/16(金) 06:34:06
つか、D言語向けのGUI作れる統合環境はよ出てくれい
MSが作ってくれるといいんだが
753デフォルトの名無しさん:2005/12/16(金) 06:42:17
C++/C#あるからイラネ
754デフォルトの名無しさん:2005/12/16(金) 10:41:52
C#じゃ遅い
C++じゃ醜い

つまり、ここで救世主の登場ってわけだ。
755デフォルトの名無しさん:2005/12/16(金) 11:44:51
>>754
ぬるぽの事ですね!!
756デフォルトの名無しさん:2005/12/16(金) 13:39:39
>>752
俺が作ってやるから待ってろ
757デフォルトの名無しさん:2005/12/16(金) 19:35:04
ver1.0マダー?
758デフォルトの名無しさん:2005/12/16(金) 22:38:42
>>732
>phobosを抜けばコンパイルに成功した。
お!マジすげーな。
よかったら、コンパイラ手順とか書いてくれると参考になります。
759デフォルトの名無しさん:2005/12/16(金) 23:14:45
ver1.0はともかく
テンプレートの暗黙のインスタンス化
をはやく実装して欲しい
760デフォルトの名無しさん:2005/12/16(金) 23:26:17
ずっと実装されねーよばか
761デフォルトの名無しさん:2005/12/17(土) 05:46:41
std.stream全般コンパイルエラー。
stdout.writeLineすらエラー。
std.stdio使えばいいんだけど気持が悪い。
どなたか原因わかりませんか?
762デフォルトの名無しさん:2005/12/17(土) 05:48:46
てかたま姉が怖いよ
763デフォルトの名無しさん:2005/12/17(土) 12:33:37
>>758
gdcでd/config-lang.inのtarget_libs="target-libphobos"をコメントアウトするだけでいいはず。
phobosも適当にgcc/config.dを作って個別にコンパイル&リンクすれば使うことはできる。(Monaのgdcのページも参考に)
#ただインラインアセンブラやらstabやらがうまくいかなくってスレッドの作成で引っかかってる。(gcが使えない)
764761:2005/12/17(土) 19:49:26
どうやらstdoutは非推奨になっていたようですね。
標準出力はstd.stdioを使うようです。
765デフォルトの名無しさん:2005/12/17(土) 20:51:21
>>764
std.cstream を import すれば
din (標準入力)、 dout (標準出力)、 derr (標準エラー)が使えるお

stdioでいいならいいんだけど
766デフォルトの名無しさん:2005/12/17(土) 23:33:49
>>761
obsoleteになってた希ガス
std.cstream.dout.writeLineを使ってみ
767デフォルトの名無しさん:2005/12/17(土) 23:35:17
約1日もラグった吊ってくるsage
768デフォルトの名無しさん:2005/12/18(日) 15:29:21
Dで数値の符号反転をやるにはどうしたらいいんですか?
769デフォルトの名無しさん:2005/12/18(日) 15:37:23
d*=-1;
770デフォルトの名無しさん:2005/12/18(日) 15:43:00
d=-d
771デフォルトの名無しさん:2005/12/18(日) 15:44:23
>>770
d = -d - 1じゃないか?
772770:2005/12/18(日) 15:47:27
>>771
え? 符号反転ってビット反転のこと?
それなら d= ~d で良いじゃん。
773デフォルトの名無しさん:2005/12/18(日) 15:49:20
>>772
ごめん、ビットだったね。間違えた・・・
774デフォルトの名無しさん:2005/12/18(日) 23:07:02
>>750
swingはないけど、swtは実装されてるじゃん。dwtとして。
775デフォルトの名無しさん:2005/12/18(日) 23:49:23
あれ、SWTあるの?
ちょっと使いにくいが、フル機能そろってるのであれば使ってみようかな。
776デフォルトの名無しさん:2005/12/19(月) 00:34:01
std.boxerのbox/unbox使っているプログラムをデバッグモードでコンパイルすると
Error 42: Symbol Undefined _assert_3std5boxer
--- errorlevel 1
とかリンクエラーが出るんだが、これなんなのさ。
releaseモードだとでない。
777776:2005/12/19(月) 00:48:43
> Following the exact example as was posted in the D forum recently, the new
> std.boxer.d is giving the below link error when the unbox functions are being
> used. Is this a bug, or have I done something wrong in the code?

Wow, this is a flash-back, I haven't seen that link error in years.
This is caused because it's the first template in Phobos designed to be
used by a client, so it's just exposed a code generation problem in
templates when the -release flags are mismatched (Phobos is now compiled
with -release).

自己解決したが、こいつら腐ってる。
なんで、リリースモード以外でコンパイルできないようなコードを標準ライブラリに入れるんだよ…。
778デフォルトの名無しさん:2005/12/19(月) 01:40:25
未完成の言語に文句たれる方がどうかしてる
779デフォルトの名無しさん:2005/12/19(月) 01:57:12
公開してる物なんだし、文句位はいいんじゃない?
780デフォルトの名無しさん:2005/12/19(月) 02:49:22
ただ文句たれるのではなく本家にフィードバックされればの話だろう。
781776:2005/12/19(月) 03:19:12
782デフォルトの名無しさん:2005/12/19(月) 03:32:27
じゃあ使わなければいいじゃない
783デフォルトの名無しさん:2005/12/19(月) 04:47:52
残念ながらあなたには一生セックスできない呪いがかけられてしまいました
でも呪いを解く方法は無い事もありません
http://pc8.2ch.net/test/read.cgi/tech/1122912733/
このスレに

>>776m9(^д^)プギャーッ
>>776m9(^д^)プギャーッ
>>776m9(^д^)プギャーッ

と書きk(ry
784デフォルトの名無しさん:2005/12/19(月) 16:14:11
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
>>783m9(^д^)プギャーッ
785デフォルトの名無しさん:2005/12/19(月) 18:19:20
m9(`д´)オギャーッ
m9(`д´)オギャーッ
m9(`д´)オギャーッ
786776:2005/12/19(月) 21:59:40
ごめんなさい。
D言語には本当に感謝しています。
ライブラリの気に入らない部分は自分で作ります。
787デフォルトの名無しさん:2005/12/20(火) 23:43:37
いつになったらCに逆リンクできるよになるんだ。
788デフォルトの名無しさん:2005/12/21(水) 00:11:29
787が動くまで。
789デフォルトの名無しさん:2005/12/21(水) 07:52:01
うちでは出来てる
790デフォルトの名無しさん:2005/12/21(水) 08:34:43
>>789
ネ申になれるチャンスだ!
791デフォルトの名無しさん:2005/12/21(水) 12:28:05
akIDE GTK+ port source リリース(?)
792デフォルトの名無しさん:2005/12/21(水) 19:22:45
793ネ申:2005/12/22(木) 04:59:17
/*
d_dll.d

\dmd\bin\dmd -ofd_dll.dll d_dll.d d_dll.def
*/

import std.c.windows.windows;
HINSTANCE g_hInst;

extern (C)
{
void gc_init();
void gc_term();
void _minit();
void _moduleCtor();
void _moduleUnitTests();
}

extern (Windows)
BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved)
{
switch(ulReason){
case DLL_PROCESS_ATTACH:
gc_init(); // initialize GC
_minit(); // initialize module list
_moduleCtor(); // run module constructors
_moduleUnitTests(); // run module unit tests
break;

794ネ申:2005/12/22(木) 05:00:02
case DLL_PROCESS_DETACH:
gc_term(); // shut down GC
break;

case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
// Multiple threads not supported yet
return false;
}
g_hInst = hInstance;
return true;
}

export
void dllprint()
{
printf("Hello D!\n");
}

export
int dllintval(int i)
{
return i << 2;
}
795ネ申:2005/12/22(木) 05:00:54
/*
call_dll.c

call functions in dll which is written by D
*/

#include <windows.h>

#include <stdio.h>

// #pragma comment(lib, "d_dll.lib")
#define S_library "d_dll.dll"
#define S_dllprint "D5d_dll8dllprintFZv"
#define S_dllintval "D5d_dll9dllintvalFiZi"

int main(void)
{
HINSTANCE hLibrary;
void (WINAPI *dllprint)(void);
int (WINAPI *dllintval)(int);

796ネ申:2005/12/22(木) 05:01:51
hLibrary = LoadLibrary(S_library);
if(!hLibrary){
fprintf(stderr, "Can't load library ["S_library"].\n");
return -1;
}
dllprint = (void (WINAPI *)(void))GetProcAddress(hLibrary, S_dllprint);
if(!dllprint){
fprintf(stderr, "Can't load function ["S_dllprint"].\n");
return -2;
}
dllintval = (int (WINAPI *)(int))GetProcAddress(hLibrary, S_dllintval);
if(!dllintval){
fprintf(stderr, "Can't load function ["S_dllintval"].\n");
return -2;
}

dllprint();
fprintf(stdout, "%d\n", dllintval(3));

FreeLibrary(hLibrary);

return 0;
}
797ネ申:2005/12/22(木) 05:08:36
Digital Mars D Compiler v0.106 でテスト

dmd.exe の方で dll を生成するときにインポートライブラリを
同時に作る方法が分からなかったので c 側で LoadLibrary を使用してみた。
d_dll.obj は独自のフォーマットらしく VC 用の lib を使って dll は作れなかった。

関数名は
void dllprint() が D5d_dll8dllprintFZv
int dllintval(int) が D5d_dll9dllintvalFiZi
になっているらしいので F?Z? で型名を挟んでるようです。
8 とか 9 は謎。1 個だけだと 8 だったので 8 から始まる通し番号かな?
この辺は dmd のソース見れば詳細分かりそう。

実行すると int の方は計算結果が合わないのと、
終了時にアプリケーションエラーが出るので、w
パラメータ受け渡しにもう一段スタックに何か積んでる可能性があるね。
たぶんオブジェクトに関わる部分だと思うので今回の場合空読みすると治る鴨試練。
798デフォルトの名無しさん:2005/12/22(木) 05:29:07
その数字は文字数と関係があるんじゃないかと思う
799デフォルトの名無しさん:2005/12/22(木) 05:29:17
ってDLLをLoadLibraryかよwww
800デフォルトの名無しさん:2005/12/22(木) 05:33:12
>>797
dmdが吐くobjはOMF、VCのは新COFFと呼ばれる形式のもの
まあダイナミックリンクすりゃCだろうがDだろうが問題ない罠
内容はどうあれ乙彼讃
801ネ申:2005/12/22(木) 05:37:57
dll じゃない方 (obj を直接 link) も試してみたが、
関数名が
_D5[objファイル名]5[関数名]F[引数]Z[戻り値]
になるらしい。(例によって 5 は謎)
ただしこちらはリンク時に
__d_assert
という関数が見つからないと言われるので別途用意してやらないといけない。
多分 C 側で D のスタートアップやその他もろもろ作っておいて
調整しないとうまく動かないと思う。
src/dmd/mtype.c とか src/dmd/func.c あたり見るともう少し突っ込めるかな。
802ネ申:2005/12/22(木) 05:39:22
>>798
ああ、そうだ。文字数で合ってます。
803デフォルトの名無しさん:2005/12/22(木) 06:35:28
>>797
引数や戻り値がintでもcのintがそのままやりとりされる訳じゃなくて
オブジェクトが使われているからcから使うにはDに合わせた構造体が必要

JNIのようにまともに実装するのはかなり大変だけどやり始めたんならがんがれwww
804デフォルトの名無しさん:2005/12/22(木) 07:41:44
D言語の標準の関数呼び出し規約は、
__cdeclや__stdcallと違うからCからまともに呼び出せるわけ無いだろ。
(ちなみにDの関数コールは関数の引数のひとつをEAXで渡す)

extern(C)かextern(Windows)に修飾してC言語と同じ呼び出し規約にしろよ。
805804:2005/12/22(木) 07:55:41
あ、そうそう(現在の)Dの関数の呼び出し方を書いたけど、一応TBDだから、
多言語から呼び出しがあるなら素直にextern(C)にしとけよ

>>803
んなわけねーだろ。大嘘書くな
単に呼び出し規約が違うだけ。
806デフォルトの名無しさん:2005/12/22(木) 18:36:24
当然のことながら、extern(C)やextern(Windows)なら、manglingも互換性のあるものになる。
mangle名も、いまやプロパティで取れるし、demangleもライブラリにある。
807デフォルトの名無しさん:2005/12/22(木) 21:36:38
俺もextern(C)で十分だと思うが。

それよりもデバッガで、Dのクラスをみたいんだけど。

これは当分我慢するしかないの?
808デフォルトの名無しさん:2005/12/23(金) 08:34:57
標準入出力のstd.stdioに出力しかないのはなんで?
標準入力はどうやるの?
809デフォルトの名無しさん:2005/12/23(金) 08:43:45
private import std.cstream;
int readf(...){
    return din.vreadf(_arguments,_argptr);
}
自分で上みたいに定義するか、std.cstream.dinを使う
810デフォルトの名無しさん:2005/12/23(金) 11:00:17
そのうちstd.stdioに入力用の関数が追加されるんでしょうか?
ところでcstreamのcってC言語のcだと思っていたんですけど実
際どうなんでしょうか?
もし、そうならcstreamってかっこ悪いですね。
811デフォルトの名無しさん:2005/12/23(金) 13:12:36
consoleのc
812デフォルトの名無しさん:2005/12/23(金) 13:33:58
コンソールのcですか。なるほど。
813デフォルトの名無しさん:2005/12/23(金) 13:53:50
今、一部の日本語を表示できなくて困っています。

import std.cstream;
int main()
{
  dout.writeLine("あ");
  return 0;
}

がコンパイルエラーになってしまうのです。
表示できる文字もあるのですが、一部の文字はこうなってしまいます。
ソースの文字コードも色々試してみましたけど駄目でした。
表示できた方いらっしゃいますか?
814デフォルトの名無しさん:2005/12/23(金) 14:39:21
文字コードは?
エディタで保存する文字コードをUTF-8にすると通る
メモ帳とか使ってるなら捨てろ
実行したときの表示もUTF-8になるけど気にするな
815デフォルトの名無しさん:2005/12/23(金) 15:03:48
linuxなんでemacsです。
文字コード変換してutf-8で保存してコンパイルというのも試しました。
結局同じエラーになってしまいます。
816デフォルトの名無しさん:2005/12/23(金) 15:14:19
"あいうえお"の各文字でなぜか"あ"だけが駄目なんです。
それと"唖"も駄目でした。"亜"は大丈夫だったんですけど。
なんだろ?
817デフォルトの名無しさん:2005/12/23(金) 15:16:45
コンパイラの出すエラーがこれです。
main.d(5): unsupported char 0x1b
main.d(8): unterminated string constant starting at main.d(5)
main.d(8): found '' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
main.d(8): expression expected, not 'EOF'
main.d(8): found 'EOF' when expecting ','
818デフォルトの名無しさん:2005/12/23(金) 15:34:06
あれ?この書き込み以前も見たようなwww
819デフォルトの名無しさん:2005/12/23(金) 16:30:20
すみません。emacsでutf-8を扱うにはmule-ucsが必要なんですが、それが
自分の環境に入ってなかったのが原因でした。
確かにソースをutf-8で書けばコンパイルできました。
820デフォルトの名無しさん:2005/12/23(金) 17:19:07
でも、ソース自体の文字コードに依存するコンパイルって嫌な感じがしますが
わたしだけでしょうか?
821デフォルトの名無しさん:2005/12/23(金) 20:27:54
>>820
逆に、文字コードなんか関係ないというコンパイラを挙げてみて欲しいぐらいだ。
822デフォルトの名無しさん:2005/12/24(土) 16:52:54
D(or dmd)の今後のスケジュールってどうなってるんですか?
英語苦手なもので、、
823デフォルトの名無しさん:2005/12/24(土) 16:54:49
1. 関数テンプレートの暗黙のインスタンス化
2. Templateの継承
3. 配列リテラル
824デフォルトの名無しさん:2005/12/24(土) 17:03:25
配列リテラルって中身もconstってことか
825デフォルトの名無しさん:2005/12/24(土) 23:06:39
>821
javacはオプション付加すれば文字コードなんでも大丈夫だけどね
826デフォルトの名無しさん:2005/12/25(日) 00:06:59
なかでユニコードに変換してるんでしょ?
そういう意味ではDだってユニコードに変換できればなんでも大丈夫だ。
827デフォルトの名無しさん:2005/12/25(日) 20:24:45
>826
DMDってその手のオプションあったけ? nkf でとかで無しに
828デフォルトの名無しさん:2005/12/26(月) 00:30:15
>>827
それはコンパイラじゃなくて、エディタの責任じゃないの。
829デフォルトの名無しさん:2005/12/26(月) 03:56:21
とにかく開発環境が整わないのと正式リリースをもったいつけてるのが大問題だ。

この一年はDに注目してきたが根本的な進歩がない。
微妙な言語使用は変化しているが開発者が置かれている状況は何も変わっていないじゃないか。
830デフォルトの名無しさん:2005/12/26(月) 12:45:58
もっとDのプロジェクトが増えてくればいいんだろうけどね
まあ言語自体は間違いなく最強な訳だし
仕様が固まりさえすれば参入も増えるでしょ
最終的にはコンパイラ屋が飛びつくかどうかが普及のキーだろうな
本気で普及させたいなら>>829が高品質なcpp2dコンバータ作れば全ておk
831デフォルトの名無しさん:2005/12/26(月) 16:43:06
Dの宿題スレってありますか?
832デフォルトの名無しさん:2005/12/26(月) 17:10:36
>>831
そもそもDの宿題ってありますか?
833デフォルトの名無しさん:2005/12/26(月) 20:18:32
俺は言語指定の無い宿題は基本的にDでやってたけどね
834デフォルトの名無しさん:2005/12/26(月) 22:54:27
今のところファイルロックの機能はD言語でサポートしていないのでしょうか?
835デフォルトの名無しさん:2005/12/26(月) 23:30:18
assert(!file.isdir(LOCKDIRNAME));
file.mkdir(LOCKDIRNAME);
836デフォルトの名無しさん:2005/12/27(火) 00:26:57
UNIX系のシグナルって扱えるだっけ?
837デフォルトの名無しさん:2005/12/27(火) 01:34:52
私が言っているのは完全なファイルロックのことです。
linuxのflockのような。
838デフォルトの名無しさん:2005/12/27(火) 04:05:13
flockって完全なファイルロックなんですか?
839デフォルトの名無しさん:2005/12/27(火) 08:15:24
>>837
extern(C)すればいいじゃない
840デフォルトの名無しさん:2005/12/27(火) 10:13:51
>>837
linuxのflockのような関数を作れば良いと思います。
841デフォルトの名無しさん:2005/12/27(火) 20:24:32
私が言っているのはみんな釣られ杉のことです。
ピラニア軍団のような。
842デフォルトの名無しさん:2005/12/27(火) 21:52:11
>>834
俺もそれ気にしてて、ぐちったりもしたんだけど。
んで、個人的な結論としては、ファイルロックなんてのものは言語でサポートするものではなく、
OSでサポートするものなので、ファイル操作関連の中に>>839さんのいうように
OSのファイルロック機能(linuxならflockなど)を組み込めばいいだけだと思います。
ただ、標準(File:Stream)などがそう作られていないので、気にするなら自分で作る必要があるかなと。
(未だにそう実装されてないってことはこれからもサポートされないんじゃないかなとか思ってる)
Apache信者な俺は、APRをDに移植したら最高なポータブルライブラリになるなーと考えています。
(ただし、メモリプール(apr_pool)は必要ないので移植というより参考にして作るという感じ)
843842:2005/12/27(火) 21:54:39
んでね、一番気になるのはDのFileクラスの挙動がWindowsとLinuxで違うってこと。
Windowsだと書き込みオープンしたファイルは書き込みロックされるが、linuxではされない。
844デフォルトの名無しさん:2005/12/28(水) 01:18:39
ところでソケットまわりってもっと充実しないのかなぁ。
SSLのサポートはまだか?
845デフォルトの名無しさん:2005/12/28(水) 01:26:02
とりあえず1.0で出してみないかい?ってな段階だな
Delphiよりポテンシャルあるのに注目度がここまで低いのは宣伝が弱いからだよ
846デフォルトの名無しさん:2005/12/28(水) 01:44:08
お前らライブラリでも作ろうぜ。
俺もやるからさ。

と言っても俺は途中で投げ出しそうだけど。

ライブラリが充実していけば本当に強力になると思うんだけどなぁ。
847デフォルトの名無しさん:2005/12/28(水) 03:26:42
フレームワークがいろいろあった方が楽ね。
Ruby on Railsとか見てるとすごく爆発力がある。
848デフォルトの名無しさん:2005/12/28(水) 14:23:23
xmldを使ってxmlを読み込んで処理したいんだけど、サンプル見てもまったくわからないorz
誰か教えてくれ…
849デフォルトの名無しさん:2005/12/29(木) 07:07:28
馬鹿が集まってきて阿呆な仕様が追加される位なら
門外不出でいいよ
850デフォルトの名無しさん:2005/12/29(木) 07:51:34
assert(is門外不出(>>849));

馬鹿[] a;
a ~= new 阿呆な仕様();
assert(is門外不出(a));

俺のコンパイラでは一行目は通ったけど、五行目で落ちた。
851デフォルトの名無しさん:2005/12/29(木) 08:47:20
> assert(is門外不出(>>849));  # 1行

> 馬鹿[] a; # 2行
> a ~= new 阿呆な仕様(); # 3行
> assert(is門外不出(a)); # 4行
>
> 俺のコンパイラでは一行目は通ったけど、五行目で落ちた。 # 5行

そりゃ落ちるわ

852デフォルトの名無しさん:2005/12/29(木) 11:24:28
>>850
ぶっちゃけ一行目からコンパイラ通らないと思うんですよね。
シフト演算子に左項がないから。

逆に残りはウニコード使えるから通ると思うけど。(dmd v0.141)
853デフォルトの名無しさん:2005/12/29(木) 12:30:13
">>"はレスアンカー演算子だよ
854デフォルトの名無しさん:2005/12/29(木) 14:58:00
門外不出の意味を分かってない香具師が混ざってるように思うのは気のせいか?
855デフォルトの名無しさん:2005/12/29(木) 20:07:25
フレームワークが欲しい今日この頃。
856デフォルトの名無しさん:2005/12/29(木) 21:41:41
ああ、「今度はフレームワークの意味分かってないだろ」って突っ込ませるジョークか。
帰っていいよ。
857デフォルトの名無しさん:2005/12/30(金) 01:18:50
XML(DOM, SAX, StAX)は標準で装備して欲しいな
858デフォルトの名無しさん:2005/12/30(金) 01:58:13
XMLがないと満足な設定ファイルの仕組みが用意できんしなぁ。
859デフォルトの名無しさん:2005/12/30(金) 02:55:52
漏れXMLのメリット未だに分からん
860デフォルトの名無しさん:2005/12/30(金) 08:05:26
0.142がリリースされてるね
861デフォルトの名無しさん:2005/12/30(金) 09:47:58
>>858
S式最強伝説
862デフォルトの名無しさん:2005/12/30(金) 17:18:56
>D interface file support
kwsk
863デフォルトの名無しさん:2005/12/30(金) 21:19:26
Windowsの画像とFaxビューワの脆弱性を利用したウィルスが猛威を振るっているらしい。
んでノートン先生はまだそのウィルスに対応してないとかかんとか。
シマンテックはやる気なしウィルスにでも感染してるのだろうか・・・
864デフォルトの名無しさん:2005/12/30(金) 21:29:34
>>863
このスレとの関連性は?
865デフォルトの名無しさん:2005/12/30(金) 21:31:22
DMC++はシマンテックC++だったつながりだよ
866デフォルトの名無しさん:2005/12/30(金) 23:44:53
>>859
設定ファイルや通信プロトコルとかが標準化しやすいだろ?

A社のB社のソフトを連携させるとして通信内容がXMLだと話が早い。
あと設定ファイルなんかも取り扱いがシンプルになる。
867デフォルトの名無しさん:2005/12/31(土) 00:18:35
通信にXMLって微妙じゃねーか?
868デフォルトの名無しさん:2005/12/31(土) 00:51:22
確かに通信プロトコルにXMLを採用はみねぇなw
普通は適当な通信プロトコルにXMLを載せて流すもんな
869デフォルトの名無しさん:2005/12/31(土) 01:41:07
SOAPとかってプロトコルなのかデータなのかどっちの部類に入るんだろ。
870デフォルトの名無しさん:2005/12/31(土) 01:48:28
ちらっと見たけどプロトコルっぽいねえ。

正直ウンコだとおもいますた。
871870:2005/12/31(土) 02:02:41
とおもったけど、ちゃうみたいね。
HTTPの亜種か。
872デフォルトの名無しさん:2005/12/31(土) 02:27:33
ファイアウォールを抜けることが前提のプロトコルなんだから糞とか関係ない
873デフォルトの名無しさん:2005/12/31(土) 03:12:47
通信プロトコルと一口に言っても属するレイヤーは様々だから、
868とか言うと869のように突っ込まれるわけだな。

>>871
> HTTPの亜種か。
俺もちらっと見ただけだけど、それは違うだろ。
874デフォルトの名無しさん:2005/12/31(土) 03:23:27
オブジェクトをHTTPとかSMTPでやり取りするプロトコルみたいだね。
相当誤解してたわ。
875デフォルトの名無しさん:2005/12/31(土) 03:29:28
SGML
876デフォルトの名無しさん:2005/12/31(土) 03:50:03
gcc -dynamiclib -undefined error -install_name libgphobos.dylib -o libgphobos.dylib *.o
libgphobos.aの中身を取り出したディレクトリでこんなコマンド打ってみたけど
ld: Undefined symbols:
__Dmain
vtable for __cxxabiv1::__class_type_info
vtable for __cxxabiv1::__si_class_type_info
operator delete(void*)
operator new(unsigned long)
___cxa_pure_virtual
__D3crc10init_crc32FZk
__D3crc12update_crc32FhkZk
_deflateInit
_inflateInit
_inflateInit2
/usr/bin/libtool: internal link edit command failed
エラーがでちゃう・・・orz
877デフォルトの名無しさん:2005/12/31(土) 11:38:17
char[] str = "ABCDEFG";
str[3] = 0x40;

とするとセグメンテーション違反でプログラムが落ちます。
なんででしょう?
878デフォルトの名無しさん:2005/12/31(土) 12:22:05
>>877
上のコードは下のコードと同義です
"ABCDEFG"[3] = 0x40

C/C++と異なり、配列を文字列で初期化しても、
スタックに確保するのではなく、静的に一つの文字列を指します。
(C/C++ で char*str = "ABCDEFG"; と書いたときと同じ )

そして、文字列定数はconst扱いなので、書きかえるとエラーになる環境も存在します。

char[] str = "ABCDEFG".dup;
str[3] = 0x40; 
のように明示的にコピーする等をしてください。
879デフォルトの名無しさん:2005/12/31(土) 12:52:17
はい
880デフォルトの名無しさん:2005/12/31(土) 13:36:14
なるほど。
ありがとうございました。
881 【大吉】 【526円】 :2006/01/01(日) 00:44:24
新年もD言語と共に、 あけましておめでとう

#今年こそ暗黙の関数テンプレート実体化
882デフォルトの名無しさん:2006/01/01(日) 12:39:24
たとえば、
auto b = 30; // int
みたいな構文が出来てきてると言うことは、
そういう感じでうまい具合に実装できる構文があるのかもしれない。
883デフォルトの名無しさん:2006/01/01(日) 14:26:19
>>882
??
884デフォルトの名無しさん:2006/01/01(日) 16:51:39
SDLのポーティング?してるd言語のなかに
LGPLのライセンスファイルがあるんだけど、
これって使ったら強制オープンソースってことだよね?
885デフォルトの名無しさん:2006/01/01(日) 16:54:34
>>882 は暗黙の関数テンプレートの話の
つもりで型推論について話しているのかな
886デフォルトの名無しさん:2006/01/01(日) 17:28:24
インスタンス化構文の話かもしれない。
たぶん、Dの仕様上、テンプレートであるということが構文上明示できなければならないと言う意見か?
887デフォルトの名無しさん:2006/01/01(日) 18:05:19
LGPLはソースレベルでラッピングしないかぎりはクローズドでよかったと思う
888デフォルトの名無しさん:2006/01/01(日) 18:06:05
>>884
ttp://omoikane.my-sv.net/index.php?e=257
この文が分かりやすいと思う
889デフォルトの名無しさん:2006/01/01(日) 20:33:14
SDLの中にSDL.dllとSDL_d.dllがあって、この両方を外に出せば安全だと思うんだけど、
普通にimport SDLしてコンパイルするとSDL_d.dllがなくても動いてしまう。
(サイズ的にSDL_d.dllがデバッグようにもみえない)

で、LGPLのSDL.d部分がexeに含んでるから強制オープンソースなるんじゃないかなと・・・
普通のライブラリならsdl.dからソース部分を取り除いてヘッダ化するんだろうけど、
既にソースコードがない状態だからぬきようがない。
ようはヘッダにLGPLがついているような感じに見えるんだけど・・・なんか勘違いしてるかな・・・。

890デフォルトの名無しさん:2006/01/01(日) 21:08:54
SDLってのはmain()がライブラリの中にあるの?
891デフォルトの名無しさん:2006/01/01(日) 21:38:48
>>889
>もしそのようなオブジェクトファイルが、(LGPLな著作物から取られた)数字のパラメタや
>データ構造のレイアウト、アクセス機構または小さなマクロや小さなインライン関数(長さが
>10 行かそれ以下)のみ利用するならば、そのオブジェクトファイルの利用は、それが法的に
>派生物とみなされようとみなされまいと制限されない。
なので、実装のない.dのソースやらヘッダファイルやら.diなら、
LGPLに制限されずに他から参照して使っておk。心配いらんよ。
892デフォルトの名無しさん:2006/01/01(日) 21:49:22
149 名前:デフォルトの名無しさん[sage] 投稿日:04/08/07(土) 21:50
   あのさ、D で SDL を使ってて、LGPL の話。
   SDL.dll の LGPL は、動的リンクにすれば、本体に影響を及ぼさない、
   というのはいいんだけど
   SDL.d が LGPL だったら、それを import してる本体は大丈夫?
   C の #include と違って、ソースが入ってくるわけじゃないけど…。

150 名前:shinichiro.h[] 投稿日:04/08/08(日) 00:09
   あ、はい、私もそれ、問題だと思ってました。
   LGPL についてきちんと理解できてるわけでは無いのですけど、
   結論から言うと今のままでは多分マズいと思います。
   たぶん import と #include は LGPL の話とは関係無くて、
   問題になるのは C のマクロを関数で書き直している部分があって、
   (例えば SDL_LoadBMP など) そこがシンボルを持っているのですが、
   それをリンク時にスタティックリンクしていることです。

   実際 SDL でもスタティックリンクしなければならない
   SDL_main なんかは Public Domain に置かれていたりします。
   まあ SDL の ML の雰囲気なんかを考えると
   実際にこの件について文句が来ることはまず無いと思いますが、
   気持ち悪いと言えば気持ち悪いので対処を考えますです。
   たぶん、 SDL_d.dll みたいなのを配るか、マクロの部分を
   非 LGPL に置く許可を得るか、あとひょっとしたら LGPL に
   そういうラッパの際の配慮もあったような無かったような
   気がするのでそのへんも調べてみます。
893デフォルトの名無しさん:2006/01/02(月) 17:05:46
LGPLはヘッダにまで影響されないよ。
安心しる!
894デフォルトの名無しさん:2006/01/02(月) 17:43:49
じゃあelがLGPLでも安心だね
895デフォルトの名無しさん:2006/01/02(月) 18:39:35
>>894
あれは、ヘッダーに実装しか書いてないから駄目だろw
896デフォルトの名無しさん:2006/01/02(月) 18:49:07
std.uriのdecodeを見たのですが、uriを一度UTF-32にしてから
UTF-8にしているように思ったんですが、何か理由があるのでし
ょうか?
それと、decodeはエスケープシーケンスを置換しないとあるの
ですが置換してしまいます。何故でしょう?
897デフォルトの名無しさん:2006/01/02(月) 19:04:31
>>896
1.UTF-8だと1文字ごとの処理がマンドクセ
2.君は何か勘違いをしている
898デフォルトの名無しさん:2006/01/02(月) 19:13:58
UTF-8は可変長だからということでしょうか。
uriのエスケープシーケンスというのは、漢字などを%と数字で表して
いる部分のことだと理解していますが違いましたか?
899デフォルトの名無しさん:2006/01/02(月) 19:21:21
例えば、 kanji desu=あ(UTF-8) をuriエンコードすると
kanji+desu=%E3%81%82になると思いますが、これをdecodeでは
kanji desu=%E3%81%82

となりdecodeComponentでは
kanji desu=あ

になるのかなと思ったのですが。
900デフォルトの名無しさん:2006/01/02(月) 19:55:29
リファレンスを自力で翻訳してるのか?
>>1
の「プログラム言語 D」からstd.uriのリファレンス見てみ?
901デフォルトの名無しさん:2006/01/02(月) 20:21:49
もちろん日本語リファレンスを見ています。たまにソースも見ますが。
もしかしてutf-8の漢字コードをuriエンコードしたものも、有効なエス
ケープシーケンスということなんでしょうか?
902デフォルトの名無しさん:2006/01/02(月) 20:25:44
おいおい。何のためにURIのエンコード/デコードをやってるとおもってんだ。
903902:2006/01/02(月) 20:32:19
今見てみたら、日本語版は誤訳してるね。英語版しか見てないから気づかなかったよ。

原文は"Escape sequences that resolve to valid URI characters are not replaced."
なので、
「URIで正当な文字になるエスケープシーケンスは置換されません。」
だね。
904日本語訳の人:2006/01/02(月) 22:30:23
あ、ほんとだ間違ってるごめん。明日直します。 >>903

decode("%41%42%43")=="ABC" になるので、実装と(たぶん)意図した仕様に
従うと正確には「decodeComponentと違って ";/?:@&=+$," や "#" になる
エスケープシーケンスは置換されない」ということみたいです。
905デフォルトの名無しさん:2006/01/03(火) 12:44:40
ということは%..は置換されるわけなのですね。

ところで、apacheの環境変数など、uriエンコードされた文字列の文字コード
は何なのでしょう。
shift-jisやeuc-jp、UTF-8などの場合は共通ですから気にすることはないの
ですが、例えばUTF-16の文字列をuriエンコードした場合はどの文字コードに
なるのかということです。
906デフォルトの名無しさん:2006/01/03(火) 15:12:28
RFCを見てきなさい。
907デフォルトの名無しさん:2006/01/03(火) 17:47:16
>>862
のやつはなんのことなのか誰かエロい人おながいします.
908デフォルトの名無しさん:2006/01/03(火) 17:51:41
>>907
ようするに、Cでいうところのヘッダファイルみたいなもん。
909デフォルトの名無しさん:2006/01/03(火) 17:55:07
>>907
Object型にInterfacesが追加された?
910デフォルトの名無しさん:2006/01/03(火) 19:21:40
dmd -c -H hoge.d
ってやったらなんかhoge.diってのができたがよく分からん。
911デフォルトの名無しさん:2006/01/03(火) 20:02:14
ヘッダの自動生成か。
912デフォルトの名無しさん:2006/01/03(火) 20:25:19
>>520あたりの話かな
913デフォルトの名無しさん:2006/01/03(火) 21:17:03
Walterタソ謹製
coffimplib tool (beta)
tp://ftp.digitalmars.com/coffimplib.zip

MicrosoftのCOFFインポートライブラリをDM linkで使用できる形に変換するもの。
914デフォルトの名無しさん:2006/01/04(水) 09:22:17
interface fileなんて言うから、Interface関係の何かだと思ってたらヘッダ抜き出す事だったのか。
これでライブラリ配布が楽になりそうだな。
短い関数は実体が入っちゃってるっぽいけど。
915デフォルトの名無しさん:2006/01/05(木) 16:22:00
wxDが最新のD言語に追随し、さらにLinuxとMac OS Xでも動作するようになりまつた
うpしたの漏れじゃねーけど
あと漏れもジャップだ>>199,,>>205

http://wxd.sourceforge.net/
916デフォルトの名無しさん:2006/01/05(木) 17:04:49
作者きたこれ
917デフォルトの名無しさん:2006/01/05(木) 22:07:38
>>910
なるほどと

// hello.d
int main(char[][] args)
{
return 0;
}

を dmd -c -H hello.d としてみたら
アクセス違反で落ちるんだけど・・・
なんでうちではできないのかなあ
918デフォルトの名無しさん:2006/01/06(金) 01:06:48
>>917
うちだと問題なくhello.diが出るなあ。
インライン化できるサイズならそのまんまdiに関数の中身も入れるっぽくて
hello.dよりむしろデカいのが出来るけど。

dmdのバグ突きそうなパスで実行したりしてる?
919917:2006/01/06(金) 03:31:50
・Win32版 dmc.zip (リンカなどの小物ツール)

コンパイラだけじゃなくてこっちも更新したらいけたっぽ.
一緒に更新しなきゃいけなかったのか.
thx
920デフォルトの名無しさん:2006/01/06(金) 04:19:29
>>915
いいよいいよー(・∀・)
もっと褒めてオーラ出してもいいよー
921デフォルトの名無しさん:2006/01/06(金) 10:20:12
コンストラクタを含むクラスに対してinterface fileの生成を行うとクラッシュするね
public class fuga { this() { } }
922デフォルトの名無しさん:2006/01/07(土) 19:28:26
相変わらずバグだらけだな
923デフォルトの名無しさん:2006/01/08(日) 00:55:11
>>922
おまえのシナプス結合よりはまともだがな
924デフォルトの名無しさん:2006/01/08(日) 00:57:02
ttp://pc8.2ch.net/test/read.cgi/prog/1134400802/307
きっとこれが原因でバグが多いのでしょう
925デフォルトの名無しさん:2006/01/08(日) 01:13:34
D言語は糞言語。すぐに消える。
926デフォルトの名無しさん:2006/01/08(日) 02:13:01
>>925

くわしく
927デフォルトの名無しさん:2006/01/08(日) 02:42:20
Delphi>>>>>>
928デフォルトの名無しさん:2006/01/08(日) 11:07:14
ちょっと聞きたいんですげど
C言語の

#include "自作ヘッダ.h"

みたいのはどうやったらいいですか?
929デフォルトの名無しさん:2006/01/08(日) 11:25:41
import
930デフォルトの名無しさん:2006/01/08(日) 11:30:49
extern (C)
931デフォルトの名無しさん:2006/01/08(日) 14:23:37
import std.string;
import std.c.stdlib;

char[] mygetenv(char[] name) {
return toString(std.c.stdlib.getenv(toStringz(name)));
}

int main(char[][] args) {
printf("%s\n", mygetenv("PATH"));
return 0;
}

とかするとセグメンテーション違反で落ちる。
mygetenv()の戻り値を参照した瞬間に吹っ飛んでるようだ。
Linux DMD 0.142 なんだが、俺だけですか。orz
932デフォルトの名無しさん:2006/01/08(日) 14:37:13
"%.*s\n"
以上。
933931:2006/01/08(日) 15:16:00
うぁ、できた…。
何故か "%s" と "%.s*" を逆に覚えてたっぽい。
吊ってくる。
934デフォルトの名無しさん:2006/01/08(日) 22:53:22
printfなんか使うなよ、と言いかけてphobosの貧弱さを思い出して黙る俺
935デフォルトの名無しさん:2006/01/08(日) 23:12:06
writefはそこそこ強力だぞ。あんまり使われてないが。
936デフォルトの名無しさん:2006/01/08(日) 23:20:01
>>935
禿げしくgj!
オペランドにchar[]突っ込んでも使えるし
%sに数値入れても自動的に文字列に変換される
出力先ファイルディスクリプタも指定できる
全くドキュメントは隅まで読まんとな
937デフォルトの名無しさん:2006/01/08(日) 23:58:30
プリント文は1つに統一して欲しい。
昔PHPでprint派とecho派とで激しい抗争があって大変だった。
938デフォルトの名無しさん:2006/01/09(月) 00:14:30
暇な奴いたらちょっと助けて。
DのDLLをCからLoadLibraryして使おうとしてるんだけど
Dでexportした、

extern(C)
byte sum(byte v1, byte v2)
{
  return v1+v2;
}

の関数ポインタをgetFunctionAddressしてbyte function(byte, byte)にキャストしたのを
sum(1,2)みたいに呼んでるのね。

ところがこの関数、何故か常に変な値が返ってくる。
よく見るとv2は引数に何を入れて呼んでも内部では必ず0xC8が入ってる。
v1にはちゃんと適切な値が渡ってるのにも関わらず・・・
引数を取らない関数、1個しか取らない関数は普通に動く。
詳査した所、第2引数以降は何もそれらしい物は渡ってないっぽい。
byteをintにしてデバッグアウトしたらv2には常に4264136が入ってる。
第2引数以降のバイト列は必ず0xC8 0x10 0x41... と続いてる事が判明。
変だ〜変だ〜ってんでポインタ取って後続バイト覗いたり色々してたんだけど

最終的にlong渡しなら2個目以降もなぜか適切に渡る事を発見。

でもlongしか渡せないなんて気持ち悪いし
だいいちポインタが渡せないんで根本的に何の解決にもなってない。

・なぜ第2引数以降は8オクテットで渡さないと狂うのか?
・ってか、なぜ第1引数は問題なく渡るのか?

えろい人、なんか知ってたら教えてください。
全ソースうpれと言われたらうpるよ。
939デフォルトの名無しさん:2006/01/09(月) 00:25:02
実はsum関数がすでにCで書かれた他の所にあってDのはマングリング的にスルーされたりして。
940938:2006/01/09(月) 01:55:10
>>939
ちょっと間違ってたかも
第2引数じゃなくて「最後の引数」が狂ってるっぽい?
でも今度はlongの結果が合わない・・・
なんかがズレてるっぽいのまでは分かるけど。

サンプルうpするので時間がある人はちょっと覗いてみてホスィ
http://www.uploda.org/file/uporg282088.zip
941デフォルトの名無しさん:2006/01/09(月) 03:17:14
00000000 <d_sum>:
0: 55 push %ebp
1: 8b ec mov %esp,%ebp
3: 0f be 45 08 movsbl 0x8(%ebp),%eax
7: 0f be 4d 0c movsbl 0xc(%ebp),%ecx
b: 02 c1 add %cl,%al
d: 5d pop %ebp
e: c3 ret

longでいいんじゃね?
942デフォルトの名無しさん:2006/01/09(月) 03:50:25
今更サンプル見たけど、test.dのキャストのためのaliasってextern(C)しなくていいの?
あとCから呼ぶならテストはCで書いた方がいいんじゃねーの?

関係ないけど酒がウメェ
943one^:2006/01/09(月) 04:09:39
CとDは呼び出し規約が違うので、extern(C)しているなら、
呼び側もそうしないといけないです。

/+ 関数型ども +/
extern(C) {
alias void function() vF;
alias byte function(byte) bFb;
(略
}
944デフォルトの名無しさん:2006/01/09(月) 04:55:14
>>942,943
ビンゴ!
関数型functionの宣言にextern(C)属性付けたら正しい値を返すようになりますた!
Cで書いた(これも正常動作する)意味同等のソースも同梱してうpしたので
今後Dで汎用DLLを、と考えてる漏れのようなニュービーが見てたら参考にして下さい
重ねて感謝、感謝
http://www.uploda.org/file/uporg282237.zip
945デフォルトの名無しさん:2006/01/09(月) 05:29:52
>>>>>>D
946デフォルトの名無しさん:2006/01/09(月) 05:32:16
947デフォルトの名無しさん:2006/01/09(月) 06:01:46
      冫─'  ~  ̄´^-、
    /          丶
   /             ノ、
  /  /ヽ丿彡彡彡彡彡ヽヽ
  |  丿            ミ
  | 彡 ____  ____  ミ/
  ゝ_//|    |⌒|    |ヽゞ
  |tゝ  \__/_  \__/ | |  <J#ツカエヨ、キミ!
  ヽノ    /\_/\   |ノ
   ゝ   /ヽ───‐ヽ /
    /|ヽ   ヽ──'   /
   / |  \    ̄  /
 / ヽ    ‐-
948デフォルトの名無しさん:2006/01/09(月) 08:37:47
extern(C)の話題って間欠泉的に出てくる
いっそのことDで書く関数全てにextern(C)付けようかと思っている
949デフォルトの名無しさん:2006/01/09(月) 09:02:20
950デフォルトの名無しさん:2006/01/09(月) 13:41:20
>>949
それ違う
951デフォルトの名無しさん:2006/01/09(月) 14:02:39
3次元配列の対応まだー?
952デフォルトの名無しさん:2006/01/09(月) 18:08:35
次スレ立てる人はD言語研究のリンクを直してくれるとありがたい
953デフォルトの名無しさん:2006/01/10(火) 23:00:54
次スレまだー?
954デフォルトの名無しさん:2006/01/11(水) 09:20:04
まだ。
955デフォルトの名無しさん:2006/01/11(水) 18:45:23
DMD 0.143
956デフォルトの名無しさん:2006/01/12(木) 00:21:39
ん?3次元できへんの?
普通64次元までOKとか使わねーよってくらいの次元数サポートしてるもんなのに
957デフォルトの名無しさん:2006/01/12(木) 01:45:54
ほかの言語で言うところの多次元配列なんて存在しなくて、
C/C++と同じく配列の配列などを多次元配列の代わりにするのがD

俺はそれで十分と思うんだけどね。
動的多次元配列を扱うのがチョイ面倒なだけだし。
958デフォルトの名無しさん:2006/01/12(木) 05:47:31
面倒なのは要素数可変のときだけだよね
959デフォルトの名無しさん:2006/01/12(木) 20:50:29
即落ち阻止
960デフォルトの名無しさん:2006/01/12(木) 21:16:30
961デフォルトの名無しさん:2006/01/12(木) 21:25:41
>>957
静的なサイズの二次元配列を生成すると連続したメモリ領域に
確保されるってやつの三次元版という話ではないのかなぁ、
とか思ったがそれは今対応してないのかすら俺は知らん。
962デフォルトの名無しさん:2006/01/12(木) 21:30:28
char[][][]が文法エラーになるってことじゃね?
テストしてないけど
963デフォルトの名無しさん:2006/01/12(木) 22:12:30
int[] test=[2,3,4];ができないのどうにか欲しいなぁ…
まぁ以下のようにすれば簡単にできるので必要ないけど
#テンプレート? 何それ? おいしい?

private import std.string;
private import std.stdio;

int main(){
  int[] test=newArr(2,3,4,5);
  writef("%s\n",test);
  char[][] test2=newArr("test","test2","test3");
  writef("%s\n",test2);
  return 0;
}

int[] newArr(int[] i...){
  return i.dup;
}

char[][] newArr(char[][] i...){
  return i.dup;
}
964デフォルトの名無しさん:2006/01/12(木) 22:22:30
char[][int][char[]]がいつのまにかコンパイル通るようになってるな

>>963
private import std.string;
private import std.stdio;

int main(){
  int[] test=TArr!(int)._new(2,3,4,5);
  writef("%s\n",test);
  char[][] test2=TArr!(char[])._new("test","test2","test3");
  writef("%s\n",test2);
  char[][][] test3=TArr!(char[][])._new(TArr!(char[])._new("test","test2","test3"),TArr!(char[])._new("test","test2","test3"),TArr!(char[])._new("test","test2","test3"));
  writef("%s\n",test3);
  return 0;
}


template TArr(T){
  T[] _new(T[] i...){
    return i.dup;
  }
}
965デフォルトの名無しさん:2006/01/13(金) 00:10:54
int[] test = new int [2,3,4];
966デフォルトの名無しさん:2006/01/13(金) 00:20:35
うほっ
967デフォルトの名無しさん:2006/01/13(金) 01:09:16
>>965
長さ4の配列ができました。本当にありがとうございました。
968デフォルトの名無しさん:2006/01/13(金) 01:27:06
唖然
969デフォルトの名無しさん:2006/01/13(金) 01:28:49
変な仕様埋め込むくらいならコンパイルエラー出して欲しい好例
970デフォルトの名無しさん:2006/01/13(金) 01:38:26
いや、それは式「 2, 3, 4 」の結果が 4 だから。
int[] test = new int[4];
とやってるに過ぎない。
コンパイルエラー出せないだろう。
971デフォルトの名無しさん:2006/01/13(金) 01:48:54
おまいらエラーメッセージくらい嫁

static int[] test = [2, 3, 4];
972デフォルトの名無しさん:2006/01/13(金) 01:50:01
>>970
http://www.digitalmars.com/d/expression.html
見たけど、仕様では
Expression:
  AssignExpression
  AssignExpression , Expression

NewExpression:
  NewArguments Type [ AssignExpression ]
だから、仕様ではコンパイルエラーになるべきなのでは?


NewExpression:
  NewArguments Type [ Expression ]
だったら仕様通りなんだろうけど。
973デフォルトの名無しさん:2006/01/13(金) 01:52:12
いや、それはみんな分かってるし。w
ネタにマジレス。w
974デフォルトの名無しさん:2006/01/13(金) 02:02:38
こういう風に書ける訳だし問題ないと言えなくも無い

static int[] test = [2, 3, 4];
test[1] = 5;
int[] test2 = test.dup;
writef("%s\n", test2);
975デフォルトの名無しさん:2006/01/13(金) 02:06:40
要は慣れですかね。
976デフォルトの名無しさん:2006/01/13(金) 08:42:02
977デフォルトの名無しさん:2006/01/13(金) 08:58:05
もう少しPHOBOSが充実するかQtのようなGUIツールがでてくれば人気がでると
思います。
Cの関数との親和性の良さもポイントですね。
とにかく素人の僕にはC++よりもずっと扱い易いです。
メモリ管理をしなくてもいいし、ファイル、ディレクトリ関連のライブラリが
標準で用意されているのもうれしいですね。
978デフォルトの名無しさん:2006/01/13(金) 12:18:52
ぶっちゃけ dmd と gdc どっち使うのが良いでしょうか?
979デフォルトの名無しさん:2006/01/13(金) 15:25:16
今はdmdじゃないでしょうか。
gdcは使ったことない私が言っていいものかとも思いますが。
980デフォルトの名無しさん:2006/01/13(金) 15:53:22
>>977
一番良いのはインターフェースと実装が同じソースに書けるってところだ。
981デフォルトの名無しさん:2006/01/13(金) 15:59:48
>980
俺はプロトタイプ宣言でメンバの一覧が把握できるから分割*もできる*ほうが好み。

まあdoxygenとかその手のツール使えと言う話になるかも知れんけど。
982デフォルトの名無しさん:2006/01/13(金) 20:39:10
分割できると2箇所直さないといけないからなあ。
自動的に作ってくれるのが理想的かな。
983デフォルトの名無しさん:2006/01/13(金) 22:41:47
コンパイル時のオプションで宣言の一覧を吐くようになれば良し。
ドキュメントにしろインターフェイスファイルにしろ、
そういうのはバイナリと一緒に出てくるべきなんじゃないのかな。
984デフォルトの名無しさん:2006/01/13(金) 22:43:07
>>983
すでにできますが。
985デフォルトの名無しさん:2006/01/13(金) 23:55:55
>>984
つまりD最高ってことで
986デフォルトの名無しさん:2006/01/14(土) 05:43:46
クラスのメンバをポインタにする必要がないのもいいですね。
987デフォルトの名無しさん:2006/01/14(土) 09:23:12
みなさんがこれまでに書いた実用的なDプログラムを晒してください
988デフォルトの名無しさん:2006/01/14(土) 14:18:03
std::coutのように見える何か
989デフォルトの名無しさん:2006/01/14(土) 14:41:27
みなさんがこれまでにDで書いた実用的なアプリケーションを晒してください
990デフォルトの名無しさん:2006/01/14(土) 16:49:16
>>989
Hello World!!!
991デフォルトの名無しさん:2006/01/14(土) 17:10:14
みなさんがこれまでにDで書いた実用的なアプリケーションを晒してください
992デフォルトの名無しさん:2006/01/14(土) 17:17:43
みなさんがこれまでにかいた実用的なDカップのおっぱいを晒してください
993デフォルトの名無しさん:2006/01/14(土) 17:19:19
みなさんがこれまでにDまで行った実用的な彼女を晒して下さい
994デフォルトの名無しさん:2006/01/14(土) 18:16:23
>>992
絵?マス?
どっち?
995デフォルトの名無しさん:2006/01/14(土) 18:23:13
酒井若菜
996デフォルトの名無しさん:2006/01/14(土) 19:34:26
みなさんおいくつですか?
997デフォルトの名無しさん:2006/01/14(土) 20:43:01
0.143歳です。
998デフォルトの名無しさん:2006/01/14(土) 22:09:16
999デフォルトの名無しさん:2006/01/14(土) 22:10:00
1000ならカノジョとD
1000デフォルトの名無しさん:2006/01/14(土) 22:12:34
1000なら3月に正式リリースされる。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。