C#, C♯, C#相談室 Part45 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/01/21 19:35:37
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。

前スレ
C#, C♯, C#相談室 Part44
スレリンク(tech板)

その他テンプレ>>2-5くらい

2:デフォルトの名無しさん
08/01/21 19:36:31
Visual C# 2005 Express Edition 日本語版
URLリンク(www.microsoft.com)

ふらっとC#,C♯,C#(初心者用) Part23
スレリンク(tech板)

MSDNライブラリ
URLリンク(msdn.microsoft.com)

MSDN2
URLリンク(msdn2.microsoft.com)

pinvoke.net: the interop wiki!
URLリンク(pinvoke.net)



3:デフォルトの名無しさん
08/01/21 19:37:09
Visual C# Express Edition (無料)ダウンロード
URLリンク(www.microsoft.com)

.NET Framework SDK (2.0)
URLリンク(msdn2.microsoft.com)

MSDN Visual C# Express Edition フォーラム
URLリンク(forums.microsoft.com)
Visual Studio ユーザーグループ
URLリンク(vsug.jp)

@IT Insider.NET
URLリンク(www.atmarkit.co.jp)
Insider.NET 会議室 ディレクトリ
URLリンク(www.atmarkit.co.jp)

宇宙仮面の C# プログラミング / C# Programming
URLリンク(ukamen.hp.infoseek.co.jp)
WisdomSoft C#入門
URLリンク(wisdom.sakura.ne.jp)
WisdomSoft Microsoft .NET入門
URLリンク(black.sakura.ne.jp)
どっとねっとふぁん
URLリンク(dotnetfan.org)
緑のバイク 初めてのC# 〜 覚え書き 〜
URLリンク(homepage3.nifty.com)
どぼん!の .NET Tips
URLリンク(dobon.net)

4:デフォルトの名無しさん
08/01/21 20:05:26


5:デフォルトの名無しさん
08/01/21 22:01:53
>>1乙。

誰もスレ立てないまま前スレあっさり終わったなw

6:デフォルトの名無しさん
08/01/21 22:08:05
C#スレはむしろその方が多いような

7:デフォルトの名無しさん
08/01/21 22:16:13
>>1乙〜

8:デフォルトの名無しさん
08/01/21 22:39:04
.Net 2.0、C# 2005 で Windowsコントロールライブラリを作って
IEに貼り付けて、Windowsコントロールライブラリが通知したイベントを
javascriptで検知する方法を紹介しているサイトをご存じないですか?


9:デフォルトの名無しさん
08/01/21 22:47:29
window.external とか InvokeScript とかで検索すれば出てくるかもね

10:デフォルトの名無しさん
08/01/22 01:48:30
>>2
次は2008に書き換えようぜ、同志。

11:デフォルトの名無しさん
08/01/22 11:46:21
System.IO.Packaging.ZipPackage って、 OPC専用?

既存の zip の中身が読めないし、
zipファイルを作成すれば、勝手に変なファイル([Content_Types].xml)が作られるし。

#ziplib の代わりになるかと思って期待したのに。

12:デフォルトの名無しさん
08/01/22 12:59:00
専用。
インターナルなZipArchiveかなんかだっけ?公開してくれたらいいのに

13:デフォルトの名無しさん
08/01/22 23:59:56
やっぱりそうか。
DotNetZipを調べてみるよ。

14:デフォルトの名無しさん
08/01/23 01:56:44
J#のライブラリでzipできるじゃなかったっけ

15:デフォルトの名無しさん
08/01/23 01:57:22
jslib

16:デフォルトの名無しさん
08/01/23 09:19:47
J#(笑)

17:デフォルトの名無しさん
08/01/24 12:16:42

class A
{
private string var="test";

public string func(string name)
{
return xxxx(name);// name="var"のときreturn varになる
}
}

こんなことしてくれる上記xxxxに相当するようなものはないでしょうか?

18:デフォルトの名無しさん
08/01/24 12:41:38
なんでstring引数にしないと駄目なの?

19:デフォルトの名無しさん
08/01/24 12:45:42
private Dictionary<string, string> values={{"var","test"}};

public string func(string name)
{
return values[name];// name="var"のときreturn varになる
}
変数名にvarを使うのはやめとけ

20:19
08/01/24 12:50:07
無理にC#3.0使おうとして間違えた正しくはこう
Dictionary<string, string> values = new Dictionary<string,string>{{"var","test"}};
C#2.0ならコンストラクタとかで
values.Add("var", "test");

21:デフォルトの名無しさん
08/01/24 13:05:48
varはまずかったですね

できました


class A
{
private string str="test";

public string func(string name)
{
Type ty = typeof(A);
FieldInfo fi = ty.GetField(name);
return (string)fi.GetValue(this);
}
}


A B = new A();
 Console.WriteLine(B.func("str"));

とすると

test

が表示されます

22:デフォルトの名無しさん
08/01/24 13:14:28
他のクラスのメンバにそうやってアクセスするならわかるけど
自分のクラスのフィールドでそれをやる意味がわからない

23:デフォルトの名無しさん
08/01/24 15:13:38
もう、「変数に変数の名前でアクセスする方法教えてください><」は禁止しない?
教えたって本人にとっていいことないし

24:デフォルトの名無しさん
08/01/24 15:38:55
またスクリプト脳か。

25:デフォルトの名無しさん
08/01/24 15:57:04
どれがスクリプト脳?22?23?24?

26:デフォルトの名無しさん
08/01/24 16:00:00
25

27:デフォルトの名無しさん
08/01/24 16:02:52
FAQということでまとめておいて
FAQ見れ、と答えることにするとか

28:デフォルトの名無しさん
08/01/24 16:23:00
・コントロールをコントロールの名前で
・クラス名の文字列からインスタンスを
・ジェネリックで計算
・GC

29:デフォルトの名無しさん
08/01/25 10:46:16
Convert.ToDateTime があるのに Convert.ToTimeSpan がないのが気に食わない

30:デフォルトの名無しさん
08/01/25 11:22:06
TimeSpan と言えば IFormattable じゃないのも納得できんな

31:デフォルトの名無しさん
08/01/25 11:32:21
またスクリプト脳か。

32:デフォルトの名無しさん
08/01/25 12:36:44
IEの「名前を付けて保存」にある
ファイル種類「Web アーカイブ、単一のファイル(*.mht)」を
C#上から実施する方法ってないですか?

33:デフォルトの名無しさん
08/01/25 13:50:28
多少のエスパー能力を使って
CDO.Message 使えば?

34:デフォルトの名無しさん
08/01/25 20:35:18
>>32
mht保存はVB.NETだけど公開されてたはず
場所は忘れたけど

35:デフォルトの名無しさん
08/01/26 02:52:12
ありがとうございます。
調べてみます。

36:34
08/01/26 03:16:41
>>35
URLリンク(www.atmarkit.co.jp)
以前見たのはこれじゃないけどコレでどう?

37:デフォルトの名無しさん
08/01/26 10:30:19
真ん中あたりの、コメントアウトしてるところ、1から3までどれやっても期待する
結果が得られないのは、何でなんだぜ? 0,2,4,...,18 が出て欲しいんだが。

static void Exec()
{
Action<int, int> sumShower = (n, n0) => Console.WriteLine(n + n0);
Action<int> act = n => Bind(sumShower, n);

Action<int>[] acts = new Action<int>[10];

for (int i = 0; i < acts.Length; i++)
{
acts[i] =
//1: n => sumShower(i, n)
//2: n => Bind(sumShower, n)
//3: act
;
}

for (int i = 0; i < acts.Length; i++)
{
acts[i](i);
}

return;
}

static Action<int> Bind(Action<int, int> act, int val)
{
return i => act(tmp, i);
}


38:デフォルトの名無しさん
08/01/26 12:49:14
>>37
コメントの1はこれで動く。
for (int i = 0; i < acts.Length; i++) 
{ 
 int j = i;
 acts[j] = n => sumShower(j, n); 
} 


39:デフォルトの名無しさん
08/01/26 13:06:47
自分で書いておいてなんだが、つーか、shower ってなんだよw

40:デフォルトの名無しさん
08/01/26 13:09:56
>>38
やっぱそれしかないわけか。さんくす。
2, 3 は俺が何か根本的な勘違いしてるかもしれないので、わかる人指摘よろ。

41:デフォルトの名無しさん
08/01/26 13:15:26
何度もすまん。Bind() がこれじゃあコンパイル通らないな。
>>38 で指摘されてる方法を試してたのがそのままになってた。
正しくは、

static Action<int> Bind(Action<int, int> act, int val)
{
 return i => act(val, i);
}


42:デフォルトの名無しさん
08/01/26 14:49:30
>>40
actとBindが何をしたいのか説明しないとわからんよ。
なにやらループしてるように見える。

43:デフォルトの名無しさん
08/01/26 15:29:16
Action<int> act = n => Bind(sumShower, n);

Action<int> act = n => Bind(sumShower, n)(n);

44:デフォルトの名無しさん
08/01/26 18:32:34
>>42
やりたいのは、関数型言語で言うところのカリー化です。束縛(Bind)じゃないですね。
勘違いしていて、またおかしな名前をつけてしまいました。

>43
あー、なるほど。引数が一つ足りないんですね。やってみたら動きました。
ありがとうございました。

45:デフォルトの名無しさん
08/01/26 20:06:30
C#のジェネリックプログラミングを詳しく解説してある本あったら教えてください

46:デフォルトの名無しさん
08/01/26 20:08:12
プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書): ホーム: ジェフリー リッチャー,Jeffrey Richter,吉松 史彰

47:デフォルトの名無しさん
08/01/26 20:51:18
>>44
>関数型言語で言うところのカリー化です。

それは部分適用のことをカリー化と呼んでる気がする。

C++界隈ではbindって呼んでるし別にbindでもいいと思うけどね。

参考)
URLリンク(vader.g.hatena.ne.jp)


48:デフォルトの名無しさん
08/01/27 19:18:27
googleでC#の情報を効率よく検索するには
どうしたらよいでしょうか

検索時に ○○ VC# などと検索しても
#が検索対象にならんのですわ

49:デフォルトの名無しさん
08/01/27 19:21:31
VC#じゃなくてC#ならおk

50:デフォルトの名無しさん
08/01/27 19:22:50
>>48
c int
c# int
検索結果をくらべてみよう。
vc# は認識されないが、c#はgoogleが認識する。

それにしてもMSのネーミングセンスひどいよな。
".NET" のノイズが入らない検索方法があったら知りたい。

51:デフォルトの名無しさん
08/01/27 19:23:26
>>49
おおぅ
これはすばらしい。コロンブスの卵でした

52:デフォルトの名無しさん
08/01/27 19:55:08
アプリケーションの発行 って何に使うの?

53:デフォルトの名無しさん
08/01/27 19:59:32
前は +"C#" で検索してたけど、
最近は C# で絞れるんだな。

54:デフォルトの名無しさん
08/01/27 21:57:14
それ系の Web サイトや blog やってる人は、ことごとく csharp という
キーワードを入れておくってのを、みんなでやればいいかも。

55:デフォルトの名無しさん
08/01/27 21:58:27
>>50
COM とかもアレだな。

56:デフォルトの名無しさん
08/01/27 22:03:13
COMって時々聞くけど知っとくべきもん?
今のところまったく経験なし

57:デフォルトの名無しさん
08/01/27 22:07:28
DirectX を生で使うつもりがあるなら。

58:デフォルトの名無しさん
08/01/28 00:13:24
Officeやシェルなどに手を出す必要があれば。

59:デフォルトの名無しさん
08/01/28 00:34:36
ExcelもCOM

60:デフォルトの名無しさん
08/01/28 00:35:14
IE コンポーネントブラウザ作ったり

61:デフォルトの名無しさん
08/01/28 00:57:45
次期バージョンで遅延バインディングが入るらしいね

62:デフォルトの名無しさん
08/01/28 01:39:08
COM楽しいよ
シェルの深みに嵌まってる
半分溺れかけてるとも言えるけど(;´Д`)

63:デフォルトの名無しさん
08/01/28 01:55:50
>>61
マジで?

64:デフォルトの名無しさん
08/01/28 02:15:18
>>63
URLリンク(blogs.msdn.com)
unsafeみたいに,書く人に罪悪感を与えるような構文でいいねw

65:デフォルトの名無しさん
08/01/28 14:01:32
Formatで-を出すことはできるけど、+はだすことできないですかね?

66:デフォルトの名無しさん
08/01/28 14:22:23
ToString("+0;-0;0")
string.Format("{0:+0;-0;0}", x)

67:デフォルトの名無しさん
08/01/28 14:31:05
>>66
ありがとう!!

68:デフォルトの名無しさん
08/01/29 17:18:49
this.を普段書かない方に質問です。

staticなプロパティと非staticなプロパティとで、命名規則って変えてますか?
変えている場合は、どういう違いをつけていますか?

今は非staticな方に_を付けていますが、どうもしっくりこなくて・・・


69:デフォルトの名無しさん
08/01/29 17:24:41
しっくりも何も命名ガイドライン的にアウトじゃん。
たぶんメンバ変数のことだろうけど、それでいいんじゃね?
俺はthis付ける派だけど。

70:デフォルトの名無しさん
08/01/29 17:38:50
>たぶんメンバ変数のことだろうけど
違います

71:デフォルトの名無しさん
08/01/29 18:22:59
じゃアウトだよ

72:デフォルトの名無しさん
08/01/29 18:28:05
_つけてpublicだったりしてるの? >プロパティ

73:デフォルトの名無しさん
08/01/29 18:44:04
普通はstaticなプロパティなりフィールドなりって
staticであることが意味的に明らかな場合が多いから、タグで区別する必要性は感じないな。

というか、今までインスタンスメンバと混同するような状況になったことが
たぶん一度もないと思う。

結論。
それってそもそも設計が変なんじゃないの?

74:68
08/01/29 18:45:28
>>69
>しっくりも何も命名ガイドライン的にアウトじゃん。
どこのガイドラインですか?
(C/C++で禁止になっていること・MSではPascalにしてくれとなっていることは知っています)
仕様上禁止だというのであれば、ソースをお願い致します。

>>72
メソッド内で、staticか非staticか見た目で判別できないじゃないですか
そのプロパティが定義されているクラス内でのことなので、publicかどうかは関係ないです…

75:デフォルトの名無しさん
08/01/29 18:50:31
判断できなくて困るほどでかいクラスを書かない

76:デフォルトの名無しさん
08/01/29 18:51:37
仕様上なんて誰も言ってない
命名ガイドラインには沿っていないって話だろ。
「ガイドライン」の意味分かる?
URLリンク(msdn.microsoft.com)

77:デフォルトの名無しさん
08/01/29 18:53:22
>>76
アナタC++のソースでハンガリアン記法とかやっちゃう人ですね

78:デフォルトの名無しさん
08/01/29 18:54:15
>そのプロパティが定義されているクラス内でのことなので、publicかどうかは関係ないです…

多分基本的な語彙について、話が噛み合ってない気がする

79:デフォルトの名無しさん
08/01/29 18:57:01
>>77
(゚д゚)ハァ?

80:68
08/01/29 19:31:00
>>75
自作クラスばかりで構成されたアプリでは問題になっていないのですが、
既存のライブラリorフレームワーク上のクラスを継承した時に問題になるんです。

>>76
階層をもう少しのぼってよく読んでみたらいいと思います

81:68
08/01/29 19:40:19
いっぱい釣れたので、今日のところは帰ります。

82:デフォルトの名無しさん
08/01/29 19:40:20
>>80
具体例をあげてみたら?

83:デフォルトの名無しさん
08/01/29 19:48:28
メインのFormのメソッド呼びたいとき、

・static void Mainが書かれてるクラスにFormのインスタンスを取得するメソッドを書く
・シングルトンにする

どっちが一般的なの?

Dispose Finalizeパターンとシングルトンって相性悪そうだけど、
Program.GetForm()とか書くのも気持ち悪い・・・

あ、複数ウインドウ出さないアプリの前提で回答よろ

84:デフォルトの名無しさん
08/01/29 20:03:33
program.csってあんまりいじらないんじゃね?
その前提なら
1)Form.ActiveForm
2)Application.OpenForms[0]
3)
static Form1 frm1;
public Form1()
{
 Form1.frm1 = this;
}
public static Form1 MainForm
{
 get{return frm1;}
}


85:デフォルトの名無しさん
08/01/29 20:07:54
>>84 thanks
シングルトンにはしないほうが良いという結論でいいかな?
Form以外(XNAのGameクラスとか)でも使えるのは3かな

86:デフォルトの名無しさん
08/01/29 21:55:01
どのみちFormには依存するだろ

87:86
08/01/29 21:57:37
>>85
書き込んでから理解した
忘れてくれ

88:デフォルトの名無しさん
08/01/30 13:17:39
いいものみつけた
URLリンク(download.microsoft.com)
winsiggen.exe便利……かな?

89:デフォルトの名無しさん
08/01/30 13:23:23
こわくてクリックできない

90:デフォルトの名無しさん
08/01/30 13:24:36
記事は
URLリンク(msdn.microsoft.com)

日本語版記事にはダウンロードリンクがないんで
末尾のja削ってenにすると出てくるが

91:デフォルトの名無しさん
08/01/30 15:27:24
Marshal.AllocHGlobal()やMarshal.ReAllocHGlobal()の引数でサイズを指定するところはなんでIntPtrなんだろうか?
AllocHGlobal()にはintで指定するのもあるけどReAllocHGlobal()はIntPtrだけだし
intかlongが自然に思うんだけれど

92:デフォルトの名無しさん
08/01/30 15:41:33
size_t は int/long じゃないぜ

93:デフォルトの名無しさん
08/01/30 16:34:33
それが何か?

94:デフォルトの名無しさん
08/01/30 17:05:03
あほの俺が推測すると、64bit環境で2GB以上確保するため

95:デフォルトの名無しさん
08/01/30 17:47:10
>>91
メモリを確保するんだから、native intである必要があるだろ。

96:デフォルトの名無しさん
08/01/30 18:01:20
ありませんよ

97:デフォルトの名無しさん
08/01/30 18:06:24
CLIのnative int型をC#で表現してるからIntPtrになってるだけでしょ。
int32, int64, native int の中で一番自然なのはnative intだと思う。

98:デフォルトの名無しさん
08/01/30 23:03:10
>>88
これすげえ
Cのヘッダから自動生成してくれる

99:デフォルトの名無しさん
08/01/31 02:09:45
>>97
うん でもさ、IntPtrのままじゃ演算できなくて結局intからキャストしてたり
SizeOfの返り値がintだったりと他の部分との整合性が取れてない点を不自然に思ってる
インターフェースがint/longでもいいし、もしくはIntPtrでもいいけどそれで演算できてたらよかったと思ってる

100:デフォルトの名無しさん
08/01/31 09:14:53
LinqのIQueryableのProvider実装してる人いる?
ブログとかでやってる人の見たけれどなんかめんどくさそう・・・

101:デフォルトの名無しさん
08/01/31 20:25:20
C#でどこまでが言語仕様でどこからがライブラリか
という区別がよくわかりません.たとえば foreach
は予約語ですが,IEnumerable とか IEnumerator は
単なる識別子です.yield のように reserved word
ではないけど contextual keyword だというような
ものもあり,そのあたりのあいまいさが使っていて
美しくないというか・・・・

その辺をすっきりと理解して使いたいのですが,
どのような本を読めばいいのでしょうか?

102:デフォルトの名無しさん
08/01/31 20:45:02
標準クラスライブラリは言語仕様の一部

103:デフォルトの名無しさん
08/01/31 21:15:59
仕様が知りたいんなら仕様書読めばいいだろ

104:デフォルトの名無しさん
08/01/31 22:09:48
っていうか別に区別しなくていいじゃん

105:デフォルトの名無しさん
08/01/31 22:11:43
>>101
C#はCLSに基づく言語だから、C#の仕様自体がCLIの仕様を包摂している。
つまり、IEnumerableなしではC#は成立し得ない。

106:デフォルトの名無しさん
08/01/31 22:12:29
>>101
JISで仕様の日本語訳出てるから、それ読めばいいと思うよ。

107:デフォルトの名無しさん
08/01/31 22:17:13
foreachについては,必要なメソッド(GetEnumerator()とか)のシグネチャさえ合えばいいのであって
IEnumerableやIEnumeratorを実装している必要はないんだけどね

108:デフォルトの名無しさん
08/01/31 23:35:50
らしいな。

109:デフォルトの名無しさん
08/01/31 23:46:32
gnuのC#って今どのくらい使えるようになってるの?
なんかググっても全然出てこないんだけど

110:デフォルトの名無しさん
08/01/31 23:50:59
mono は gnu じゃない

111:デフォルトの名無しさん
08/02/01 00:03:43
mono以外に知らんの?

112:デフォルトの名無しさん
08/02/01 00:04:41
>>110
Portable.NETってのがあるんだよ

113:デフォルトの名無しさん
08/02/01 00:14:46
こんなものがあったのか・・・

114:デフォルトの名無しさん
08/02/01 00:16:00
monoと比べると随分と停滞してるがな。

115:デフォルトの名無しさん
08/02/01 01:00:40
IntPtrからbyte配列を取るとき、Marshal.Copyでコピーしますが、unsafeを使わずに
IntPtrから直接配列として操作することって出来ませんか?
結構Marshal.Copyでのロスが大きくて無視できないし、折角C#を使うんだから
出来ればポインタは使いたくないので…

116:デフォルトの名無しさん
08/02/01 01:01:51
無理です。

117:デフォルトの名無しさん
08/02/01 01:04:59
コピーしない方法ならあるよ

118:デフォルトの名無しさん
08/02/01 01:08:52
>>116
やっぱり無理ですか…
やっぱりポインタ使うしかないのか orz

>>117
Marshal.Read*とかでしょうか?
さすがにこれをループするのはコピーするより重そうですが…

119:デフォルトの名無しさん
08/02/01 01:18:21
byte配列の長さは一定?

120:デフォルトの名無しさん
08/02/01 01:26:46
>>119
Bitmapなので変わる可能性はあります。

121:デフォルトの名無しさん
08/02/01 01:28:03
>>120
すいません、抜けてました orz
複数のBitmapを扱うので、という意味です。

122:デフォルトの名無しさん
08/02/01 08:50:42
無理かな
byte[]とbyte*ってメモリレイアウトもたぶん違うから
byte[]→byte*なら可能ではあるんだが


123:デフォルトの名無しさん
08/02/01 12:42:17
インデクサ付けた構造体でラップすれば?
実装はunsafe使って

124:デフォルトの名無しさん
08/02/01 13:06:50
>>122
マネージ→アンマネージは出来てもアンマネージ→マネージが出来ないと言うことですかね?

>>123
ちょっとその方法試してみます。

125:762
08/02/01 14:02:36
struct ByteArrayPtr : IList<byte> {
private IntPtr ptr; private int length;
public unsafe byte this[int index] {
 get { return ((byte*)(void*)this.ptr)[index]; }
 set { ((byte*)(void*)this.ptr)[index] = value; }
}//あとは省略
こんな感じか
byte限定じゃなくてジェネリックにしたくなるけど(T*)がコンパイル通らないね

126:デフォルトの名無しさん
08/02/01 14:14:38
where T: struct

127:デフォルトの名無しさん
08/02/01 15:22:14
>>126
(・∀・)ニヤニヤ

128:デフォルトの名無しさん
08/02/02 15:00:12
C#でSpreadを使ってコーディングをしてるんですが、
バインディングソースからデータをバインドさせて、
文字列を表示しているセルがいくつかあり、
そのセルの文字列を組み合わせた文字列を表示したいセルがあるのですが、
どうも、表示されません。
設定としては、組み合わせた文字列を表示するセルのFormulaプロパティに
CONCATENATE(A1,B1)と入れているだけです。
他に何か設定が必要なのでしょうか?
よろしくお願いします。

129:デフォルトの名無しさん
08/02/02 15:12:30
>>125-126
structに制限しても無理
Tがマネージドな型を含む可能性があるから

130:デフォルトの名無しさん
08/02/02 18:43:10
>>107
どういうこと?
implementしなくてもOKってこと?

131:デフォルトの名無しさん
08/02/02 18:44:17
>>128
SQLでとってくれば?

132:デフォルトの名無しさん
08/02/02 19:04:55
>>130
class EnumerableObject : object {
public EnumerableObject GetEnumerator() { return this; }
public bool MoveNext() { return false; }
public object Current { get { return null; } }
}
このクラスのインスタンスに対してforeach使ってみるといいよ。
これはバグじゃなくてちゃんとした仕様。List<T>なんかはこれを利用して
IEnumerableを実装する構造体をその型のままで返してIEnumerableへのボクシングを避けてる。

133:132
08/02/02 19:08:43
間違い
IEnumerable→IEnumerator

134:デフォルトの名無しさん
08/02/03 13:37:23
前スレにてTableAdapterのことを質問したものですが
また質問させてください。

TableAdapterのdeleteやupdateでDBのTableを更新する時に
SQLSerServerで外部キーを設定して連鎖参照整合性制約を使うことって出来ますか?
例えば二つのTableのある列を外部キーで関連付けして
同じ文字列のある行をdeleteしたりupdateしたりすることが出来ますでしょうか。
どうも上手くいかないんです。

もう一つ。
TableAdapterの更新処理はASP.NET上でしか
動作してくれませんよね?
例えば、普通のWindowsアプリケーションのプロジェクトを作成して
そこにDataSet作ってTableAdapterを作成して
DBの更新処理をするってのは出来ないですよね?

135:デフォルトの名無しさん
08/02/03 14:39:35
ネイティブのexeからC#で作ったDLLを呼び出したいんだけど、
手っ取り早いやり方は具体的にどんな感じになるんでしょ?

開発環境はVisual Studio 2008 Express Editionです。

136:デフォルトの名無しさん
08/02/03 14:43:23
>>135

アセンブリをCOM参照可能にして呼ぶ。

137:135
08/02/03 14:46:38
>>136
thx!

138:デフォルトの名無しさん
08/02/03 22:14:42
C++で言うベクターってC#で言うと何?

139:デフォルトの名無しさん
08/02/03 22:17:16
List<T>

140:デフォルトの名無しさん
08/02/03 22:17:31
list

141:デフォルトの名無しさん
08/02/03 22:47:24
C++のVectorがC#のListだとすると
C++のListはC#だと何になる?

142:デフォルトの名無しさん
08/02/03 22:49:23
ごめん自己解決したw

可変長配列 vector<T> List<T>
双方向リスト list<T> LinkedList<T>

143:デフォルトの名無しさん
08/02/03 22:58:18
LinkedListってなんでIList実装してないのにListなんだろう
Javaに合わせたのかな

144:デフォルトの名無しさん
08/02/03 23:03:20
LinkedList は LinkedList です。

145:デフォルトの名無しさん
08/02/03 23:18:04
>>134
可能でしょ。
そもそも連鎖更新や削除はSQLServer側がする事で、.NETや言語は関係ない。
それ以上は「どうも上手くいかない」って説明では分からん。

もう一つ。
なんでASP.NETしか動作しないと思ってるのかわからん。

146:デフォルトの名無しさん
08/02/04 12:43:58
ストアドプロシージャに連鎖更新書いて呼ぶのじゃダメなのか

147:デフォルトの名無しさん
08/02/04 22:25:19
>>146
DB側に処理置くのはいやずら

148:975
08/02/05 00:56:23
>>145
すいません。わかりづらいですね。
[Table1]
ID Name Age
----------------
ID1 Yamada 20
ID2 Hanako 18
[Table2]
ID Height Weight
-------------------
ID1 170 65
ID2 160 50
手順としては上の二つのTable
がある時、

1.VisualStudioのデータベースエクスプローラーから
 「外部キーのリレーションシップ」ダイアログで
 Table1が親としてIDに対してリレーションを作成。
2.DeleteRule の設定、UpdateRule の設定を「重ねて表示」に設定。
3.Table1、Table2に関連付いたTableAdapterを作成して
 1、2と同じ設定でリレーションシップを作成。
4.Table1の一行目に対してDELETE処理実行。
5.Table1の一行目は削除されるがTable2は削除されない。
ということです。
ASP.NETに関しては勘違いしていました。

>146
トリガのことですよね?
上記の方法で出来なかった場合はその方法を考えています。


149:デフォルトの名無しさん
08/02/05 14:45:35
C#ってどんな業界で使われてるの?

150:デフォルトの名無しさん
08/02/05 15:11:20
>>149
業務用で多いのは ASP.NET かな。
企業のウェブポータルなんかでは割と使われてる。

個人レベルのフリーウェアは最近結構増えてきた気がする。

151:デフォルトの名無しさん
08/02/05 15:26:44
>>150
サンクス

152:デフォルトの名無しさん
08/02/05 22:36:40
個人レベルでちょっとなんか作るならC#でFAだな。
楽過ぎる。

でもグローバルフックに制限があったりとか
WPF使ったらactivexがラップしないと使えないとか
細かい問題が多くて開発時間に影響するんだよな・・・。
それでも早いけど。

153:デフォルトの名無しさん
08/02/05 22:38:25
>>149
人工知能

154:デフォルトの名無しさん
08/02/05 23:05:08
managedだけで済む処理しか使わないならすごく楽に作れるな

155:デフォルトの名無しさん
08/02/07 10:16:54
(COM登録が必要な)C#で作ったアセンブリをインストーラーで配布しようとしているのですが
その際プライマリ出力のRegisterプロパティをvsdrpCOMに設定しても
インストール中にComRegisterFunctionAttributeのRegister、Unregisterメソッドは呼ばれないのでしょうか?
(試した限りでは呼ばれませんでした)

何かプロパティを変える等で呼ばれるようにする方法はありますでしょうか?


156:デフォルトの名無しさん
08/02/07 15:41:01
SHFileOperation使えばいいんじゃね?

157:デフォルトの名無しさん
08/02/07 15:41:35
誤爆スマソ

158:デフォルトの名無しさん
08/02/08 23:16:29
C# 2008です

n < Int32.MinValue
(nは0〜200くらい)
が実行された際

Debugでビルドしたときは何もなかったのに
Releaseでビルドしたらオーバーフローが出ました

n < Int16.MinValueにしたら平気でした。
n > Int32.MinValue では平気でした。

DebugとReleaseで演算方法が違うってことでしょうか?
そもそも比較演算でオーバーフロー出すようでは欠陥だと思うのですが
これじゃDebugでテストするのが怖い

159:デフォルトの名無しさん
08/02/08 23:29:43
nの型は何だよ。

160:デフォルトの名無しさん
08/02/08 23:34:11
また始まった

コードそのものをここに貼れよ。
それだけでオーバーフロー/フレームワークに欠陥なんて言われても。

161:デフォルトの名無しさん
08/02/08 23:38:06
>>158
処理系が欠陥だと言い切るような自信がどこから湧くのか理解できんが、
生成されてるILすら比較してみていないような感じだな。

162:デフォルトの名無しさん
08/02/08 23:47:51
まったくだ

163:デフォルトの名無しさん
08/02/08 23:50:27
ポカやってるのは>>158でFAなのはコード見なくてもわかるけど
とりあえずDebugとReleaseで
プロジェクトのプロパティ→ビルド→詳細設定→演算のオーバーフロー/アンダーフローのチェック
のチェックボックスの状態がちがうんじゃね?

164:デフォルトの名無しさん
08/02/09 00:14:46
Debugでは出ない例外がReleaseで出たのは経験あるな
よく覚えてないけどList<T>.Sortか何かで渡した自分のIComparer<T>の実装が間違ってたのが原因だった

165:デフォルトの名無しさん
08/02/09 09:47:27
長いコード貼るなら
URLリンク(pastebin.windy.cx)
URLリンク(pastebin.com)
こういうところだと色分けとかもできる

166:デフォルトの名無しさん
08/02/09 15:17:22
怠け者で探しきれてなくてすみません。
MonthCalenderで、指定日をハイライトするメソッドをご教授ください。

167:デフォルトの名無しさん
08/02/09 15:22:48
SetDateか。自己解決下っぽい。ありがとうございました。

168:デフォルトの名無しさん
08/02/09 15:25:49
しかも 初心者板と勘違いした。
重ね重ね申し訳ない。orz

169:デフォルトの名無しさん
08/02/11 12:34:42
ほ、ほーっ、ホアアーッ!! ホアーッ!!

170:デフォルトの名無しさん
08/02/11 23:15:54
vjs.dllだとファイル数多いと例外なげたりとバグってたりするんですけど
C#でお手軽にZIP作る方法ないですか?

171:デフォルトの名無しさん
08/02/12 02:36:47
SharpZipLibとか

172:デフォルトの名無しさん
08/02/12 02:39:18
シェルにやらせればいいんじゃね

173:デフォルトの名無しさん
08/02/12 03:35:13
zip.exe叩いた方が楽でね?

174:デフォルトの名無しさん
08/02/12 07:53:49
zipfldr.dll
…ってシェルと同じかも

175:デフォルトの名無しさん
08/02/12 08:45:53
Processでstartinfoに
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
指定して、zip.exe起動すれば、dos窓でないから
一番楽だと思うが。

176:デフォルトの名無しさん
08/02/12 13:38:56
統合アーカイバプロジェクトに登録されてるのはだめなの?
そのうちファイラ作ろうと思ってるんだけど。
URLリンク(www.madobe.net)

177:デフォルトの名無しさん
08/02/12 16:38:27
もしかして、.NET Framework 2.0からZIPを操作するクラスが入ったのを知らない人多い?

178:デフォルトの名無しさん
08/02/12 16:46:38
うん

179:デフォルトの名無しさん
08/02/12 16:49:52
GZipは扱えるがZipファイルは扱えねぇなあ。
まあヘッダ処理だけ書けば大体対応できるけどね。

180:デフォルトの名無しさん
08/02/12 16:49:59
それGZIPだし
ZIPじゃないし

181:デフォルトの名無しさん
08/02/12 16:59:17
読み取り専用のDictionaryはないの?

182:デフォルトの名無しさん
08/02/12 20:12:09
ListViewでItemを追加してEndUpDateすると、全部のItemが再描画
されてしまいます。そこでそのちらつきを出さない方法についてこちら
でおききしていました。>スレリンク(tech板:859番)

その中のソースがC#なのでC#スレでお訊きします。よろしくです。
CodeProject Flicker-free ListView in .NET and XP. Free source code and programming help
URLリンク(www.codeproject.com)
にあるサンプルを試してみたのですが、DEMO版がうまくいくのにソース版
ですよ対策なしと同じでした。

ListViewのDoubleBufferingはちらつき防止に効果あるでしょうか?
またowner draw にした場合は自分でItemを描画する必要があるのでしょうか。
よろしくお願いします。


183:182
08/02/12 20:18:38
>>182 訂正>ソース版ですよ対策なしと同じ -> ソース版ですと対策なしと同じ

該当のサイトでは
public void SetExStyles()
{
LVS_EX styles = (LVS_EX)SendMessage(this.Handle,
(int) LVM.LVM_GETEXTENDEDLISTVIEWSTYLE, 0,0);
styles |= LVS_EX.LVS_EX_DOUBLEBUFFER | LVS_EX.LVS_EX_BORDERSELECT;
SendMessage(this.Handle,
(int) LVM.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (int) styles);
}

のようなコードがありました。これはDoubleBufferを使っているようなのですが、
owner draw はしてないようでした。一方、このサイトへのコメントレスとして
ついていたものでは、owner draw にしておいて
 this.SetStyle(ControlStyles.OptimisedDoubleBuffer, True);
とするだけでちらつきはなくなるようなことが書かれていましたが、これは
自分で描画してやらないといけないようでその場合どのように描画すれば
よいのかわかりませんでした。自分で描画しないでも可能なような意味にも
取れてよくわからないのでした・・・

すみませんが、何卒よろしくお願いします。

184:デフォルトの名無しさん
08/02/13 00:08:14
すみません、よろしければ
スレリンク(tech板:182-183番)
について教えてください。何卒よろしくお願いします。


185:デフォルトの名無しさん
08/02/13 00:10:26
>>184 は スレリンク(tech板)
への出張の間違いでした。すみません。)

186:デフォルトの名無しさん
08/02/13 00:46:50
zipの質問したものです

みなさん、ありがとうございました

統合アーカイバプロジェクト(7-zip32.dll)
undll.exe
System.Process

でやってみることにしました
やってみると進行度合をウィンドウで表示してくれてちょっと鬱ですがとりあえず動いています
(zip32.dllは長い名前に対応してないとか?はっきりしなかったので)

187:デフォルトの名無しさん
08/02/13 01:10:36
>>176
統合アーカイバプロジェクトのzipは処理速度遅いよ

188:デフォルトの名無しさん
08/02/13 13:14:46
>>187
代替案しめさないと意味のないコメント

189:デフォルトの名無しさん
08/02/13 22:25:47
zipってオープンソースじゃなかったっけ

190:デフォルトの名無しさん
08/02/13 22:29:55
統合アーカイバプロジェクトなんつってる割には
インターフェースが統一されてなくて使いにくいんだよな

191:デフォルトの名無しさん
08/02/13 22:31:45
素人だからな。

192:デフォルトの名無しさん
08/02/13 22:58:33
C++/CLIでうまいことやってくれないもんかな

193:デフォルトの名無しさん
08/02/13 23:46:20
公開された.NET Frameworkのソースコード見てたらInt32なんかもC#で実装されてるけど
MSはなんか特殊なコンパイラ使ってるの?

194:デフォルトの名無しさん
08/02/14 00:30:56
VC#には、mscorlib.dllを参照させない/nostlibというオプションがある。
URLリンク(msdn2.microsoft.com)(VS.80).aspx

195:デフォルトの名無しさん
08/02/14 01:46:17
>>188
代替案って・・^^;
SharpZipLibに比べると3倍ぐらい遅いって、過去にそんな話出てたと思うが。

196:デフォルトの名無しさん
08/02/14 02:01:46
>>195
そんな話見たことねーよ
どんな妄想だよ
遅いというからにはしっかり計って代替案示せ糞野郎

197:デフォルトの名無しさん
08/02/14 02:03:55
統合アーカイバプロジェクトのzip 30秒
SharpZipLib 10秒

198:デフォルトの名無しさん
08/02/14 02:07:16
↑なにこれ 人馬鹿にしてるの?

199:デフォルトの名無しさん
08/02/14 10:09:38
そこまで自分で性能気にするなら自分で測ればいいだろカスが

200:デフォルトの名無しさん
08/02/14 10:17:30
代替案出せとか2chに何求めてるんだよw

201:デフォルトの名無しさん
08/02/14 12:26:43
なんか意味を取り違えてないか?

俺は196じゃないけど、196の言いたいことは「遅い」というのは
比較の対象があってこそ言えることで・・・
まあこれだけ補助線を引けば読解力ない君でもさすがにわかるだろ

202:デフォルトの名無しさん
08/02/14 12:40:13
自演乙

203:デフォルトの名無しさん
08/02/14 12:52:19
自演認定乙

204:デフォルトの名無しさん
08/02/14 13:06:24
図星か

205:デフォルトの名無しさん
08/02/14 13:11:21
(・∀・)クスクス

206:デフォルトの名無しさん
08/02/14 13:14:24
本当にこのスレにいるやつは、読解力ないのな
アホばっか

207:デフォルトの名無しさん
08/02/14 13:16:58
そうだね

208:デフォルトの名無しさん
08/02/14 19:21:11
 今日は凄いくだらない事にメチャクチャ腹が立ったので、
懺悔の心でココに書くよ。

 "C# bmp LockBits "でグーグル検索するとLockBits()メソッドの1つめの引数rectに

Rectangle rect = new Rectangle(0,0,bmp.Width,bmp.Height);

 を指定するブログやら、Tipsサイトが大量に出てくるよね。
初心者向けとか言って、ご丁寧に赤と緑を入れ替えた画像とか貼ったりしてさー。

 LockBits()はRectangle型のxとyしか見ない、あからさまなバグ入り関数なんだよね。
 あそこは new Rectangle(0,0,1,1)で十分。
っていうか、大きな画像の一部のIntPtrを取り出したいときは、また別途Bitmapインスタンスが必要なぐらい使えない関数ww。
そっちの方がTipsとして必要だろうがwww。

 10も20も「自称」プログラマのブログがあって、MSが作ったバグには一つも触れ無いんだよwwww。
おまえらは、MSの糞が食卓に並んでても気にならない本物のブタ共だよwww。
自分のブログで晒し上げにしようかと思っちゃったよww。


209:デフォルトの名無しさん
08/02/14 19:34:43
まあ208が「懺悔」の意味を勘違いしていることはよくわかった。

210:デフォルトの名無しさん
08/02/14 19:42:35
今日は凄いくだらない事にメチャクチャ腹が立ったのでやつあたりしている。
が正しいな。

211:デフォルトの名無しさん
08/02/14 19:48:43
「これはひどい」
「突っ込み所満載」

212:デフォルトの名無しさん
08/02/14 19:56:13
>>208
普通にRectangleで指定した範囲だけロックされるぞ
(0,0,1,1)の範囲を指定したのにその外を触ろうとしたらAccessViolationExceptionが出る

213:デフォルトの名無しさん
08/02/14 20:05:04
八つ当たりする先に困ってココに書いてるんだけどね。

>208
釣れた!! ソースはってみろよ。

214:デフォルトの名無しさん
08/02/14 20:05:32
>212だ
自分が釣られてどうする。

215:デフォルトの名無しさん
08/02/14 20:25:23
おら 奇跡は起きたか豚!
tmp.Save(@"c:\tmpA.Png", ImageFormat.Png); //tmpがBitmap型な。
BitmapData bmpData = tmp.LockBits(new Rectangle(0,0,1,1), ImageLockMode.ReadOnly,
                  tmp.PixelFormat);
int bytes = (tmp.Width) * (tmp.Height) * 4;
byte[] rgbValues = new byte[bytes];
IntPtr ptr = bmpData.Scan0;
int a = bmpData.Height;
int b = bmpData.Width;
Console.WriteLine(a.ToString()+"+"+b.ToString());   //1+1

Marshal.Copy(ptr, rgbValues, 0, bytes);
for (int d = 0; d < bytes; d++)
{
   rgbValues[d] = 0xff;
}
Marshal.Copy(rgbValues, 0, ptr, bytes);
tmp.UnlockBits(bmpData);
tmp.Save(@"c:\tmpB.Png", ImageFormat.Png);


216:デフォルトの名無しさん
08/02/14 21:14:12
むしろブログでやってくれたほうが愉快だったのに、と思ってしまう。

217:208,213,215
08/02/14 21:15:04
おまえら反応無いなと思ったら。
>208>213>215 は全部俺>208だ。
URLリンク(hey.chu.jp)
今日は気分が良いからアプロダにサンプルまで置いてしまうぞ。

最後に俺のTipsを付けておく。
bmpData = tmp.LockBits(new Rectangle(0, 0, 1, 1), ImageLockMode.ReadOnly,
             tmp.PixelFormat);
ptr = bmpData.Scan0;
Marshal.Copy(ptr, rgbValues, 0, bytes);
Rectangle rect = new Rectangle(64,64,256,128);//目的範囲をrectとすると。
for (int i= rect.X;i<rect.X + rect.Width;i++)
   for (int j = rect.Y; j<rect.Y+ rect.Height;j++)
   {
      int d = j*tmp.Width+i;
      swap = rgbValues[d * 4 + 1];
      rgbValues[d * 4 + 1] = rgbValues[d * 4 + 2];
      rgbValues[d * 4 + 2] = swap;
   }

218:デフォルトの名無しさん
08/02/14 21:16:29
>216
っていうか、 MSのフォーラムに行け。

219:208
08/02/14 21:19:43
>218も俺。 って。

>216はVSインストールした事も無いのに書き込んで居るんだね。

220:208
08/02/14 21:48:05
どうしたのですか?
ゲイツのうんこ大好きなスカトロ豚さん?

31行目か60行目を
Marshal.Copy(ptr, rgbValues, 0, bytes+1); // +1(・∀・) イイ
って変更すると、多分お探しのエラーコードがでまちゅよ。

221:216
08/02/14 21:57:35
215で例外になるじゃんと思いつつも、217やったらたしかに動くね。
違いと言えば、215のコードを動かしたときは
tmpのインスタンスを作るときにファイルから読み込むBitmapのコンストラクタを使ったということくらい。

あと、217でtmpの中身を作るときのPixelFormatをFormat16bppRgb565にしつつ、
LockBitsに渡すPixelFormatをFormat32bppArgbにしても、探してた例外になったよ。

222:デフォルトの名無しさん
08/02/14 21:57:44
えっと・・・何?こいつ

223:208
08/02/14 22:02:30
>216
あんまり頑張るなよ。
自分でも苦しい言い訳だと思わない?

>int bytes = (tmp.Width) * (tmp.Height) * 4;
の"4"の意味が解らないなんて無理があるだろ。

けど、とりあえず反応してくれて、 あ り が と 。
ちなみに実行した環境とかも教えてくれちゃうと嬉しいな。

224:208
08/02/14 22:05:12
>222
良いTipsを思いついたからブログに書こうと思ったら、
世間の奴らのブタ過ぎに書くに書けなくなった。

225:デフォルトの名無しさん
08/02/14 22:06:44
>>223
いやそういうことではなさそう
PixelFormat.Format32bppArgbで作ってPixelFormat32bppRgbでロックしても例外出る

ビットマップのPixelFormatと違うフォーマットでロックしたらRectangleの中だけロックされるみたいだ

226:デフォルトの名無しさん
08/02/14 22:19:43
>225
そうだろうな。

そして人は
Format32bppArgbなら、Format32bppArgbでLockBitする。
Format32bppPArgbなら、Format32bppPArgbでLockBitする。
Format32bppRgbなら、Format32bppRgbでLockBitする。

そうでない時エラーになるのは人として当然。
そして >225はnew Rectangle(0, 0, tmp.Width, tmp.Height)の時どう動いて欲しいのかな?
>ビットマップのPixelFormatと違うフォーマットでロックしたらRectangleの中だけロックされるみたいだ
(・∀・)ニヤ

ぶっちゃけ書くけど、2008まだインストールして居ないんだ。俺。

227:デフォルトの名無しさん
08/02/14 22:33:39
>>223
ペイントで24ビットビットマップとして保存して、
Bitmap tmp = new Bitmap(@"h:\P1000220.bmp");のようにした。
.NET Framework 1.1 SP1と2.0 SP1 (3.5)、
VC#コンパイラ.NET 2003, 2005, 2008の3つで試した。

32ビットビットマップでやるとtmp.PixelFormatがFormat32bppArgbになってうまくいくね。
(217からGraphics作ってる部分だけ抜き出して、tmp.Saveで作った)

228:デフォルトの名無しさん
08/02/14 22:35:19
>>226
違うフォーマットでロックすることは可能
これでお前の期待する結果になる
こういう仕様のようにも見える
Rectangle rect = new Rectangle(0, 0, 10, 10);
BitmapData bmpdata = tmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);
for (int i = 0; i < rect.Width * rect.Height; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
tmp.UnlockBits(bmpdata);

229:208
08/02/14 22:43:13
>227
良く嘘をつく奴だな程度に思っていたけど、只の低脳なのか?

Bitmap tmp = new Bitmap(@"h:\P1000220.bmp"); //この次の行に書け。
Console.WriteLine("tmp.PixelFormat =" + tmp.PixelFormat.ToString()); //何が見える?

ペイントで24ビットビットマップとして保存して居る奴に必要なコード変更はこういう事だ。
//int bytes = (tmp.Width) * (tmp.Height) * 4;
 int bytes = (tmp.Width) * (tmp.Height) * 3;


230:228
08/02/14 22:45:30
補足
tmpのPixelFormatはFormat32bppArgb

231:デフォルトの名無しさん
08/02/14 23:02:29
>>229
嘘付きと低脳だったら嘘付きがいいな。
すまん、LockBitsするときにはPixelFormat.Format32bppArgbを
指定するよう書き換えていたことをさっきからずっと忘れていた。

232:208
08/02/14 23:03:53
>228
面白い。 >225は間違って無かったんだな。
Bitmap tmp = new Bitmap(412, 256, PixelFormat.Format32bppRgb);
で作って。
BitmapData bmpdata = tmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);//つまり同じ。
for (int i = 0; i < rect.Width * rect.Height; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
tmp.UnlockBits(bmpdata);
した場合は元のもくあみに戻るのな。

念のため
for (int i = 0; i < (rect.Width * rect.Height)+200; i++) ((uint*)(void*)bmpdata.Scan0)[i] = 0xfffffff;
として見たが、むなしくなった。 結果は白線がのびる。 exception無し。
こちらの環境は 2005 .NET 2.0 オンリ


夜も更けて来たので哲学入ります。
 俺がやってることは、世間の奴らが見向きもしないで触らずにいた汚い糞を、
わざわざどけてやってるだけなんだよな。

結果、一番得得してるのは、糞を垂れ流してる張本人って事ないか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4428日前に更新/174 KB
担当:undef