C#, C♯, C#相談室 Part42

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part41
http://pc11.2ch.net/test/read.cgi/tech/1184840053/

過去スレは>>2-5あたり。
2デフォルトの名無しさん:2007/08/26(日) 12:45:52
3デフォルトの名無しさん:2007/08/26(日) 12:46:26
4デフォルトの名無しさん:2007/08/26(日) 12:47:15
5デフォルトの名無しさん:2007/08/26(日) 12:47:46
Visual C# 2005 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

ふらっとC♯, C#(初心者用) Part17
http://pc11.2ch.net/test/read.cgi/tech/1182948981/

MSDNライブラリ
http://msdn.microsoft.com/library/ja/

MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx

pinvoke.net: the interop wiki!
http://pinvoke.net/
6デフォルトの名無しさん:2007/08/26(日) 12:48:16
Visual C# Express Edition (無料)ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx

MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
7デフォルトの名無しさん:2007/08/26(日) 12:48:48
8デフォルトの名無しさん:2007/08/26(日) 13:11:22

てかそろそろ過去ログ列挙しなくてもいいんじゃない?
9デフォルトの名無しさん:2007/08/26(日) 18:00:30
クララが建った
10デフォルトの名無しさん:2007/08/26(日) 18:21:02
997 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:06:50
Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから
分離しようってだけの自然な流れ

998 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:12:46
>Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから
え?
本気で言ってるのかな

999 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:19:32
本気ですとも
反論があればどうぞ

1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:27:13
キモイ
11デフォルトの名無しさん:2007/08/26(日) 18:38:55
むしかえすなよ
12デフォルトの名無しさん:2007/08/26(日) 18:41:36
以下スルー?
13デフォルトの名無しさん:2007/08/26(日) 18:42:06
食いつこうぜ
14デフォルトの名無しさん:2007/08/26(日) 19:15:02
SortedDictionaryに格納されている先頭のKeyの取得の仕方を教えてください。
15デフォルトの名無しさん:2007/08/26(日) 19:20:30
foreach一回目
16デフォルトの名無しさん:2007/08/26(日) 19:20:33
foreachで回して1回目だけメモっておけばよいだけでは?
17デフォルトの名無しさん:2007/08/26(日) 19:28:26
こんな感じですね?

string FirstKey;
foreach (KeyValuePair<string,int> pair in sortedDictionary)
{
 FirstKey = pair.Key;
 break;
}

これしか方法は無いのでしょうか?
18デフォルトの名無しさん:2007/08/26(日) 20:08:29
Enumerator取得して、一個目だけとればいいじゃん。
19デフォルトの名無しさん:2007/08/26(日) 20:41:23
イミナサスw
20デフォルトの名無しさん:2007/08/26(日) 20:42:49
>>18
抽象的なアドバイスなら私にも出来ますが?
21デフォルトの名無しさん:2007/08/26(日) 20:46:34
別に抽象的ではない。
意味ないけどなw
22デフォルトの名無しさん:2007/08/26(日) 20:50:39
こんな感じ?

SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
sd.Add("a", "b");
SortedDictionary<string, string>.Enumerator e = sd.GetEnumerator();
if (e.MoveNext())
MessageBox.Show(e.Current.Key + " : "+e.Current.Value);
2318じゃないけど:2007/08/26(日) 20:52:02
意味ないか?
foreachよりはマシだと思うけど・・・
24デフォルトの名無しさん:2007/08/26(日) 20:53:17
C#3.0 だとこれで取れる。
Console.WriteLine(sd.Keys.First());
25デフォルトの名無しさん:2007/08/27(月) 01:27:47
WebBrowserコントロールでFlashを表示するとFlash内のクリックでのイベントが
が1度目しか実行されないのだけど対処策があるか知りませんか?
コントロールから一度フォーカスを外すとイベントが処理されるようです。
IEコンポーネントを直接使うと問題はないのでコントロールのバグかと思われるのですが。
26デフォルトの名無しさん:2007/08/27(月) 02:18:02
プログラムとは関係ないんだけど、
C#の月刊技術書って何読んでる?
Windows Deveropers Magazineが休刊してから、何も読んでなくて。
27デフォルトの名無しさん:2007/08/27(月) 07:46:08
C#で作った実行ファイルを配布する時って、何の情報があればいいすか
.NET入れとけ、みたいな
つまりユーザー向け実行環境のことで相談なんすが
28デフォルトの名無しさん:2007/08/27(月) 10:10:24
.NET Framework入れとけでおk
.NET2.0なら実行環境は2.0でも3.0でもおkだから今から配るなら3.0入れとけにしとけ
2928:2007/08/27(月) 10:14:31
日本語変だな
今から入れるなら3.0入れとけと言いたかった
30デフォルトの名無しさん:2007/08/27(月) 15:11:53
WindowsUpdateしておけと書く
31デフォルトの名無しさん:2007/08/27(月) 16:46:39
>>30
カスタムでないとインストールされないのでは?
32デフォルトの名無しさん:2007/08/27(月) 18:44:56
vista買えでいいんじゃね
33デフォルトの名無しさん:2007/08/27(月) 20:32:47
そんなソフト誰も使わねえ
34デフォルトの名無しさん:2007/08/27(月) 20:35:20
オブジェクトの現在の状態に対して不適切な引数が与えられて
メソッドの呼び出しが失敗したとき、
ArgumentExceptionとInvalidOperationExceptionのどちらを投げればいいの?
35デフォルトの名無しさん:2007/08/27(月) 20:35:28
誰も使うなでいいんじゃね
36デフォルトの名無しさん:2007/08/27(月) 20:37:16
>>34
おいらはInvalidOperationの方投げる
37デフォルトの名無しさん:2007/08/27(月) 20:41:58
ArgumentExceptionのInnerExceptionにInvalidOperationExceptionを設定したものを
投げる、が正解。

というのは半分冗談だけど、ArgumentExceptionの方適切だと俺は思うけどなー
InvalidOperationExceptionだと現在のステートだと引数に無関係に問答無用で
ダメだという印象を受けるよ
38デフォルトの名無しさん:2007/08/27(月) 20:52:42
引数もoperationの一部だからそんなことないのでは。

ところで全部ApplicationExceptionから派生させろって規則は結局なくなったのか
いつからなくなったんだっけ。
39デフォルトの名無しさん:2007/08/27(月) 21:02:35
2.0からだったかな
40デフォルトの名無しさん:2007/08/27(月) 21:02:48
>>38
その理屈だと、そもそもArgumentExceptionは不要という話にならないか?
41デフォルトの名無しさん:2007/08/27(月) 21:05:37
ガイドラインのInvalidOperationの
> オブジェクトの現在の状態から判断して、プロパティ セットやメソッド呼び出しが不適切な場合は、
> System.InvalidOperationException をスローする必要があります。
をどう解釈するかによるなぁ
むしろメソッド個別の問題か?
42デフォルトの名無しさん:2007/08/27(月) 21:12:08
状態によらず不正な引数が与えられた場合はArgumentExceptionで
それ以外の時はInvalidOperationExceptionとか。
4338:2007/08/27(月) 21:15:26
>>40
俺も書いててそう思った。
でも状態を変更→呼び出しっていう一連の操作のうち状態変更がちゃんと行われてないって考えれば
InvalidOperationといえるような。
でもその瞬間だけみれば引数がおかしいのに他ならないからやっぱArgumentException?
44デフォルトの名無しさん:2007/08/27(月) 21:35:03
.NET Frameworkを見てると>>42が正しそうかな
45デフォルトの名無しさん:2007/08/27(月) 22:26:41
.NET 1.1のアプリって.NET2.0や3.0のフレームワーク入れたら動く?
46デフォルトの名無しさん:2007/08/27(月) 22:34:00
なんとなく動く
47デフォルトの名無しさん:2007/08/27(月) 22:37:00
ことによると動く
48デフォルトの名無しさん:2007/08/27(月) 22:41:02
動く可能性は否定できない
49デフォルトの名無しさん:2007/08/27(月) 22:43:36
もし動かなくても文句言うな
50デフォルトの名無しさん:2007/08/27(月) 22:47:48
.NET 1.1を入れちまえばいいんだろ
51デフォルトの名無しさん:2007/08/27(月) 23:50:52
>38
.NETが2.0になってからApplicationExceptionは派生するなって変わった気がする。
52デフォルトの名無しさん:2007/08/28(火) 00:28:01
フォーム上のコントロールのEnabledをfalseにするとクリック等のイベントが親コントロールに通知されます。
これを通知させないようにする方法はありますでしょうか?
53デフォルトの名無しさん:2007/08/28(火) 10:54:27
渡されたオブジェクトの型を調べて、その型のListを作りたいんだけど<>の中の書き方が分かりません。
教えてえろいひと!
54デフォルトの名無しさん:2007/08/28(火) 11:01:50
まずはお前の肛門拡張からだ
55デフォルトの名無しさん:2007/08/28(火) 11:02:01
Activator.CreateInstance(typeof(List<>).MakeGenericType(obj.GetType()))
56デフォルトの名無しさん:2007/08/28(火) 11:07:02
何がしたいのか知らんが
Type listT=typeof(List<>);
object listHoge=listT.MakeGenericType(typeof(Hoge));

こんな感じじゃなかった?
57デフォルトの名無しさん:2007/08/28(火) 11:07:33
( TДT)ゴメンヨーCreate忘れてた
58デフォルトの名無しさん:2007/08/28(火) 11:13:15
>>53

実行時にしか型がわからないなら、arraylistでobjectに格納すれば
いいんでないの?わざわざジェネリック使う意味がよくわからないけれど。
59デフォルトの名無しさん:2007/08/28(火) 12:27:06
Listよりarraylistの方がいいのかな?
使い分けが良く分かってないのでとりあえずList使おうかな、と
60デフォルトの名無しさん:2007/08/28(火) 13:58:13
引数の型に合わせるためにどうしても必要とかでなければ>>58でいいよ
Listに統一したかったらList<object>にすれば
61デフォルトの名無しさん:2007/08/28(火) 13:59:25
public List<T> CreateList<T>(params T[] objs)
{
 return new List<T>(objs);
}

こうだろ
62デフォルトの名無しさん:2007/08/28(火) 14:11:04
63デフォルトの名無しさん:2007/08/28(火) 14:13:04
>>61
object value = (Int32)1;
Type type = value.GetType();
MethodInfo method = typeof(Program).GetMethod("CreateList");
MethodInfo generic = method.MakeGenericMethod(type);
Array paramArray = Array.CreateInstance(type, 1);
object list = generic.Invoke(null, new object[] { paramArray });
64デフォルトの名無しさん:2007/08/28(火) 15:30:47
dクス
arraylistでちょっとやってみます
65デフォルトの名無しさん:2007/08/28(火) 15:32:12
ArrayListよりList<object>のほうがいろいろ便利さ
66デフォルトの名無しさん:2007/08/28(火) 16:06:59
もうジェネリックなしでは生きられない
ArrayListでいちいちキャストしてた頃があったなんて信じられない
67デフォルトの名無しさん:2007/08/28(火) 18:33:51
>ArrayListでいちいちキャストしてた頃があったなんて信じられない
もっと地獄なのは、要素型ごとに実装された*Collectionクラス。
たいていIListないし、IEnumerable<T>,ICollection<T>なんてもちろんないし、
しかも未だにあちこちで使われてて実にムカツクんだけど。
68デフォルトの名無しさん:2007/08/28(火) 18:48:49
(´・ω・`)<ねーソケット書く人いる?
69デフォルトの名無しさん:2007/08/28(火) 18:52:05
(・∀・)<いないよー
70デフォルトの名無しさん:2007/08/28(火) 18:53:21
ソケット自体は書いたこと無いな
ソケットを使ったプログラムは書いた事あるけど
71デフォルトの名無しさん:2007/08/28(火) 18:53:54
なんかガキ臭い奴が多くて萎えるなあ。。

ガキは宿題でもやってろよ、と言いたいところだが
最近じゃ2chでガキ臭いこと書いてる奴が40面下げたオッサンだったりする
笑えない状況だからなあ。
72デフォルトの名無しさん:2007/08/28(火) 19:10:21
(´・ω・`)<L2から書くのは、やっぱむり?

73デフォルトの名無しさん:2007/08/28(火) 19:18:09
40のおっさんが2chとかひくww
74デフォルトの名無しさん:2007/08/28(火) 19:34:43
すくなくともC#の範囲じゃ無理っぽ
75デフォルトの名無しさん:2007/08/28(火) 19:47:34
(´・ω・`)<やっぱ、#だけじゃだめか。
>>74
(´・ω・`)ノシ<有り難う。
76デフォルトの名無しさん:2007/08/28(火) 21:19:08
無理じゃねーよ
77デフォルトの名無しさん:2007/08/28(火) 22:06:06
文字列中に2バイトコードが含まれている or 含まれていないって
どういう判別が一番楽かな?
やっぱり正規表現?
78デフォルトの名無しさん:2007/08/28(火) 22:09:22
.NET の文字列はすべて2バイトコードですが何か
79デフォルトの名無しさん:2007/08/28(火) 22:09:51
>>78
あ、ごめん。日本語のひらがなや漢字という意味です。
80デフォルトの名無しさん:2007/08/28(火) 22:13:49
full width alphabet や ラテン拡張文字はどうしましょうか
81デフォルトの名無しさん:2007/08/28(火) 22:14:11
正規表現。
82デフォルトの名無しさん:2007/08/28(火) 22:34:46
>77
Shift_JISでのサイズでも取得すればいいんでない?
83デフォルトの名無しさん:2007/08/28(火) 23:43:32
プログラミング初心者ですが、 C# 2005 Express Edtion を導入してみました。
それで、現在MSのサンプルプログラムで学習中なのですが、
以下のプログラムをビルドするとエラーが発生します。

http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/
「エラー1 ジェネリック 型 'System.Collections.Generic.IEnumerator<T>' の使用には、'1' 型の引数が必要です。」

このエラーの意味が分からないのですが、これはどのように改善したら実行できるのでしょうか?
2003年の記事なので、内部の何かが変わっているのでしょうか?


84デフォルトの名無しさん:2007/08/29(水) 00:14:22
using System.Collections;
85デフォルトの名無しさん:2007/08/29(水) 00:22:01
>>67
>もっと地獄なのは、要素型ごとに実装された*Collectionクラス。

C# 3.0だと拡張メソッドのOfType<T>()でIEnumerable<T>に変換できる。
もうちょい待とうぜ。

var sc = new System.Collections.Specialized.StringCollection();
var list = sc.OfType<string>(); // IEnumerable<string>
86デフォルトの名無しさん:2007/08/29(水) 10:36:17
>>84
うまくいきました。
ありがとうございました。
87デフォルトの名無しさん:2007/08/29(水) 16:14:18
エラーが出るファイルの上の方に

using System.Collections.Generic;

って書いてないかな?
それを

using System.Collections;

に変更すれば直るはず。
88デフォルトの名無しさん:2007/08/29(水) 19:51:34
>>83
なんでこんな変なサンプルを学習に使うの
学習者向けと言うより、「こんなことができるんだよ、すごいでしょ」的なものだろこれ
89デフォルトの名無しさん:2007/08/29(水) 20:37:25
インターネットショートカットがコピーできないんだけど、なんか方法無いでしょうか
9083:2007/08/29(水) 20:38:42
>>87
両方ともなかったので using System.Collections を追加したら動きました。
ありがとうございました。
ただ、リンクチェックを実行すると別のエラーを吐くので調べてます。

>>88
実はリンクチェックソフトを探していてたどり着いたのです
そしてら、VC#では簡単に組めそうではないですか!
驚きと期待で導入し勉強中な訳です
自分好みのリンクチェックソフトを作れたら最高にうれしいのですが・・・甘くはないようですね
91デフォルトの名無しさん:2007/08/29(水) 21:00:12
>>81
intにキャストして256未満か以上って判断もありだよ
92デフォルトの名無しさん:2007/08/29(水) 21:11:15
その発想はなかったわw
いやもちろん嫌味だが
93デフォルトの名無しさん:2007/08/29(水) 21:16:22
一文字ごとに処理しなくちゃいけないときは、これが一番早いんだが
94デフォルトの名無しさん:2007/08/29(水) 21:34:30
それじゃハングルとかアラビア語とかも捕まえちゃうんじゃん?
95デフォルトの名無しさん:2007/08/29(水) 21:34:39
Ĭは2バイトコードなの?
96デフォルトの名無しさん:2007/08/29(水) 21:43:45
>>94
WEBじゃなきゃハングルやアラビア文字考慮する必要が無いシチュエーションなんていくらでも存在するだろ
要は使い分けなんだよ
97デフォルトの名無しさん:2007/08/29(水) 21:51:43
オレの記憶が確かならばここはC#スレであってC言語スレじゃないと思う
98デフォルトの名無しさん:2007/08/29(水) 22:00:27
たしかにC#スレだが、どうしてC言語スレがどうのという話が出てくるんだ?
99デフォルトの名無しさん:2007/08/30(木) 01:34:37
俺様に理解できない話は別言語
でこのスレが間違われやすいのはCスレ。
よって>>97
100デフォルトの名無しさん:2007/08/30(木) 01:40:32
何なのこいつ
101デフォルトの名無しさん:2007/08/30(木) 02:05:06
日本語==別言語
102デフォルトの名無しさん:2007/08/30(木) 02:07:02
>>101
>>99にとってはtrue
103デフォルトの名無しさん:2007/08/30(木) 08:38:09
ToolStripMenuで動的に追加された項目のクリックで処理をしたいのですが、
第一階層目のContextMenuStripではうまくクリックイベントの処理を行えたのですが、
第二階層目のToolStripMenuItemsでDropDownItemsにAddすると、
項目名がひとつしか表示されず、しかもクリックすると、本来ある項目数の数だけ
同じ処理が実行されてしまうような状態にあります。
どのようにすればそれぞれの項目の表示と、適切なクリックイベントの追加ができるようになるか
ご教授いただけないでしょうか。

ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
Hashtable ht = new Hashtable(); // この中にはいくつかデータがあります

foreach(string ID in ht.keys)

    items_for_A.Text = ID;
    items_for_B.Text = ID;

    // 編集項目
    items_for_A.Click += delegate
    {
        NewForm Frm = new NewForm(ID);
        Frm.Show(); // フォームの表示
    };
    this.ToolStripMenuItemA.DropDownItems.Add(items_for_A);

    items_for_B.Click += delegate
    {
        Program.Hoge(ID); // 処理
    };
    this.ToolStripMenuItemB.DropDownItems.Add(items_for_B);
}
104デフォルトの名無しさん:2007/08/30(木) 09:03:36
>98
>intにキャストして256未満か以上って判断もありだよ
がどう見てもC言語的な考え方だって意味
C#でそんなコードはトリッキーなだけだろ
105デフォルトの名無しさん:2007/08/30(木) 09:59:17
みんなわかってるからスルーでいいのに・・・
106デフォルトの名無しさん:2007/08/30(木) 11:00:01
>>103
ループの中で newしていないからアイテムのインスタンスが一つしかないからだよ
ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
をループの中に移動してみ
107デフォルトの名無しさん:2007/08/30(木) 12:37:40
>>103
まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。
108デフォルトの名無しさん:2007/08/30(木) 13:14:04
>intにキャストして256未満か以上って判断もありだよ
ワロタ
こういう奴いるよな
ちょっと専門的なことひけらかして、俺すげーだろ的な
こういう奴と仕事したくねー
109デフォルトの名無しさん:2007/08/30(木) 13:24:50
自宅警備員に同僚っているの?
110デフォルトの名無しさん:2007/08/30(木) 13:30:10
>91
馬鹿晒しage
111デフォルトの名無しさん:2007/08/30(木) 13:39:19
>>109
自演乙
112デフォルトの名無しさん:2007/08/30(木) 13:54:45
嫉妬が炸裂するような内容だったんだろうか。
113デフォルトの名無しさん:2007/08/30(木) 14:37:18
嫉妬ってwww本気で言ってそうで笑えんわ・・・
114デフォルトの名無しさん:2007/08/30(木) 14:38:43
嫉妬は勘違いだろ
115デフォルトの名無しさん:2007/08/30(木) 14:45:52
相談スレで相談に対して答えを出しただけで
どうしてここまで叩かれているのだろうか?
C#相談スレの住人の程度が知れる。
116デフォルトの名無しさん:2007/08/30(木) 14:46:57
>>115
   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < なんだって?
  ノ/  /     \_____
  ノ ̄ゝ
117デフォルトの名無しさん:2007/08/30(木) 14:48:14
>>115
ヒント:夏休み
118デフォルトの名無しさん:2007/08/30(木) 14:48:34
>115は満月の晩に変身するタイプの人間だろ、間違いなく。
119デフォルトの名無しさん:2007/08/30(木) 14:51:08
間違いがあれば指摘すればいいのに
人格攻撃が始まっちゃうんだもんな
120デフォルトの名無しさん:2007/08/30(木) 15:14:20
単に UTF-16 で U+00?? になる文字は CP932 で1バイトになる文字なのか、
というような問題 (答えは否) のような気がするわけで、C 言語がどうとかいう話に
なるのかよくわからない。

C# の char が Unicode 文字であること、整数型にキャストできること、は C# の
仕様として明記されているわけだし (むしろ c の w_char の方が正体不明)。
121デフォルトの名無しさん:2007/08/30(木) 15:26:22
ごちゃごちゃうるさいスレになってきたなw
API使って出来なければ自作のライブラリを作るのが基本だろう。
なにを訳わからない議論してるんだ?
122デフォルトの名無しさん:2007/08/30(木) 15:33:21
RichTextBox を MS ゴシック で利用していますが、
文字列の一部を Bold にすると、その部分だけ横幅が広くなってしまい、
文字列がずれてしまいます。
Bold にしても文字幅が変わらないようにする方法はないでしょうか?

123デフォルトの名無しさん:2007/08/30(木) 15:34:26
自前で描画するしかないわな
124デフォルトの名無しさん:2007/08/30(木) 15:34:31
まぁセンスの問題だからな

でもIntにキャストするのが賛成のやつは俺の現場に近づかないでくれwwwっうぇwww
125デフォルトの名無しさん:2007/08/30(木) 15:36:51
HALFWIDTH_AND_FULLWIDTH_FORMSとかがあるしなぁ
\u00ff以下とかは流石に適当すぎだろ
126122:2007/08/30(木) 15:58:52
>>123
そうですか><
残念。

ありがとうございました。
127デフォルトの名無しさん:2007/08/30(木) 16:28:48
というか日本語かどうかを識別するベーシックな方法を
誰も教えてないんじゃないか

charのメソッドになんかローカライズ情報を与えると
分かるとかそんなんあったろ
128デフォルトの名無しさん:2007/08/30(木) 16:33:49
>>124
俺様に理解できない話は別言語ってか?
129デフォルトの名無しさん:2007/08/30(木) 16:37:21
.NETってユニコードブロックをサポートしてたっけ?

サポートしてなくても
Hiragana, Katakana, HalfwidthAndFullwidthForms, CJKUnifiedIdeographs, CJKSymbolsAndPunctuation
あたりに含まれてるかどうか不等号で調べればいいだけだけど。
130129:2007/08/30(木) 16:39:58
ああ、正規表現は対応してたね。
131デフォルトの名無しさん:2007/08/30(木) 16:48:26
>128
言語のライブラリに用意されてる機能を自作して悦に入るような奴は狼人間ってこと
132デフォルトの名無しさん:2007/08/30(木) 17:03:04
Encoding.GetBytes() があるから他の方法は認めません、と。
そういう考え方でOKな仕事も多いよね。
133デフォルトの名無しさん:2007/08/30(木) 17:18:27
ま、スマートじゃないわな
マジックナンバーを使うのと同じ臭いがする
134デフォルトの名無しさん:2007/08/30(木) 17:20:23
人を小ばかにして悦に入るようなヤツは何人間?
135デフォルトの名無しさん:2007/08/30(木) 17:25:30
スヘフェニンゲン
136デフォルトの名無しさん:2007/08/30(木) 18:29:22
>>122
MS ゴシックなら1pt下げれば同じになると思う
137103:2007/08/30(木) 18:49:35
>>106
クリック時の挙動がまだきちんとできませんでしたが、今回実現させたいことはできました。
どうもありがとうございました。

>>107
VB6を中途半端に覚えてからしばらくWebアプリのスクリプトに流れて、久々に勉強を兼ねてWinアプリを作ってみたのですが
やっぱりきちんと基本からやり直さないとダメですね。
ご指摘ありです。
138デフォルトの名無しさん:2007/08/30(木) 18:52:54
>>137
次からはふらっと池よ
139103:2007/08/30(木) 19:02:42
>>138
ふらっとも読んでたのですが向こうの>>1を読み飛ばしてしまってました。
そうします。スレ汚し失礼しました。
140デフォルトの名無しさん:2007/08/30(木) 19:24:20
プログラム全くやったことなくてC#覚えなくちゃならなくなったんだけど、
お勧めの参考書教えてください。
141デフォルトの名無しさん:2007/08/30(木) 19:50:54
フラット池
142デフォルトの名無しさん:2007/08/30(木) 20:04:13
Web検索とインテリセンスで何とかなるよ
143デフォルトの名無しさん:2007/08/30(木) 20:38:59
ActiveReports3.0を使った帳票を作成しています。.Net環境はVS2005を使用してます。

現象は、WebViewerを使ってPDF形式の出力をしようとすると、2003ServerEnterpriseだと
普通に出るのですが、2003server R2 StandardだとNo Specify Reportsと出てしまいます。
2台の同じバージョンのサーバーに入れて同じ現象でした。

また、WindowsXPの開発環境では普通に表示できます。似たような事象に出会ったかた
いらっしゃいましたら回避方法をお願いできませんでしょうか。

ここで聞くべきかあれですが、スレ違いでしたら誘導していただけると助かります。

よろしくお願いいたします。
144デフォルトの名無しさん:2007/08/30(木) 20:44:48
勢いでソートしたらここもふらっともかなり上位だし
この板で一番レス数の多い言語はC#ということになりそうだな
145デフォルトの名無しさん:2007/08/30(木) 21:05:05
まあ、C/C++ 出身者から初心者まで、ターゲットの幅が広いし。
146デフォルトの名無しさん:2007/08/30(木) 21:33:06
TabControlの中に、TextBoxを複数配置し、PropetyBindingでデータをバインドしてます。
フォームが閉じられる際に、TextBoxの値が未入力ならアラートを出すようにしてますが、
TextBoxに値があるのにif(TextBox.Text == "")がtrueとなってしまいます。
その際、一度TextBoxが含まれるTabをセレクトすると正常な挙動となります。
どのような問題が考えられますでしょうか?
147デフォルトの名無しさん:2007/08/30(木) 21:52:12
148デフォルトの名無しさん:2007/08/31(金) 10:58:54
ファイルへの書き込みで質問があります。

using (TextWriter stream = createStream(filePath, Encoding.GetEncoding(932))) {
 foreach (string line in hogeList) {
  stream.WriteLine(line);
 }
}

というような感じで、5千万行(約5G)ファイルに書き込むのですが、
3千万行(約3G)ほど書き込んだ所で以下のような例外が出てしまいました。
この例外発生時はディスク容量に余裕がある状態でした。

GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
System.ArgumentException: GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
場所 System.Text.DBCSCodePageEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, EncoderNLS encoder)
場所 System.Text.EncoderNLS.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, Boolean flush)
場所 System.Text.EncoderNLS.GetBytes(Char[] chars, Int32 charIndex, Int32 charCount, Byte[] bytes, Int32 byteIndex, Boolean flush)
場所 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
場所 System.IO.StreamWriter.Dispose(Boolean disposing)
場所 System.IO.TextWriter.Dispose()

見た感じEncodingの設定でコケてるように見えますが、意味が分りません。
もしかして○ギガ以上のファイルを作れない、といった感じの制限があるのでしょうか。

・Win2000
・VisualC# 2005 ExpressEdition
・.net framework2.0
149デフォルトの名無しさん:2007/08/31(金) 11:47:59
このレスを見たあなたは確実に交通事故に会います

逃れる方法はただ一つ
↓このスレに行き
http://anime2.2ch.net/test/read.cgi/rcomic/1187704465/

    // ̄ ̄ ̄ ̄\ .
   彳丿; /,,,,,,,,\ u lヽ
   入丿 -◎─◎- ;ヽミ.             
    | u:.:: (●:.:.●) u:.::|      
    |  :∴) 3 (∴.:: |   か、か、葛西なんてダサいよね♪
  ノ ヽ、   ,___,. u . ノ、   や、や、やっぱり大阪の川島が最強だよ♪
>>255-256
( ´,_ゝ`)
理論で勝てないからって恥かし過ぎw
何処をどう見ても川島厨の理論が破綻し過ぎw
川島厨の特徴 恥かしくも自分の事を川島派と名乗る
一生懸命書いた恥かしい>>151-152を誰も納得してくれないので拗ねてる
早く病院行けっつううのwww
いい加減コピペ止めろ、葛西厨装った川島厨!!
>>377
↑はいはいコピペ乙
コピペしてる奴は、その内容関係なしに、川島厨の荒らしだって事はとっくにバレてんだよ!
>>151-152の直後といい、>>255-256の直後といい、先にコピペ荒らしすんのは、常に川島厨からだからだ!!
分かったか?カス!! 反論できないからってここまで荒らすか?
好きなだけ荒らせば?このスレは元々お前を隔離する為のスレだし


と書き込んでください。書き込まなければ確実に明日交通事故にあいますよ
150デフォルトの名無しさん:2007/08/31(金) 12:33:22
コピペ君って馬鹿だな、まで読んだ。
151デフォルトの名無しさん:2007/08/31(金) 14:48:56
宿題が終わってません、まで読んだ。
152デフォルトの名無しさん:2007/08/31(金) 15:44:47
>>148
line に CP932 に属さない文字があるんじゃない?
153デフォルトの名無しさん:2007/08/31(金) 16:27:52
Action<T>のメソッドを可変に指定することは出来ないの?
154デフォルトの名無しさん:2007/08/31(金) 16:35:47
質問の意味が分かりません。
155デフォルトの名無しさん:2007/08/31(金) 17:45:35
・Action<T1, T2>を自分で定義する
・Action<object>を使う
・Action<string> action = delegate(string x){};などとして引数にactionを渡す
自分の想像力の範囲で挙げてみた
156デフォルトの名無しさん:2007/08/31(金) 17:59:05
>148
private void button1_Click(object sender, EventArgs e)
{
  using (StreamWriter stream = new StreamWriter(@"c:\hage.txt", false, Encoding.GetEncoding(932))) {
    for (int i = 0; i < 100000000; i++) {
      stream.WriteLine("12345678901234567890123456789012345678901234567890\n");
    }
  }
}

を実行したら2G書いたところでで落ちた
Encoder.Resetのヘルプ見たらなんとなく理由は分かった気がするけど解決法はシラネ
157デフォルトの名無しさん:2007/08/31(金) 18:11:29
一気に書き込まずに、時々ストリームを閉じてappendで追記すればOK。
158デフォルトの名無しさん:2007/08/31(金) 18:34:19
スーパーバイザーコールはCPU占有するから、処理を一気に行うのは良くない。
159デフォルトの名無しさん:2007/08/31(金) 18:53:46
ご存知の方いたらよろしくおながいします。

【開発環境】
visual studio 2005 、言語はC#です

【やりたいこと】
・「クラス名」を変数として、newしたい
(newする対象となるクラスを可変にしたい、ということです)

【例:正しいコードではないけど、やりたいことのイメージ】

// newしたいクラス名を引数として、newしたクラスインスタンスを返す関数
object getCreatedClass(string iClassName) {
return new iClassName();
}

ClassExample1 ex = getCreatedClass("ClassExample1 "); // ClassExample1 を作る
ClassExample2 ex = getCreatedClass("ClassExample2 "); // ClassExample2 を作る

※ 「ClassExample1 ex = new ClassExample1()」でダメなの?と思われるかもしれませんが、
上の関数はあくまで簡潔にした例で、実際にはgetCreatedClass内で
new以外にも、クラス名を使った処理をしたいのです。
160デフォルトの名無しさん:2007/08/31(金) 18:59:46
リフレクションでググれ
161デフォルトの名無しさん:2007/08/31(金) 19:20:56
またそれか
Activator.CreateInstance
そんなことそんなに頻繁に行われることなの?
やるとしてもちゃんとわかってる人がやるものじゃないの?
162デフォルトの名無しさん:2007/08/31(金) 19:59:49
いまの現場にいるオレよりキャリア長いけどよく分かってない人はリフレクション大好きだぜ
163148:2007/08/31(金) 20:42:26
>>152
156さんの例もあるので、CP932絡みの問題ではないようです。

>>156
やはり落ちましたか。
根本的な解決ではないですが、とりあえずファイルを分割して
最後にDOSコマンドで連結する事で逃げることにしました。

>>157
なるほど。その発想はありませんでした。試してみます。
164デフォルトの名無しさん:2007/08/31(金) 20:47:44
ネイティブのDLLから、バイナリ列を取得したいのですが、
バイト配列のマーシャリングは、どうすればよいのでしょうか?
BOOL native_func(LPBYTE pBuff, DWORD dwBuffSize, LPDWORD lpByteReturned);

文字列や構造体のサンプルはいくつか見つけたのですが。。
165デフォルトの名無しさん:2007/08/31(金) 21:06:31
面倒なときはメモリ確保してIntPtrで渡して帰ってきたらMarshal.Copy
166デフォルトの名無しさん:2007/08/31(金) 21:09:31
>>164
MSDNライブラリ読んで理解できないのなら(まあ、君は最初から読んでなさそうだけど)
やらない方がいいんじゃないの?
人に聞くような難解な話とも俺には思えないから言うんだけど。
でないと危険だと思うけどね。

それとも、分からないことや意図しない動作に遭遇する度にいちいち人に聞くつもり?
167デフォルトの名無しさん:2007/08/31(金) 21:17:12
unsafeでもいいならfixedでできたっけ
168164:2007/08/31(金) 21:24:24
>166
ありがとう。
System.Array で受けようとしてはまっていました。
Blittable型は、特別なコーディングいらないってことなので、
[DllImport("LargeBuffer.dll")]
private extern static bool native_func(
byte[] pBuff,
uint dwBuffSize,,
out uint lpByteReturned
);
で、
とりあえず、大きな 領域を new byte[] して取得してから、
Arrayにセットするようにしました。
169デフォルトの名無しさん:2007/08/31(金) 21:24:33
bool native_func(byte[] pBuff, int dwBuffSize, [out] int lpByteReturned);

で良いんじゃなかったっけ?
170デフォルトの名無しさん:2007/08/31(金) 21:25:23
おっと、失礼。
171デフォルトの名無しさん:2007/08/31(金) 21:31:56
>>166
おまえはそんなことを言うためにこのスレにきてんの?
172デフォルトの名無しさん:2007/08/31(金) 21:37:49
当然だろ。
173デフォルトの名無しさん:2007/08/31(金) 21:40:11
マーシャリングは適当にググると各々やり方が微妙に違ってたりするんだよな
俺はよく迷う

まぁMSDNみろよって話に収束するんだけどさ
174デフォルトの名無しさん:2007/08/31(金) 21:46:31
正解が一つじゃないからな
175デフォルトの名無しさん:2007/08/31(金) 23:46:03
COMインターフェイスの定義もね。。

引数がCOMインターフェイスへのポインタの場合、
objectで汎用的にしてるとか
IntPtrにしてほっとかれてるときとか
特定のインターフェイスに決め打ちしてるときとか。。
176デフォルトの名無しさん:2007/09/01(土) 00:48:21
ネット上の共有フォルダにおいてあるmdbファイルにJetでアクセスするツールをC#で作って、何ヶ月も放置
していたのだけど、久しぶりに使ったら、エラーになって使えなくなってました。

読み取りはできるのだけど、書き込みでエラーになります。
mdbファイルをローカルにおいてもだめでした。

他のPCからだと、同じexeとmdbで、正常に動いているので、Windowsの設定や環境のせいだと思うのだけど、
なにか心当たりのある人いませんか?
177デフォルトの名無しさん:2007/09/01(土) 01:39:12
>>176
MDBを修復してみる
178デフォルトの名無しさん:2007/09/01(土) 15:31:49
C#でアプリ作ってます。

今、NumericUpDownコントロールの値を増減すると、その値でフォントの大きさを増減するプログラムを
作りたいと考えています。

この場合、全コントロールのフォントサイズを一括で増減させるようなプログラムって
可能なのでしょうか?

一つ一つフォントサイズを指定しなおさないといけないのでしょうか?
179デフォルトの名無しさん:2007/09/01(土) 15:34:49
君がc#やドトネトのライブラリの作者なら、そんな特殊な需要を満たすための
foolproofな方法をわざわざ用意するだろうか?
180デフォルトの名無しさん:2007/09/01(土) 15:48:23
コントロールのFontプロパティはアンビエントプロパティだから
いっちゃん親のFontを変えれば
特別にフォントが指定されてないコントロールは同じになるよ
181デフォルトの名無しさん:2007/09/01(土) 15:53:39
>>179
よう、fool
182178:2007/09/01(土) 16:27:40
>>180
早速ぐぐってみます。
ありがとうございます。
183デフォルトの名無しさん:2007/09/01(土) 19:22:51
>179
foolproofってなんて意味?
184デフォルトの名無しさん:2007/09/01(土) 19:41:35

どなたか Gilma (=ILMerge のGUIツール) および ILMerge を使ってる方が
居たら教えてください。

http://pc11.2ch.net/test/read.cgi/tech/1184037822/853-854

で質問していたのですが、お答え得られず。こちらでどなたかわかる方いたら
お願いしたく。よろしく。
185デフォルトの名無しさん:2007/09/01(土) 21:20:28
>>183
Google使えないのか?
186デフォルトの名無しさん:2007/09/01(土) 22:56:47
>185
使える
>179に答えて欲しいだけ
187デフォルトの名無しさん:2007/09/02(日) 00:16:53
C#などのIRCって今稼動してるのないのかな?
海外みたく、活発な交流をして色々な知識を吸収したいと思っているんだが
188デフォルトの名無しさん:2007/09/02(日) 00:54:59
>>187
すいません、海外ってどんなところで活発に交流しているのですか?
よかったらおしえてください
189デフォルトの名無しさん:2007/09/02(日) 00:56:03
特定のフォルダから、特定のフォルダにコピーしたいんだけど、
なんか手っ取り早くGUIで残り何秒とか表示する方法ないかな。

エクスプローラのコピーコマンドとかあるかなっておもったが、
explorer.extって特定のフォルダを表示するしか出来ないのね・・・
190デフォルトの名無しさん:2007/09/02(日) 00:56:23
>>180
ところで、アンビエントプロパティで親から引き継がれてるか、
個別に設定されてるかを確認する方法ってないんかな?
191デフォルトの名無しさん:2007/09/02(日) 00:59:53
>>189
Microsoft.VisualBasic.FileIO.FileSystem でも使ってればいいんじゃない
192デフォルトの名無しさん:2007/09/02(日) 01:01:32
>>176
エラーの内容くらい書けバカ
193デフォルトの名無しさん:2007/09/02(日) 01:03:58
>>189
SHFileOperation使う。
でもVBのライブラリ参照したらその機能あった気がするのでそっちのがいいかな?

194デフォルトの名無しさん:2007/09/02(日) 01:04:31
>>192
そこまで書いてるんだから
エラーの内容くらい想像しろバカ
195187:2007/09/02(日) 01:05:49
>>188

ttp://d.hatena.ne.jp/goinger/20070814/1187111616

こちらのブログを見ていただければわかるかと。
196189:2007/09/02(日) 01:06:45
>>191 マジありがとう
調べてみるよ
197デフォルトの名無しさん:2007/09/02(日) 01:10:38
.NETで書かれた商用アプリってありますか?

どうも、.NETでかかれたものを金出してまで使おうとは思えん
198デフォルトの名無しさん:2007/09/02(日) 01:18:38
あるよ
199189:2007/09/02(日) 01:31:54
ありがとう。 やりたいことは
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(
@"C:\test\", @"e:\", UIOption.AllDialogs

でいけそうだ。

でも、このメソッド、ダイアログを表示して、かつ自動的に上書きという
引数はないんですね・・・

上書きだけか、ダイアログを表示するだけか、しかない

出来れは自動的に上書きして、進行状況がわかればうれしいんですが…
200デフォルトの名無しさん:2007/09/02(日) 01:39:16
>>197
コピペ?

201デフォルトの名無しさん:2007/09/02(日) 01:47:38
>197
そう思う理由を教えてくれ
202デフォルトの名無しさん:2007/09/02(日) 02:20:21
1.1のFormsで書かれた商品なら動かしたことがあるが、
リストに毎回描画するから糞重たくてむかついたことはある。
結局、最終的にアプリの出来はスキルで待ったく別物が出来上がるんだと
つくづく感じた。
203デフォルトの名無しさん:2007/09/02(日) 02:22:49
PCがしょぼいんだろ
204デフォルトの名無しさん:2007/09/02(日) 08:31:16
ユーザー固有のスタートメニューのフォルダは
Environment.GetFolderPath(Environment.SpecialFolder.StartMenu))
で取得できますが、
全ユーザー共通のスタートメニューのフォルダを
取得するメソッドは用意されていないのでしょうか?

ユーザー固有のスタートメニューのパスに含まれるユーザー名を
All Usersに置き換えればいいような気もしますが、
あらゆる環境で動くかどうか心配なので、
できれば、あらかじめ用意されている方法を使いたいと思っています。
205デフォルトの名無しさん:2007/09/02(日) 11:07:38
SpecialFolder列挙体には含まれてないやつがあるし
実行時にenumの範囲チェックしやがるので
SHGetFolderPathを直に使うしかないと思う
206デフォルトの名無しさん:2007/09/02(日) 16:25:56
インストーラ自作?
207デフォルトの名無しさん:2007/09/02(日) 17:40:56
.NETで書かれたSDJEditorを使ってみたが、.NETの先が見えた気がした

EmEditorに比べるとほんと鼻くそ

やっぱ.NETで有名なネイティブアプリに勝つなんて無理でしょうか?
208デフォルトの名無しさん:2007/09/02(日) 17:42:10
工作員必死だな
209デフォルトの名無しさん:2007/09/02(日) 18:44:52
比較対象がEmEditorなんだ。
秀丸と比べるとほんと鼻くそだよね>Em
210デフォルトの名無しさん:2007/09/02(日) 18:50:27
逆だな
211デフォルトの名無しさん:2007/09/02(日) 20:07:14
サクラが一番
212デフォルトの名無しさん:2007/09/02(日) 20:17:19
エディタなんてVisual Studioでいいじゃん
213デフォルトの名無しさん:2007/09/02(日) 20:32:23
コーディングはVSでやってるけど
.txtなんかはEmEditorに関連付けてる
214デフォルトの名無しさん:2007/09/02(日) 20:57:01
WebBrowserコントロールでMouseUpイベントを取ることは出来ないんですかね。
MouseDownは取れます。以下はVBですが。
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserMouseDownEvent.htm

Spy++で見てもLBUTTONUPとか表示されないので、そもそもムリなんですかねぇ。
215デフォルトの名無しさん:2007/09/02(日) 21:42:12
>>207
アプリ&開発者が違うのに、開発ツールを比較するか?w
216デフォルトの名無しさん:2007/09/02(日) 23:39:06
>>197
.net framework + 在庫管理や工程管理でぐぐったら出てくるよ。
217デフォルトの名無しさん:2007/09/02(日) 23:46:12
218デフォルトの名無しさん:2007/09/03(月) 00:03:57
でも、おそいねw

正規表現をつかったらperlに負けた

スクリプトに負けますか・・・
219デフォルトの名無しさん:2007/09/03(月) 00:05:51
Cの基本的な文法については勉強して次は実際にSourceForgeでオープンソースの
プログラムを読もうと思っていたのですが難しすぎて分かりません
みなさんはある程度文法の勉強をしてからどのようにして勉強していきましたか?
220デフォルトの名無しさん:2007/09/03(月) 00:06:26
ここはC#スレです
221デフォルトの名無しさん:2007/09/03(月) 00:15:02
>>218
正規表現エンジンの質やI/Oが主要なボトルネックになる類のプログラムでは
言語の差など微々たるもんだ
書き方にも拠るが、C++で書こうが普通にスクリプトのが速かったりする
222デフォルトの名無しさん:2007/09/03(月) 00:33:11
>>218
毎回正規表現をコンパイルするコードなんて書いてないだろうな?
223デフォルトの名無しさん:2007/09/03(月) 00:37:25
>>218
正規表現の処理がスクリプトで書かれてんじゃないだろw
224デフォルトの名無しさん:2007/09/03(月) 00:39:59
.NETの正規表現エンジンは遅くて困るというほどでは無いにしろ、
そんなに速くないだろ
スクリプトの場合は、それがCで書かれているだろうしな
225デフォルトの名無しさん:2007/09/03(月) 00:45:34
Regex のコンストラクタでオプションに RegexOptions.Compiled つけてる?
226デフォルトの名無しさん:2007/09/03(月) 00:46:51
>>219
文法しかわからない奴が、SourceForge等で公開されているソースを読めるわけないだろ

227デフォルトの名無しさん:2007/09/03(月) 00:48:28
俺も実験したことがあるが、正規表現をコンパイルしとくのは当然の話として、
C#で正規表現の性能を競ったらPerlやらPythonやらに普通に勝てんよ

そういう競争なら、相手はスクリプトではなくて、実質的にはCでカリカリに
チューンされたモジュールになる
勝てるわけが無いだろ
228デフォルトの名無しさん:2007/09/03(月) 00:57:08
>>227
だったら、C#の存在意義ってなに?
229デフォルトの名無しさん:2007/09/03(月) 01:01:45
>>228
さあ
無いと思えば無いんじゃね

性能はネイティブにゃ勝てんし
スクリプトみたいに手軽じゃないし
Javaみたいにwrite once, run anyware標榜してるわけでもねぇし
230デフォルトの名無しさん:2007/09/03(月) 01:06:02
正規表現ならTcl最強説
231デフォルトの名無しさん:2007/09/03(月) 01:16:10
>>228
一応言っとくが、自分で計算処理する分にはC#のがスクリプトよりは
格段に速いぞ
ネイティブのがさらに速いがw

自分の計算が主要なボトルネックになるタイプのプログラムかどうかが
一つのポイントだな
そうでないようなケースは案外多い
232デフォルトの名無しさん:2007/09/03(月) 01:24:44
エミュレートされた仮想CPU上で動いてる訳でもなし、C#ではそもそも
記述できない低水準の処理以外の部分でネイティブコードと速度に差なんて出ようがないと思うが。
233デフォルトの名無しさん:2007/09/03(月) 01:25:22
普通速度なんか気にする必要ないだろ
体感できるほど遅くなるアプリなら最初からネイティブしか選択肢ないし
そんなんめったに書くことない
234デフォルトの名無しさん:2007/09/03(月) 01:25:22
そもそもさぁ

早いとか、遅いとかって言ってる奴は、証拠のソースを出せよ

だってさ
PerlもPythonも、コンパイル時に正規表現のコンパイルと最適化をしている
C#やJavaは実行時
どうやってコンパイルと最適化に消費する処理時間を考慮するの?
235デフォルトの名無しさん:2007/09/03(月) 01:27:24
>>233
速いことより、遅い方がいいことってあるのかしらん?
236デフォルトの名無しさん:2007/09/03(月) 01:27:52
実行時にネイティブにコンパイルされるといったって
C#は安全性を気にして余計な処理をしてるだろ
Cとかと比べたらどうしたって遅くなる
237デフォルトの名無しさん:2007/09/03(月) 01:28:44
>>235
速度の違いが体感出来ないならC#使ってもデメリットはない
プログラミングが楽になるからC#使った方がいいというわけだな
238デフォルトの名無しさん:2007/09/03(月) 01:29:28
>>232
そりゃJITだけどCにゃ負けるようだよ
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
これはMonoだが、Java Server VMの性能が参考になるだろう
239デフォルトの名無しさん:2007/09/03(月) 01:32:20
そもそも.NETで不満になるようなアプリってどれぐらいあるんだ?
大体.NETは実行スピードと生産性のバランスの中のひとつの解に過ぎないだろ
240デフォルトの名無しさん:2007/09/03(月) 01:34:25
.NETは計算速度はそんなに遅くねぇけど
起動がのろいのとGUIもっさりはどうしようもねぇな
241デフォルトの名無しさん:2007/09/03(月) 01:36:40
ソース出ないね
やっぱり法螺吹きか
242デフォルトの名無しさん:2007/09/03(月) 01:37:14
>>234
CLIランタイムをロードする時間に比べりゃ、正規表現のコンパイルにかかる時間など
微々たるもんだろw
243デフォルトの名無しさん:2007/09/03(月) 01:38:13
Win32のBitbltとか呼んでももっさりするかね?GDI+よりは早い。
244243:2007/09/03(月) 01:38:59
すまん。最後は疑問系です・・・(ノД`)
245デフォルトの名無しさん:2007/09/03(月) 01:41:19
>>243
DDBのblitはGDI+の10倍は速いらしいな
その時点でWinFormsだめぽ
246デフォルトの名無しさん:2007/09/03(月) 01:45:05
>>241
そんなに気になるんなら自分でためせばいいのに

以前俺が実験したソースをあげるよ
ttp://www.borujoa.org/upload/source/upload14325.zip

青空文庫のテキストを適当に置換するプログラム
inputというフォルダにサンプルの入力ファイルがあるが、300K程度の
サイズだから、気になるならデカくしてみるんだね
247デフォルトの名無しさん:2007/09/03(月) 01:53:14
>>239
それはあくまで作る側の屁理屈

使う側からすれば、生産性なんてどうでもいい

あなたが、よく使うアプリケーションが次バージョンから.NETで書かれたらどう思う?
LightWaveが.NETなんかで書かれたら俺は間違いなくMAXへ移行する
248デフォルトの名無しさん:2007/09/03(月) 01:57:26
>>247
えーとね、生産性悪くなるとコストがかかるんだよ。
それは製品価格に反映されたり、次バージョンで実装される機能が少なくなったりすることになるんだよ。
249デフォルトの名無しさん:2007/09/03(月) 02:05:21
>>247
なんでアセンブラでつくらねーんだっていってみろ。
250デフォルトの名無しさん:2007/09/03(月) 02:06:39
まあ、問題は、場合によっては普通にLL言語にさえ後れを取る
C#がバランス上最適解かどうかだろうなw
251デフォルトの名無しさん:2007/09/03(月) 02:06:52
製品の値段に直結するぞ。
機能も少なくなるぞ。
品質が下がることもあるぞ。
252デフォルトの名無しさん:2007/09/03(月) 02:07:02
けど、C#が使えないのは事実
C#しかつかないやつはVC++で開発してる部署に行ったらほぼ終わり
253デフォルトの名無しさん:2007/09/03(月) 02:07:34
>場合によっては普通にLL言語にさえ後れを取る
絶対にLL言語に遅れをとらない言語ってなんだよw
254デフォルトの名無しさん:2007/09/03(月) 02:09:30
VC++しかつかないやつは他の言語で開発してる部署に行ったらほぼ終わり
255デフォルトの名無しさん:2007/09/03(月) 02:14:15
>>246
・300kのIO速度の計算をスルー
・300kのSJISから内部コードの変換(UTF-16やutf8)コストもスルー
・(C#)2000行の無駄なnew StringBuilderとToString、+演算子置き換えで高速化

正規表現のベンチになってないよ
256デフォルトの名無しさん:2007/09/03(月) 02:17:16
>>255
うん、正確な正規表現のベンチのつもりで書いたのではないよ
それが求めるものなら自分でやってくれ

IO処理は「どの言語でも」やっている
ユニコードへの変換も「どの言語でも」やっている
オーバーヘッドの大きそうなフォーマット処理も、PerlやPythonでもやっている

概ね、カリカリに書かずに適当に同じレベルで「普通に」書きなぐったものだ
特に何かをひいきしたつもりは無い

そうやって書いたものが、スクリプトが案外速かった(C#より速い)ってのが
重要ね。
257256:2007/09/03(月) 02:28:23
ちなみにC++も三種類書いてみたが大して速くなかったね。
ソースを見れば分かるが、LL言語で書くよりずっと複雑でトリッキーで
エラーを産みがちなコードになるというのに。

こんな仕事はLL言語向きだ。他の解は馬鹿げている。そう思ったよ。
そして、そういう仕事は案外多いのだと思う。
258デフォルトの名無しさん:2007/09/03(月) 02:37:29
プロセスの生成負荷も考慮されてない…
C#、C++、Perl、Pythonではエンジンの起動時間は大きく違うし、
いくらなんでも、これで決めつけるのは早計だと思うが。

俺のPCでは、C#の方がPerlより速かったり遅かったりだった。
一瞬すぎて測れない。
Core 2 Duo E6600, 2GB, Win Vista
Super Fetchがどこまで効いているかはわからない。

明日kwsk調べようかな。
259デフォルトの名無しさん:2007/09/03(月) 02:45:50
正規表現の処理の話をしてるときにこれはない
260デフォルトの名無しさん:2007/09/03(月) 02:46:28
つうか試してないけどコンパイルしないほうが早かったりしてよw
261256:2007/09/03(月) 02:54:56
>>258
入力ファイルデカくしてみそ
二回目以降はキャッシュが効くし、入力が十分デカければ起動時間は誤差の範疇に
持ち込めると思うが
ちなみに俺の環境はXP、Pentium M(1.7GHz), RAM 500Mだからずっとショボい

>>259
純粋に正規表現エンジンの性能を計りたいんなら、そうだね
俺がやったのは、正規表現を用いた典型的なPerlの使い捨てスクリプトレベルの
仕事を各種の言語で書いてみた、それだけのことで、やっている仕事自体は
どの言語でも同じだよ
262デフォルトの名無しさん:2007/09/03(月) 03:15:34
せめてマッチ対象文字列は、メモリに確保しておかないとベンチにならんだろw
263デフォルトの名無しさん:2007/09/03(月) 05:29:41
起動が早い言語の勝負じゃないからな
264デフォルトの名無しさん:2007/09/03(月) 09:15:08
>161
ご回答ありがとうございます。

そんなことを頻繁にするかどうかは知らんよ。
俺がちゃんとわかってる人かどうかは
あんたが決めることじゃねえよ。スキルチェックでもしてくれ。
265デフォルトの名無しさん:2007/09/03(月) 10:34:36
プログラマーなんだから、C++とC#両方使えるようになろうや。
266デフォルトの名無しさん:2007/09/03(月) 11:35:59
C++なんぞ使ってると脳みそが腐るぜ
267デフォルトの名無しさん:2007/09/03(月) 11:39:14
C++使ってる奴がまだ居たなんて・・・
268デフォルトの名無しさん:2007/09/03(月) 12:30:18
C++は使えませんが、C++でできています。
269デフォルトの名無しさん:2007/09/03(月) 12:58:35
C++はC++でできています
270デフォルトの名無しさん:2007/09/03(月) 13:29:49
gccがgccでコンパイルできるようになりました、というのは結構画期的なことだったらしいが
271デフォルトの名無しさん:2007/09/03(月) 14:01:15
foreachループ変数が書き込み禁止だってことを今更ながら知ったのだが・・・
なんでこんな制限があるんだ?
コレクションに変更を加えるわけじゃないし問題ないと思うんだけど。
272デフォルトの名無しさん:2007/09/03(月) 15:49:14
C#で変数名に変数を使うやり方ってどうやるんですっけ?
test_i(i=1,2,3・・・)みたいな。
273デフォルトの名無しさん:2007/09/03(月) 15:54:20
配列を使いましょう
274デフォルトの名無しさん:2007/09/03(月) 16:06:14
>>271
たとえば
string[] strArray = new str[]{"a","b","c"]
foreach(string str in strArray)
{
s="d"
}

ってやってもstrArrayには反映されない。

foreachの列挙子はIEnumerableの実装いかんによっては、何を
参照しているのか全く保障されない。
IEnumeratorは上記の例のようにコピーを返してくるかも知れない。
あと、IEnumuratorの実装クラスは「列挙」できればよく、要素の概念
を持たないものだってあるからね。
MSDNのIEnumerableのサンプルをみてみそ。
275デフォルトの名無しさん:2007/09/03(月) 16:30:21
>>271
「変数の使いまわし」ができないようにするのが最近の流行だから。
バグが減ると信じられてる。
276デフォルトの名無しさん:2007/09/03(月) 16:36:34
foreachって実際は

while(strEnumerator.MoveNext())
{
 string str = strEnumerator.Current;
 ...
}
こんな感じでしょ
代入しても無意味というか、元が配列だったりすると
書き換えられるという錯覚を与えかねない
というか配列のforeachは
for(int i = 0; i < strArray.Length; ++i)...
に置き換える最適化がされるらしいから
実際に書き換えられちゃうんでそうするとforeachの意味が変わっちゃう
277271:2007/09/03(月) 16:55:47
>>274
>>276
foreach変数ってIEnumeratorの実装に関わらずスタック上に置かれるものでは。
構文上もそこで宣言してるわけだし、直接書き換えられると誤解される余地もないと思うけど。

>>275
それで余分な変数を導入する方が場合によっては可読性が落ちると思うんだけどなあ。
というかforeach変数だけ禁止しても意味がないような・・・
278デフォルトの名無しさん:2007/09/03(月) 17:01:33
>>277
たしか、usingとかfixedとかで宣言した変数も使いまわしできないな。
279デフォルトの名無しさん:2007/09/03(月) 17:55:02
むしろforが例外か
280デフォルトの名無しさん:2007/09/03(月) 19:45:58
>>271は単に参照型と値型の区別がついてないというか、データがメモリにどう
配置されるかのイメージがつかめてないだけの気がする。
>>275は意味不明だと思う。

繰り返し変数はもとの変数のビットイメージのコピーであってもとの変数そのものではない。
これが理解できていれば271はそもそも愚問であって、こんな疑問は抱きようがないんじゃないか?
281デフォルトの名無しさん:2007/09/03(月) 19:55:24
その後の流れをちゃんと読めよw
271はforeachでコレクションの内容を変更したいんじゃなくて、例えば
//引数に与えられた値+2を返すメソッド
int Plus2(int value){
value += 2;
return value;
}
みたいなことをforeachの繰り返し変数でもやりたいんだろ
282デフォルトの名無しさん:2007/09/03(月) 20:13:55
int Plus2(int value){
return value + 2;
}
でいいじゃん
283デフォルトの名無しさん:2007/09/03(月) 20:20:09
なんという正論
284デフォルトの名無しさん:2007/09/03(月) 20:20:50
>>282 頭悪そうだな・・・
285デフォルトの名無しさん:2007/09/03(月) 20:22:57
まあ281の例えも悪いよ。
変に例える必然性なんて全然ないのにね。
286デフォルトの名無しさん:2007/09/03(月) 20:24:32
というか、+2と決めうちなのにメソッド作る意味があるか?
287デフォルトの名無しさん:2007/09/03(月) 20:26:09
281の方が頭悪そうだ
288デフォルトの名無しさん:2007/09/03(月) 20:26:40
>>271
あるいは逆にコレクションに変更を加えようとしてミスるプログラマが出るのを予防するためだな。

D言語ではforeachの制御変数には明示的にrefキーワードをつけないと、代入できないようになってる。
289デフォルトの名無しさん:2007/09/03(月) 20:30:55
それどんな感じで列挙子を実装するの?
290デフォルトの名無しさん:2007/09/03(月) 20:33:54
>>288
そんなアホグラマは正直無視でいい・・・
と思うのは俺だけ?

だってそんなこといったら仮引数だって変更不可にするべきじゃん
291デフォルトの名無しさん:2007/09/03(月) 20:42:45
>>289
int opApply(int delegate(ref T));というメンバ関数を実装する。
http://www.kmonos.net/alang/d/statement.html#ForeachStatement

>>290
Dでは仮引数にinキーワード(あるいは、finalキーワード)を追加することによって、仮引数への代入が制限されますよ。

要するに、最近は酔っ払いでも使えるような言語設計が流行っているのだ。
292デフォルトの名無しさん:2007/09/03(月) 20:50:44
フェイルセーフがあるのは結構な事じゃないか
293デフォルトの名無しさん:2007/09/03(月) 21:01:28
いつも酔っぱらってこーでぃんぐしてるからありがたい
294デフォルトの名無しさん:2007/09/03(月) 21:45:38
参照型の場合
foreach (Hoge h in Hoges) {
  h = new Hoge(); // はダメでも
  h.Member = 123; // は全然OKだから
あまりガードにはなってないよね。
295デフォルトの名無しさん:2007/09/03(月) 21:55:27
…なんか勘違いしてないか?
296デフォルトの名無しさん:2007/09/03(月) 22:11:00
>>295
なんかって何?一言主さん
297デフォルトの名無しさん:2007/09/03(月) 22:13:01
フェイルセーフがいいならC++のconstなんか真っ先に導入しなきゃダメだろ
キャッチしなきゃいけない例外も必要だろ
C#はそういうのが意図的に外されてるんだな
意味ないから
298デフォルトの名無しさん:2007/09/03(月) 22:15:50
VC++(2005)のMS拡張構文ではconstのあるなしで調整できるようだ。
// cl /EHsc
#include <vector>
#include <iostream>
int main() {
  std::vector<int> v;
  v.push_back(1); v.push_back(3); v.push_back(5);
  for each(int r in v) {
    r++; // OK
    std::cout << r << std::endl;    
  }
  for each(const int r in v) {
    r++; // Error
    std::cout << r << std::endl;    
  }
}
299デフォルトの名無しさん:2007/09/03(月) 22:18:01
>>297
いや、チェック済み例外は明らかに設計ミス。
300デフォルトの名無しさん:2007/09/03(月) 22:21:40
しかしネットワークなんかだと、
絶対に間違いが起きる可能性がある処理はあるわけじゃない
そういうのをどうやって実装すればいいの
301デフォルトの名無しさん:2007/09/03(月) 22:27:25
そんなのインテリセンスなりナンチャラペットの水準でサポートすれば
済むことじゃないの?

まあ、それ以前にドキュメントをちゃんとして欲しいよねw
302デフォルトの名無しさん:2007/09/03(月) 23:09:05
constもチェック済み例外も問題の根は同じ。不必要に実装に結び付く(透けて
見せる)シグニチャである点。
303デフォルトの名無しさん:2007/09/03(月) 23:15:15
>>277

あんた、単なる素朴な疑問かと思ってたけど
真正のあほだな
304デフォルトの名無しさん:2007/09/03(月) 23:16:10
VC# ExpressEditionダウンロードしたんだけど
オフラインでMSDN見ることってできないんですか?
305デフォルトの名無しさん:2007/09/03(月) 23:21:54
ふらっとに行くべき
306デフォルトの名無しさん:2007/09/03(月) 23:31:16
>>302
意味がよくわからないから詳しく説明してくれ
307デフォルトの名無しさん:2007/09/04(火) 01:41:01
>>290に同意。費用対効果の低いフェースセーフ要らないぽ
constだので縛ってもバグは斜め上からやってくるね。
sealedつけてたのにsealed外されるとか。

foreachといえば、配列に関してはfor文と同等の速度が出ますが、こういう情報はどこにあるのでしょうか?
パフォーマンスガイドラインに重いループではforeachよりforって書いてあったので
わざわざ変えたのに・・悲しい。
308デフォルトの名無しさん:2007/09/04(火) 02:21:04
英語だけどパフォーマンスの話題はここが詳しいかな
http://msdn2.microsoft.com/en-us/library/ms998547.aspx
1.1に基づいてるからまだforが速いって書かれてはいるが・・・

http://msdn2.microsoft.com/en-us/library/aa137140.aspx
ここにもパフォーマンスの記事が結構たくさんあるね
特にKnow What Things Costは命令ごとのコスト表が載ってて面白いかも
309デフォルトの名無しさん:2007/09/04(火) 02:52:52
>>307
2.0だとforeachのほうが若干早くなってますね。
foreach (int v in ar) csum += v;
for (int i=0; i < 10000; i++) csum += ar[i];

これを下のように書くとforeachと同じスピードになるからそういう最適化をしてるのでしょう。
fixed (int *sp = &ar[0]) {
 int *ep = sp + 10000;
 for (int *p = sp; p < ep; p++) csum += *p + j;
}

ただ、foreachの制御変数が読み取り専用なのは、フェイルセーフのためなのか、
最適化のためなのかは判断がつきません。
310デフォルトの名無しさん:2007/09/04(火) 07:54:38
アンセーーーーーフ!!
なるほど、「処理を直接記述されると最適化できないが
抽象度を高くすると最適化しやすい」というやつか
forよりforeachの方が早い
LINQも早くなるという

しかしループ変数への代入を許すとこの最適化が出来なくなるわけか
311デフォルトの名無しさん:2007/09/04(火) 09:28:17
アンマネージドのコードと同期をとりたく、
EventWaitHandle.Handle プロパティで
ネイティブのハンドルを取得しようと思ったのですが、
「古い形式です」と起こられてしまいます(警告)。
新しい形式ではどのように書くのでしょうか?


312デフォルトの名無しさん:2007/09/04(火) 09:37:04
>>311
MSDNにずばり書いてあるから、まず自分で調べるくせをつけろ。
313デフォルトの名無しさん:2007/09/04(火) 09:37:06
あ、
EventWaitHandle.SafeWaitHandle.DangerousGetHandle()
でいいみたい。
Safeなんだか、Dangerousなんだか。
314デフォルトの名無しさん:2007/09/04(火) 10:15:09
>>313
DangerousGetHandle()は必要?
MSDNでは、
>このクラスを使用すると、派生クラスのインスタンスでラップされたアンマネージ リソースを
>識別するハンドル (オペレーティング システム ハンドルなど) をアンマネージ コードに
>渡すことができます。
となってるし、使用例にあるWindowsAPIの呼び出しサンプル見ても、IntPtrの代わりに使ってる。
というか従来のIntPtrの代わりに使うべきもののように見える。
DangerousGetHandle()はデバッグのためにハンドル値を16進でダンプしたいとかの特殊用途のために
残してあるんじゃないか。
315デフォルトの名無しさん:2007/09/04(火) 11:08:29
>>314
なるほど。ほんとだ。

ハンドルは、PVOIDだろ、と、
[DllImport("native.dll")]
public static extern void NativeFunc(System.IntPtr hHandle);
して、Handleプロパティから渡していたので、、
替わりにSafeWaitHandle使えと言われても、型が違ってこまってました。

[DllImport("native.dll")]
public static extern void NativeFunc(SafeWaitHandle hHandle);
こうすればいいんですね。
316デフォルトの名無しさん:2007/09/04(火) 12:42:53
デンジャラスなんてついてるメソッド使いたくないお
317デフォルトの名無しさん:2007/09/04(火) 13:35:00
IntPtrで問題が発生したら泣き寝入りするお
318デフォルトの名無しさん:2007/09/04(火) 18:41:40
>>316-317
正直、「ボキュはキモヲタだお」って言ってるようにしか聞こえない。
そういうの気色悪いと思わない自分を気色わるいと感じるべきだ。
319デフォルトの名無しさん:2007/09/04(火) 18:48:43
どうか、次のVBをC#に直して下さい。

Label1.Text = Replace(Session("body"), vbCrLf, "<br />")

-----------------------------------------------
VBの本の中にソースが載っていたのですが、
この1文が、どうにもわかりません。

そのコード意味は、どうやらセッションというデーター内の改行を
HTMLの改行に変換するっぽいのですが・・・。(推測)

ちなみに、他の行は自力で調べましたが肝心のこのコードが分りませんし、
C#でどう書けば良いのか分りません。

賢者の方々、どうか愚者の私にご指導をお願い申し上げます
320デフォルトの名無しさん:2007/09/04(火) 18:54:20
>>319
少しはググるとか努力しろよ

VB.NET固有の関数をC#で使用するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/254vbfunc/vbfunc.html

でも、それただの部分文字列の置換でしょ?
String.Replaceか正規表現で代用できるでしょ。
321デフォルトの名無しさん:2007/09/04(火) 18:54:33
>>319
http://zoosir.hp.infoseek.co.jp/tips/string/string03.htm
C#だと省略可能引数(Optional)が無いから、全部書く必要があるらしい。
322デフォルトの名無しさん:2007/09/04(火) 21:35:51
>304
MSDNも普通にフリーとして公開されてなかったか?
323デフォルトの名無しさん:2007/09/04(火) 21:54:39
csc.exeやvbc.exeって開発環境がなくてもインストールされるものなんですか?
C:\windows\Microsoft.NET\framework\以下にあるのでそんな気がしますが。
324デフォルトの名無しさん:2007/09/04(火) 21:57:13
はい。実行時に使用する場合もあるので、全ての環境に含まれています
325デフォルトの名無しさん:2007/09/04(火) 22:03:35
>>324
おお、そうだったんですか。
これで安心してCodeDomが使えます。
326デフォルトの名無しさん:2007/09/04(火) 22:17:14
標準添付はcsc/vbc/jscの三つ、だったかな確か clは非標準だよね
標準なのにドマイナーなのがひとつ
327デフォルトの名無しさん:2007/09/05(水) 00:09:57
Control.Invoke系のメソッド呼ぶとどっかで内部的にファイナライザが必要になるっぽいな。
ループの中から呼んだりして大丈夫なんだろうか。
何千何万って呼んだらなんか嫌なことになりそうな気がする。
328デフォルトの名無しさん:2007/09/05(水) 00:15:47
ここは散文を書くところではない。
説明調の、他人に意味がちゃんと通じる文章書けよ
329デフォルトの名無しさん:2007/09/05(水) 00:23:22
え、ファイナライザのコストが高いことを説明しろってこと?
それは説明するまでもないと思ったけど。

何が通じてないのかわからん。
Invoke系のメソッドってのはInvoke、BeginInvokeのことだよ
それらを呼んだら内部的に生成されるオブジェクトでファイナライザが呼ばれるっぽいんで嫌だなって話。
330デフォルトの名無しさん:2007/09/05(水) 00:37:10
何をみてそう思ったの?
331デフォルトの名無しさん:2007/09/05(水) 00:38:28
>何が通じてないのかわからん。
読む側の立場に立って自分の文章推敲できない人間はたいていそうだ。

ついでに、ファイナライザのコスト?
意味がわからない。
デリゲートを処分するコストがそんなかかるのかね?

仮にかかるとして、コストとは「時間当たりのCPUの使用量」のことだと思うが、
どのみちmsのオーダーでInvokeとか不可能だから意味がないだろう。
332デフォルトの名無しさん:2007/09/05(水) 00:39:31
>それは説明するまでもないと思ったけど。
いったいどんな頻度でControl.Invokeなんかを実行する気だ?
333デフォルトの名無しさん:2007/09/05(水) 00:44:23
>>327
再描画を伴わないControl.Invokeの使い道って
あんまり思いつかないんだけどどうだろ?

経験上、何千何万って単位でControl.Invokeを呼ぶと
再描画コストが恐ろしいことになる。

WinFormsなら1秒間に10回ぐらいの更新でいいんじゃないかね?
まあそれ言い出すとTimerでいいじゃんて話も多いんだけど。
334デフォルトの名無しさん:2007/09/05(水) 00:44:31
>>330
CLR Profilerで見れるよ。

>>331
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndotnet/htm/dotnetgcbasics.asp
この辺でも読んでくれ。
なんでデリゲートが出てくるのかわからんが・・・

>>332
別スレッドでなんかの処理中にUIを更新するために呼んだりしない?
まあ何万は言いすぎかも。
335デフォルトの名無しさん:2007/09/05(水) 01:04:23
>>322
ヘルプから見れるキーワードとか目次がMSDNなんですか?
336デフォルトの名無しさん:2007/09/05(水) 01:05:13
>>334
読んでくれって、どこにもお前さんが主張しているような類のことは書いてないだろw
337デフォルトの名無しさん:2007/09/05(水) 01:10:27
>334 CLR Profilerで見れるよ。
Control.Invokeを使ったらファイナライザが実行されたってこと?EndInvokeしてても?
338デフォルトの名無しさん:2007/09/05(水) 01:13:32
ファイナライザのコストが高い(高くなりうる)ということ自体はわかるが、
Control.Invokeで実行されるというファイナライザを持つオブジェクトが内包するオブジェクトとか。
Control.Invokeを実行する通常の頻度とかから考えて、それが問題になるほどコストが高いとは思えん
ということだよ。

「ファイナライザのコストが高い」という表現自体をそのまま疑ってるんじゃない。
ついでにEndInvokeしたらファイナライザは実行されないんじゃないの?普通に考えて。
と思っただけで、まあこれはプロファイラで確認してそうなってるってんならそうなのかもしれん。
339デフォルトの名無しさん:2007/09/05(水) 01:17:46
>>335
VS2005 Expressのヘルプに標準で何が入っているかは知らないが、MSDNライブラリはこれ。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=b8704100-0127-4d88-9b5d-896b9b388313&DisplayLang=ja

2.5Gバイトほどあるから注意してくれ。
340デフォルトの名無しさん:2007/09/05(水) 01:22:22
ファイナライザはそれを行わなければならないものが一つでもあると
GCを二回行わなければならず単純計算でGCにかかる時間が倍になるんじゃなかったか
341デフォルトの名無しさん:2007/09/05(水) 01:27:36
>>337
>>338
EndInvokeしても呼ばれるみたい。
やっぱgen0でちゃちゃっと回収されるから問題が少ないってことなのかな?
具体的にはControl.ThreadMethodEntryってオブジェクトだけど
ファイナライザの処理自体はシンプルだけど他のオブジェクトへの参照は割とごっそり保持してるみたいだな。

まあ他に代替手段があるわけじゃなしどうこういっても仕方ないんだけどね。
342デフォルトの名無しさん:2007/09/05(水) 01:42:58
おお?なんだこの意味なしFinalizeはw
いらねーじゃねーかよ。
343デフォルトの名無しさん:2007/09/05(水) 01:48:44
>他のオブジェクトへの参照は割とごっそり保持してるみたいだな。
そんなに困らないオブジェクトが多いけどな。
まあ引数とか戻り値はクリアしてほしいところだが
344デフォルトの名無しさん:2007/09/05(水) 01:58:26
だいたい、GEN1までで回収できたら、負荷的にはまあそんなに大きくはならないようだな。
GUIアプリだし、特にControl.Invokeなんて同期実行なんだから、まあ普通はまずGEN1ですべて回収できるだろう。
345デフォルトの名無しさん:2007/09/05(水) 02:05:06
SuppressFinalizeを書き忘れてるんじゃないか
346319:2007/09/05(水) 11:20:12
>>321賢者
一応、下記ソースに変更出来ました。
的確な助言、ありがとうございました。

if ((string)(Session["Body"]) == null)
{
  Label1.Text = "<br />";
} else {
  Label1.Text = ((string)(Session["Body"])).Replace("\r\n", "<br />");
}
347デフォルトの名無しさん:2007/09/05(水) 11:24:43
暇があったら as 演算子を調べとくといいよ
348319:2007/09/05(水) 11:45:52
>>347 神へ

ご助言の通り、as演算子をしらべました。
お陰でたまに出るエラーがなくなりました。
さすがは神ですね。
即レスにも関わらず、100%的中でした。

なぜ、私がたまに出る意味が理解できないエラーで苦労している所を
お察し出来たのか愚民にはわかりませんが、
貴方の英知で、救われました。
再びお礼を申し上げます。

string s = (string)(Session["Body"]) as string;
if (s == null)
{
  Label1.Text = "<br />";
} else {
  Label1.Text = ((string)(Session["Body"])).Replace("\r\n", "<br />");
}
349319:2007/09/05(水) 12:08:38
※すみません。下記に訂正しました。

string s = (string)(Session["Body"]) as string;
if (s == null)
{
  LabelBody.Text = "<br />";
} else {
  LabelBody.Text = s.Replace("\r\n", "<br />") + "<br />";
}
350デフォルトの名無しさん:2007/09/05(水) 12:18:23
まだキャストしてんじゃん。

string s = Session["Body"] as string;

じゃないとエラーでるっしょ
351319:2007/09/05(水) 12:22:14
>>350
いいえ。
今の所、何もエラーがでませんが?

でも、助言ありがとう。
352デフォルトの名無しさん:2007/09/05(水) 12:39:14
>351
エラーは出ないけど
string m = ((string)"Hello")

とはやらないだろって事じゃない?
353デフォルトの名無しさん:2007/09/05(水) 12:59:04
>>352
うん。私もそう思ったので、助言どおりに直しました。
だから、「助言ありがとう」とカキコしたよ。(^^
354デフォルトの名無しさん:2007/09/05(水) 13:34:37
foreachを書き込みしたいっていう人は具体的に何をしたいの?
1. foreachのループの中でコレクションの書き換えをしたい。
2. foreachのループ変数を書き換えることによって、ループの制御をしたい

1.なら foreachのループ変数はコレクションの要素とは無関係な場合もある。
そもそも、IEnumerableには「要素」の概念はないし、arrayみたいにIListを実装した
インデックスを通じて要素にアクセスできるコレクションとは限らない。

2なら、ループのカウンタはIEnumerableの内部でループ変数とは別に
管理されているから、無駄(というか、おそらく何も起きない)。

だと思うんだけれど、ほかに何か書き込み許容するといいことってありますかね?
355デフォルトの名無しさん:2007/09/05(水) 13:54:18
今更その話か
ちゃんと読めとしか言いようがないが、1でも2でもない(つーか2は意味がわからんが)

あえて例を出すならこんなことがしたいんでしょ
foreach (string str in input)
{
str = str.Trim().ToLower();
if (str.Length == 0) throw new exception("Invalid");
Console.WriteLine(str);
}
356デフォルトの名無しさん:2007/09/05(水) 14:15:34
>>355

なるほど、そういうことか。全然議論が見えてなかった。
Console.WriteLine(str.Trim().ToLower());
でも書き込み禁止だとエラー出るのかな???

355さんの例みたいに条件分岐したいような場合は
たとえ書き込み禁止じゃなくても、可読性のために仮変数おいたほうが
いいとおもうけど…。
357デフォルトの名無しさん:2007/09/05(水) 14:15:34
>>353
object o = 1;
string s = (string)o as string;
358デフォルトの名無しさん:2007/09/05(水) 14:29:43
えーっとだな…

それはなんだ?
359デフォルトの名無しさん:2007/09/05(水) 15:28:55
C#からC++のクラスライブラリを利用するには、
ttp://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_03.html
のように、publicメンバすべてをラップしか、方法ありませんか?
360デフォルトの名無しさん:2007/09/05(水) 15:30:10
dt=$.split(' \n');dt[dt.length]='';for(i=0;undefined!=dt[i];i+=2){write(dt[i-i%2+1].replace('jp.','').replace('www.',''));br();write(dt[i-i%2]);br();}
361デフォルトの名無しさん:2007/09/05(水) 15:36:46
>>359
使うメンバだけラップすれば良いよ。
COM 化するって手もある。
362359:2007/09/05(水) 15:53:00
>>361
なるほどCOMって手も。。

説明まちがえた。
すべてのメンバか使うメンバだけって、ところが問題じゃなく、
いちどC++/CLIでラップしなければいけないのかどうか、知りたかった。

ラップするのはここではC++/CLIだが、
直接C#でラッパを書いて、マネージドのクラスライブラリを作ることは
可能ですか?
363デフォルトの名無しさん:2007/09/05(水) 16:01:12
>>362
C++/CLI でラッパを書く、C++ で COM 化するのいずれも避けるには?ってことですか。

ヘッダファイルとオブジェクトファイル(あるいはソースコード)で供給されるような普通の
良くあるクラスライブラリの場合、そもそもライブラリ側のコードを呼び出す手段が無い
ですよね。

dllexport されているクラスなら MSVC の ABI に従って呼び出してあげれば動くでしょうけど、
そういうライブラリはあまりないし、割に合わないような気がする。
364デフォルトの名無しさん:2007/09/05(水) 16:34:36
今ハードウェアとやりとりをしなければならないので、PInvoke を使って DLL にアクセスしています。
この DLL の Open 関数を構造体を引数として呼んであげると、この構造体の中にデータが入って
返ってくるというものです。
で問題はこの構造体のメンバに構造体の配列が入っており、この構造体の配列を取得することが
できません。( 構造体の他の int のメンバは取得できています。以下でいうところの ID )
このような構造体下の構造体を取得することはできないのでしょうか。

struct Parent
{
public int ID;
public Data[];
}

struct Data
{
public int RawData;
public int Length;
}
365359:2007/09/05(水) 16:38:33
>>363
すみません、最後の、
dllexport されているクラスなら(snip)動くでしょうけど、
について、もすこし教えてください。dllexportすれば、
C#から直接呼べますか?
366デフォルトの名無しさん:2007/09/05(水) 16:59:15
>>365
exportする側は
http://msdn2.microsoft.com/ja-jp/library/a90k134d(VS.80).aspx
あたりを参照

メンバ関数がどういう名前でexportされるかはコンパイラ依存。
dll 生成時の出来る lib を見て自分で調べる。
仮想メンバ関数は vtbl 経由でアドレスを取得。

MSVC の 呼び出し規約は基本 __cdecl ですが this を ecx に入れて呼ばなきゃないので、
そこだけは C++ というかアセンブラの補助が必要ですね・・・
367デフォルトの名無しさん:2007/09/05(水) 17:00:01
あなたがCでDLLExportされたC++クラスのコンストラクタを起動し、
vtblに格納されているか少なくとも名前マングリングされたthisコールの
メンバ関数を起動し、スローされた例外を上手いこと取り扱い、最後に
デストラクタを起動して破棄できるのなら、C#でもきっと出来るだろう。
368デフォルトの名無しさん:2007/09/05(水) 18:36:48
大人しくEXEキックしてコンソールで取り込めば?
369359:2007/09/05(水) 19:13:34
>>366 367 368
みなさん。ありがとうなんとなく理解した。

[DllImport("native.dll")] extern static void Hoge()で、
C#から、Cの関数は呼べる仕組みがあるし(マーシャリングもあるし)、
マネージドであるC++/CLIからは、C++/Native のオブジェクトをnewできるし、
なので、C#からC++/Nativeにアクセスできる方法も実はあるんじゃないかと、
ちょっと期待して質問してました。
370デフォルトの名無しさん:2007/09/05(水) 21:11:06
>369
これはマジレス
キャストやアンマネージDLLを使うならVB.NETがいい。

VBFixedArrayにDECLAREで処理するDLLをC#で呼ぶ。
アンマネージVBが噛むと処理が激重だから、処理が軽いもの限定だけど。

FORTRAN
C
C++
で構造体処理するDLLも一発でいくよ
371デフォルトの名無しさん:2007/09/05(水) 21:12:58
VB 使うくらいなら俺は C++/CLI を選ぶぜ
372デフォルトの名無しさん:2007/09/05(水) 21:29:01
エクセルとか操るならVBの方がずっと楽だと思うけど、
アンマネージdllの関数呼ぶ手間はあんまり変わらないんじゃない?
373デフォルトの名無しさん:2007/09/05(水) 21:32:03
>371
C++/CLIでやるのもありだな。2003ですまない
374デフォルトの名無しさん:2007/09/05(水) 21:34:15
>372
それはVB.NETじゃなくないか?
375359:2007/09/05(水) 21:38:27
>>370
ラッパをVBで書く?
>>371
私もなんとなく同意。

やりたいことは、ネイティブなC++クラスライブラリを、
マネージド(C#)から使えるクラスライブラリにしたい。です。

結局C++/CLIでくるむ方法を取ることになりそうで検討中ですが、、
publicなクラス → ラッパクラス
interface → ??
publicなメンバ関数 → 全部ラッパ
publicなメンバ変数 → プロパティ
#define定数 → static const な定数
struct → ??
enum → ??

どのように書き換えたらいいか、わからないとこ満載だ。
どなたか、??のところを教えてください。

376デフォルトの名無しさん:2007/09/05(水) 21:41:15
バイナリーを読む場合ポインタTOストラクチャを使うC#に対してVBは一発で入るよ?

同じかな?
377デフォルトの名無しさん:2007/09/05(水) 21:43:47
>375
それなら2005を買ってみな。
ヘッダ読めばそのまま動く
378デフォルトの名無しさん:2007/09/05(水) 21:48:34
すまない、ちょっと言葉が足りなかった
使いたいライブラリをC++でインクルード

コンパイル

C#で参照設定
.NETプロジェクト

これで全部使える
379デフォルトの名無しさん:2007/09/05(水) 21:52:49
VB.NETでラッピングする場合は、DECLAREで定義。引数は全てVARIANTのFIXEDARRAY
(OBJECTだと通らないから注意)
で、きちんとした型をCTYPEで渡せば動作する

楽じゃないか?
380デフォルトの名無しさん:2007/09/05(水) 21:56:22
>>375
>マネージドであるC++/CLIからは、C++/Native のオブジェクトをnewできるし、

ネイティブのライブラリは実はCのランタイムライブラリが裏で色々サポートしているので
newの部分だけ見てても混乱するよ。

内部でCRTヒープ使ってるかもしれないし、
atexitみたいなコールバックに依存しているかもしれない。

一般論として、Cのライブラリは静的リンクなり動的リンクなりのCRTを必要とする。
そのCRTとの連携無しに、C#から
直接Cのコード使おうってのはちょっと無謀じゃないかな。

相手がDLLの場合、LoadLibraryされたときに自分でCRTの初期化やるから
その辺気にする必要はないんだけど。
381デフォルトの名無しさん:2007/09/05(水) 23:44:08
んん? そのためのC++/CLIなんだから、CRTのルールを守らず
アセンブリをロードするとは思えんけど。

http://msdn2.microsoft.com/ja-jp/library/ms173266(VS.80).aspx
382デフォルトの名無しさん:2007/09/05(水) 23:50:54
>>381
C++/CLIはそれでOK。そこは同意。

よく分からないのは359が言うところのクラスライブラリが
どんなファイル形式なのかかな?

1) *.h 単体 (テンプレートライブラリ)
2) *.h+*.lib
3) *.h+*.obj
4) *.h+*.dll
5) *.h+*.cpp

>>>359
>いちどC++/CLIでラップしなければいけないのかどうか、知りたかった。
とか書いている割に、どんな形態で配布されているライブラリなのか
未だに明かしていないみたいだけど。
383359:2007/09/06(木) 01:46:34
>>382
わかりにくくてすんません。一番最初にあげたurlの記事の内容そのまんまで、
WIN32で書いてあるスタティックのライブラリ。
2) *.h+*.lib
ってことになります。
ttp://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_03.html
で、このとおりやってみようと思ったのだが、
>>375
で書いたとおり、メンバ関数をラップするだけじゃ足りなくて、
その他もろもろ細かいところすべて書き換えなきゃならなくなって。。。
ホントにこれが普通の方法なのか?もっとエレガントな方法があるのでは。
と、思ったのでした。
ちなみに、すべてではないですが、
4) *.h+*.dll
の形にしたものもあります。
MFC,ATL,stlは使っていなく、CRTは使っているものとそうでないものが。

>>380 >>381
Nativeと.NET、両方が扱える言語は、C++/CLIだけで、
っていうか、C++/CLIはそのために存在している。ので、いまこそ使うときだ。
ってことですかね。
384359:2007/09/06(木) 02:01:14
>>370 >>379
VB.NETはまったく未開の地だ。ちょっとみてみる。ありがとう。

>>377 >>378
ん。COMの話?
385デフォルトの名無しさん:2007/09/06(木) 11:42:05
どうもデリゲートの使いどころがわからないんですが
イベントのメソッドはわかるんですが
おーデリゲートってすげー!!!
っというような使用法ってどういうのですかね
386デフォルトの名無しさん:2007/09/06(木) 11:48:38
//List<int> list;
list.Sort(delegate(int x, int y){return y.CompareTo(x);});//逆順ソート
387デフォルトの名無しさん:2007/09/06(木) 12:18:08
>>385
そもそもイベントはdelegateのシンタックスシュガー似すぎな一ツーの
388デフォルトの名無しさん:2007/09/06(木) 12:40:05
>>386
それって匿名メソッドスゲーの例じゃないの。
389デフォルトの名無しさん:2007/09/06(木) 12:46:03
C#2.0になってジェネリックや暗黙のインスタンス作成や匿名メソッドが付いて
デリゲートが使いやすくなったけど、その前は単体ではあんまり積極的に使われなかったような
390デフォルトの名無しさん:2007/09/06(木) 13:00:11
イベントとか意味わかんねえ
+=と-=しかできないし
なんに使うんだよ
391デフォルトの名無しさん:2007/09/06(木) 13:01:53
>>390
イベントのハンドリングだとおもう。
392デフォルトの名無しさん:2007/09/06(木) 13:04:04
普通にdelegate使った方が入れ替えられて便利じゃん
無駄なフェイルセーフだぜ
393デフォルトの名無しさん:2007/09/06(木) 13:08:04
一応プロパティと同じように実装の変更もできる
394デフォルトの名無しさん:2007/09/06(木) 13:08:20
>>390
IDEによるポトペタ
395385:2007/09/06(木) 13:17:22
>>386>>388
そうですね匿名メソッドですね
>>387
そうですか…なんかイベントの話になってきてますね
んーデリゲートでこんな風にしたらすっごい便利!
とかいう話ないですかね
396デフォルトの名無しさん:2007/09/06(木) 13:45:38
void Hoge() { list.ForEach(Print); }
void Print(int x){ Console.WriteLine(x); }
コレクション関係以外にないかなあ
397デフォルトの名無しさん:2007/09/06(木) 13:58:02
>>395 処理のインジェクションしたいところにはdelegateばんばん使ってます。
クラスの生成時とかにそのシチュエーションに併せて動作を変えたいとき便利。
398デフォルトの名無しさん:2007/09/06(木) 14:00:41
インターフェースを実装したクラスを作るよりも楽>delegate
399デフォルトの名無しさん:2007/09/06(木) 14:55:19
Action<T>は

interface IHoge<T>
{
 void Method(T arg);
}

とだいたい同等で
class A
{
public Action<Foo> Action;
}
class A
{
public IHoge<Foo> Action;
}
これもだいたい同等
a.Action = delegate(Foo foo){
 ....
};
これと
class FooHoge : IHoge<Foo>{ ... }
a.Action = new FooHoge(...);
これも大体同等

匿名メソッドなら直接かけるから一々定義したクラスを読まなくてすむので見やすい
ラムダ式になるともっと便利になる

匿名メソッド使わなくても、引数さえ合えばどんなメソッドでもはまるから、
いちいちinterface実装したクラスを作らなくて済む分楽
でもやっぱり真価は匿名メソッドで出てくる
400デフォルトの名無しさん:2007/09/06(木) 15:04:40
interfaceでは大げさすぎる場合も多いし、例えばイベントハンドラを
インタフェースとして実装した場合、同じWidgetを複数個持とうとするとに
インタフェースが衝突する、といった問題が生じる。Javaではこれを解決
するのに一々ゴテゴテと無名クラスを記述する羽目になり、実に馬鹿馬鹿しい限りだ。

ラムダ式が無くとも、delegateであれば上記の問題は普通に解決することが
出来る。

まあ、処理を汎用化したり(例えば描画ルーチンに、PixelをPutする
ルーチンだけdelegateとして与えられるようにすれば、汎用になる)、
テーブルジャンプっぽく使ったり(メニュー等のindexとdelegateの配列を
結びつけたりする)、意思決定と実行のタイミングが分かれている場合に、
意思決定→delegate変数に保存→delegateを用いて実行といったことをやったり
(実行が何度も行われる際に、無駄な条件分岐を完全に取り除くことが出来る)、
色々と応用範囲は多い。
401デフォルトの名無しさん:2007/09/06(木) 15:17:17
delegate使うとエディットコンティニューでやり直しになるのがデメリット
402デフォルトの名無しさん:2007/09/06(木) 17:37:05
久々にThreadPool.GetMaxThreads()を実行してみたらワーカースレッドが500、I/Oスレッドが1000になってた。
前はもっと少なかった気がするんだけど・・・なぜでしょうか?
403385:2007/09/06(木) 19:32:29
なるほどーみなさんいろいろ使ってますね
デリゲート道、精進します
ありがとうございました
404デフォルトの名無しさん:2007/09/06(木) 20:04:16
>402
前は少なすぎたせいでスレッドプールが一杯になって例外が起きるケースがあったのでので.NET2.0から事実上無制限といえる値に増やされた。
なにげに呼んだクラスが内部でスレッドプールを使っててスレッドプールの上限で例外吐かれたりしても対処しようがないじゃん。
405デフォルトの名無しさん:2007/09/06(木) 20:10:45
ClassAのイベントにメソッドを紐付けしてるClassBがシリアル化可能じゃないと
ClassAまでシリアル化できなくなっちゃうけど、これって何か回避方法ないかな?

あと、デリゲートにインスタンスメソッド登録するということは、
デリゲートに参照を持たれる(つまりGCが働かない)こととやっぱり等価になるの?
406デフォルトの名無しさん:2007/09/06(木) 20:20:37
当たり前
っていうかイベント結びつけたままシリアライズしたいって
いったいどんなときなの?
407デフォルトの名無しさん:2007/09/06(木) 20:22:28
ああひょっとしてシリアライズさせない方法が分からないってことか?
メンバにつける属性で制御できるよ
408デフォルトの名無しさん:2007/09/06(木) 20:43:28
でもNonSerializedAttributeってイベントには付けられないと思うんですが。。
409デフォルトの名無しさん:2007/09/06(木) 20:56:27
>>405
デリゲートを明示的に宣言してそのデリゲートにNonSerializedつければいいらしい。
↓参照
http://www.thescripts.com/forum/thread245864.html
410409:2007/09/06(木) 21:01:10
[field: NonSerialized]でもできるみたいだな
こっちのほうがスマートか。
411デフォルトの名無しさん:2007/09/06(木) 21:09:45
>>409-410
ありがと。
しかし、そんなマンマの回答よく短時間に見つけられるもんだね関心しちゃうよ
412デフォルトの名無しさん:2007/09/06(木) 21:44:51
部下にほしいね。






すみません師匠にほしいです。
413デフォルトの名無しさん:2007/09/06(木) 21:56:13
このスレには結構、神クラスのスキルのひとがいるいよね。
どんな立場の人なのかきになるわ。マイクロソフト直々のサポート部隊が
書き込んでいるんじゃないかと思ってしまうくらいだ。
414デフォルトの名無しさん:2007/09/06(木) 21:59:52
やまだはぷろぐらむの天才だ。
きょうもすごいぷろぐらむをつくる。

int i = new int()

あれ、なにかへんだぞ。

intはたしか・・・

Int16

やまだくんはまだ満足しない。

iというなまえはかぶるかもしれないからあんぜんじゃない!

Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER

完璧なソースコードの誕生だ!

415デフォルトの名無しさん:2007/09/06(木) 22:02:31
>>413

そのクラスの人間なんて見たときねーよ
416デフォルトの名無しさん:2007/09/06(木) 22:02:47
すみません。どれが自作自演でしょうか?
417デフォルトの名無しさん:2007/09/06(木) 22:03:48
やまだだけどなんでもそうだんにのるよ!!
418デフォルトの名無しさん:2007/09/06(木) 22:05:47
>>414
jが必要になったらどうする。
419デフォルトの名無しさん:2007/09/06(木) 22:06:12
やまだくんはネームスペースをだな
420デフォルトの名無しさん:2007/09/06(木) 22:06:28
田中は山田のイヂワルな上司だ。
今日も嫌がらせを部下達にして楽しむ。

「iというなまえはかぶるかもしれないからあんぜんじゃない!
「Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER
「完璧なソースコードの誕生だ!

あれ、山田が何か楽しそうだぞ。
イヂワルしてやれ!
「山田君、このメソッドの名前は[_USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER]にしてくれ
 会議で決まったのだ!
421デフォルトの名無しさん:2007/09/06(木) 22:06:31
>416
じえんはないけどえいえんはあるよ!
422デフォルトの名無しさん:2007/09/06(木) 22:12:35
たなかさんめそっどめいのせんすないからきらいだ!

そうだ。こういうときは・・・おーばーろーどがあるじゃないか!

やまだはそっとたなかのめそっど名のぷれふぃっくすに
OVERROAD_
をつけたした。
これでなまえがかぶることはない。
423デフォルトの名無しさん:2007/09/06(木) 22:15:09
スレが壊れだした
424デフォルトの名無しさん:2007/09/06(木) 22:15:21
>418
よくじつにまわすか、ぷれふぃっくすにSTATIC_とかつければかいけつだよ(^^)
425デフォルトの名無しさん:2007/09/06(木) 22:17:18
>423
すまない。ガチでこんなコードの修正依頼にイラついて書いてしまった。
後悔はしていない
426デフォルトの名無しさん:2007/09/06(木) 22:19:11
マでやれ
427デフォルトの名無しさん:2007/09/06(木) 22:22:43
for(LOOPCOUNTER_[LOOPCOUNTER_1,LOOPCOUNTER_2]=58;END==TRUE;LOOPCOUNTER_1**)
{
}

やまだすごくね?
428デフォルトの名無しさん:2007/09/06(木) 22:23:33
名前空間の無い言語はきついな
429デフォルトの名無しさん:2007/09/06(木) 22:24:51
END==TRUEってなんぞ
430デフォルトの名無しさん:2007/09/06(木) 22:25:40
>>428
どちらかというとセンスのないプロ…
431デフォルトの名無しさん:2007/09/06(木) 22:33:45
ちなみに言語はC#だぜW
432デフォルトの名無しさん:2007/09/06(木) 22:35:04
ENDがTRUEの間ループをまわすの?
普通に発狂するわ
433デフォルトの名無しさん:2007/09/06(木) 22:39:10
もっとやまだのコードがみたい
434デフォルトの名無しさん:2007/09/06(木) 22:39:56
ディフォルトTRUE
スイッチFALSEとコメントある。
わからない事もない
435デフォルトの名無しさん:2007/09/06(木) 22:44:32
ディフォルトって何?
436デフォルトの名無しさん:2007/09/06(木) 22:45:54
マでやれ
437デフォルトの名無しさん:2007/09/06(木) 22:48:14
やまだソース今度ZIPであげるわ
438デフォルトの名無しさん:2007/09/06(木) 22:48:38
なんで大文字なんだろ
439デフォルトの名無しさん:2007/09/06(木) 22:49:42
小文字だと予約語などにぶち当たるからだろ。
それかOLD BASICの名残。
440デフォルトの名無しさん:2007/09/06(木) 23:08:58
まだLOOP==TRUEの方が理解できる
441デフォルトの名無しさん:2007/09/06(木) 23:56:29
ブレークポイント設定してもデバッグができなくなる現象が突然でました。
どの辺確認すればいいのでしょう?構成はDebugでやってますが
442デフォルトの名無しさん:2007/09/07(金) 00:01:03
ブレークポイントまでいってない説
443デフォルトの名無しさん:2007/09/07(金) 00:08:40
リビルドすれば治る説
444デフォルトの名無しさん:2007/09/07(金) 00:10:56
ブレークポイントはForm_Load内なので、到達してるんです。
性格にはブレークポイントに到達して、デバッグモードになるのに凄い時間がかかって
デバッグモード後はF10で1ステップ進ませると、デバッグモード解除されてしまいます
445デフォルトの名無しさん:2007/09/07(金) 00:21:14
Form_Loadのブレークポイントの後に続く文があるのに
デバッグモード解除されるんだったら、
多分VSがぶっ壊れてるんだと思うよ
再インスコじゃね
446デフォルトの名無しさん:2007/09/07(金) 00:31:52
不思議なことに、あるプロジェクトでしか現象出ないんだけど、
とりあえず朝一で再インストールしてみます
447デフォルトの名無しさん:2007/09/07(金) 00:37:35
>444
デバッグのオプションのネイティブのチェックを外して.NETのみをデバッグするようにしたらどうなる?
448デフォルトの名無しさん:2007/09/07(金) 00:40:18
>>447
すんません。ソースが会社なんで、明日やってみます。thx
449デフォルトの名無しさん:2007/09/07(金) 01:27:48
「〜〜〜は開始されませんでした」みたいなエラーメッセージがでて
デバッグ開始が異常に遅くなるときあるよね。
450デフォルトの名無しさん:2007/09/07(金) 13:13:13
>>378
kwsk
451デフォルトの名無しさん:2007/09/07(金) 15:01:14
ソリューションのクリーンとか試してみた?
452デフォルトの名無しさん:2007/09/07(金) 16:39:10
怪しいアプリに邪魔されてた事とかあるな
453デフォルトの名無しさん:2007/09/07(金) 19:05:00
質問です。

TextBoxコントロールの枠線の色は変更できますか?
できそうにない感じなのですが、そうすると自分で線を描くしかないかと
思うのですが、

Graphics g = this.CreateGraphics();

と取得してコレに対してDrawLineをしてみているのですが、
線が表示されません。

アプローチが間違っているのか、足りないおまじないがあるのか…。

どなたかお知恵をお貸しいただければ幸いです。
454デフォルトの名無しさん:2007/09/07(金) 19:49:42
>453
まずその描画はOnPaintでやるべき。

なんとなく、Panelとかの上にTextBoxを載っけてPanelとかに枠線描いた方が楽じゃない?
455デフォルトの名無しさん:2007/09/07(金) 19:59:40
>>453
いわゆるオーナードローっぽいことがやりたいのならControlPaintを使うようだから
詳細はMSDNを見るといい

が、>>454に同意だな
456デフォルトの名無しさん:2007/09/07(金) 20:19:15
>>454
> まずその描画はOnPaintでやるべき。
TextBoxBase 以下は OnPaint が無視されたような気がする。
457デフォルトの名無しさん:2007/09/07(金) 20:52:07
>450
2003までのCPPはマネージとアンマネージはクラス分けされ、同一コード内にはかけても、そこからメモリへの受け渡しが辛かった。
2005はマネージとアンマネージを並べてかける。
つまり

int A=42
printf(A.Tostring());
みたいな事ができる。
458デフォルトの名無しさん:2007/09/07(金) 20:56:41
何かしょぼいが解る人にはマジで!と叫ぶようなコード。
459デフォルトの名無しさん:2007/09/07(金) 21:15:38
>>453
やってみると意外と面倒だね。

枠の幅が1でよければ、BorderStyle =BorderStyle.FixedSingleにしておいて
WM_PAINT捕まえてそこで枠を描画すればできる。
460デフォルトの名無しさん:2007/09/07(金) 21:44:08
public string フィールドしかないクラスから、全フィールドを連結した
文字列をこさえたい。リフレクション使えばできるかと思ったら、
Type.GetFileds() はフィールドの宣言順を保証しないと言う。
どうすればできる? あきらめるしかない?
461デフォルトの名無しさん:2007/09/07(金) 21:44:35
>453
ピクチャボックスに色を塗る。
テキストをフラット枠線無しにしてピクチャの上に載せる

これが一番時間がかからない。

グラフィックで書くのも良いけど、速度は体感できない程度しか変わらない
462デフォルトの名無しさん:2007/09/07(金) 21:47:44
>>460
そもそもCILにコンパイルされた時点で宣言順なんて保証されないと思うが。
まああきらめた方がいいと思うよ(仮にできたとしても)。
463デフォルトの名無しさん:2007/09/07(金) 21:50:44
>>461
ぴったり1ピクセル分ずらすのって、むずかしくない?
464デフォルトの名無しさん:2007/09/07(金) 21:55:20
>>460
Order属性とか自分で定義して全部のフィールドに[Order(2)]みたいに付けといて
その順番で連結すれば?
それなら余計なメンバを増やしたり動作をいじったりせずにリフレクションだけでできるよ
465デフォルトの名無しさん:2007/09/07(金) 21:58:07
>463
サイズプロパティに打つんだよ。
マウスだとちょっとズレるかもだから
466デフォルトの名無しさん:2007/09/07(金) 22:01:35
>460

ヒント
IList
delegate
467デフォルトの名無しさん:2007/09/07(金) 22:07:41
>>466
そんなめんどくさいことするくらいなら初めから連結メソッドを定義するだろw
468460:2007/09/07(金) 22:10:44
>>464
カスタム属性か。まあ今も Excel から自動生成してるクラスなんで、
それならできそうです。

>>466
plz one more.
469デフォルトの名無しさん:2007/09/07(金) 22:12:06
>462
確かに宣言順は保証されないんだが、
宣言順に初期化されるという保証があるので事実上宣言順に並んしまうという状態。
それを利用してリフレクションを使って順番通りに文字列をなんかするなんてソースが会社に大量にあって動いている困った状態。

どうにかして宣言順に並んでいないケースって意図的に作れないかな?
順番は保証されてないから動かない可能性があるって言っても動いてるからって理由で修正を拒まれて困ってる。
470デフォルトの名無しさん:2007/09/07(金) 22:14:45
>468
自動生成クラスなら文字列連結メソッドも自動生成した方がいい。

自動生成クラスが何かのケースで実際に動かして動かないことが発覚するリフレクションより
コンパイル時に動かないコードになってることが分かる方がいいよ。
471460:2007/09/07(金) 22:56:31
>>470
んんん。良くわからんのだが、リフレクションは信用ならないということ?
連結メソッドにしろリフレクションしろ、コンパイルを通した上で、テスト
ケースもこなすと思うのだが。
472453:2007/09/07(金) 23:33:24
>>454
やっぱり重ねるのが楽でしょうか…。
ありがとうございました^^

>>455
了解しました、MSDN見てみます。
ありがとうございました^^

>>456
な!?
マジですか!?
処理追ってみます。

>>459
おお、その方法よさそうですね、試してみます^^
ありがとうございました^^

>>461
やはり載せる案多数ですね…。
ありがとうございます^^

とりあえず今日は退勤してまいりましたので、明日にでもいろいろやってみようかと思います。
みなさんありがとうございました^^
473デフォルトの名無しさん:2007/09/07(金) 23:36:50
リフレクションは保障されてない
メソッドは保障されてるってことだろ?

わざわざリフレクション使う内容かどうかわからないし。
474デフォルトの名無しさん:2007/09/07(金) 23:47:59
でもこの場合属性を連番で付けるだけなら失敗のしようがないだろ
475デフォルトの名無しさん:2007/09/08(土) 00:00:35
このスレ見てるとC#おもしろそうですね。
アセンブリしかできませんが、挑戦してみようかな
476デフォルトの名無しさん:2007/09/08(土) 00:03:32
君見る目があるね
477デフォルトの名無しさん:2007/09/08(土) 00:05:03
>>475
今の流れはどちらかと言うと不毛な話ばっかりだと思ったが。
どこらへんが面白かったか教えてちょ!


正直c#は面白い。
478デフォルトの名無しさん:2007/09/08(土) 00:08:33
F#はもっと面白いよ(´・ω・`)
479デフォルトの名無しさん:2007/09/08(土) 00:42:40
>471
ある日、誰かがメンテをしてそのクラスを手でちょっとだけ修正を入れて
何気なくフィールドを追加しただけなのに挙動が変わったなんてことが起きるかもしれない。
せっかくの連番の属性も意味もわからないままコピペされて番号が重複したりするかもしれない。
そういうときに限ってテストケースの存在も無視される。
普通のメソッドになってれば少なくともそのメソッドの挙動は直接メソッド自体を書き換えられないと変わらないだろ。

マクロで普通のコードを生成できるのに、
リフレクションで処理しやすいようなクラスを用意するってのは本末転倒だろ。
C#のリフレクションはJavaなんかより割と速いけど普通にメソッドを叩くよりかは明らかに遅くなるだろうし。
480デフォルトの名無しさん:2007/09/08(土) 01:09:54
DataGridVewに行を追加したいのですがどうすればいいのでしょうか?
481デフォルトの名無しさん:2007/09/08(土) 01:46:22
asciiファイルからshift-jisで読み込んで、dataGridViewに表示させてるんですが、
この表示された値(2バイト文字)をコピーしてエクセルに貼り付けると文字化けしています。
(テキストファイルなどへのコピーは平気)
エクセルへのコピーも問題なく行うにはどうればいいのでしょう?
482480:2007/09/08(土) 02:55:09
自己解決しました
483デフォルトの名無しさん:2007/09/08(土) 03:42:07
そのくらい自己解決してもらわないと困る
484460:2007/09/08(土) 08:26:15
>>479
自動生成クラスを手でいじったり NUnit かけずに済ます文化がこちらには
ないんだが、言わんとしてることはわかった。ありがとう。
485デフォルトの名無しさん:2007/09/08(土) 10:06:40
dictionaryのキーとして専用の構造体を使うとき、
等値比較演算子を自分で実装しないといけないの?
試してみたら自動でやってくれてるみたいだけど
486デフォルトの名無しさん:2007/09/08(土) 10:59:15
リフレクション使うのでかなり遅いけど、それでもいいのなら
487デフォルトの名無しさん:2007/09/08(土) 13:14:24
構造体なら値比較?
488デフォルトの名無しさん:2007/09/08(土) 13:37:18
>>487
デフォルトだとValueType.Equalsが使われる。

ValueType.Equalsだが、プリミティブ型のみから構成される構造体なら
ビット比較を使うっぽい。

参照型を含んでいたりするとリフレクションでメンバごとに再帰比較してる模様。
これが遅いと言われている。

http://pc11.2ch.net/test/read.cgi/tech/1173763436/161-185
489デフォルトの名無しさん:2007/09/08(土) 13:41:43
>>488
>参照型を含んでいたりするとリフレクションでメンバごとに再帰比較してる模様。

いまのCLRならその部分をLCGで実行時生成して
キャッシュしておくこともできそうだな。

キャッシュの寿命管理が面倒そうだけど、
直近の16エントリぐらい保持しておけばそこそこヒットしそうだ。
490デフォルトの名無しさん:2007/09/08(土) 14:01:32
素直に IEqualityComparer 実装しようよ
491デフォルトの名無しさん:2007/09/08(土) 14:09:10
自作の構造体なら、わざわざDictionaryなんかに頼らなくても
自分とペアになるオブジェクトをプロパティで持たせた方が簡単で早いじゃん。


・・・・・・と俺は思っちゃうんだが、これってやっぱり単細胞過ぎる発想かな。
492デフォルトの名無しさん:2007/09/08(土) 14:10:11
>>491
肝心のハッシュテーブルはどうするんだw
493492:2007/09/08(土) 14:12:39
ああ、ごめん無視して
俺のほうが単細胞だったようだorz
494デフォルトの名無しさん:2007/09/08(土) 18:57:52
>>488
ValueType.Equalsを使うならボクシングが発生するよね
それならプリミティブ型のみでもやっぱり自分で比較した方が速いのかな
495デフォルトの名無しさん:2007/09/08(土) 23:48:32
comboboxにあるクラスのインスタンスを設定したいのですがどうすればいい?


496デフォルトの名無しさん:2007/09/08(土) 23:51:32
ComboBox.Tag を使いなはれ
497デフォルトの名無しさん:2007/09/08(土) 23:51:33
ValueTypeにそのクラスを設定すればいいだけじゃん

その程度のこともしらない人がつくったアプリなんて使いたくも無いw
498デフォルトの名無しさん:2007/09/09(日) 01:41:29
>>494
JITでボクシングの部分はたいてい取り除かれているらしい。
さらにインラインかもありえるらしい。
ただJITの結果は調べられないからほんとかどうかは知らない。
499デフォルトの名無しさん:2007/09/09(日) 01:59:44
>>498
>ただJITの結果は調べられないからほんとかどうかは知らない。

ボクシングが起きてるかどうかはCLR Profilerで分かるんじゃない?
GCヒープにその値型が確保されてればどっかでボクシングは起きてるてことで。
500デフォルトの名無しさん:2007/09/09(日) 02:10:22
デバッガでアタッチしたら見えるんじゃねーの。
ってか取り除かれるのはかなり限定された状況だけじゃない?
501デフォルトの名無しさん:2007/09/09(日) 05:03:43
>>469
問題が起きたら直すでおk
世の中そんなもんだ。
502デフォルトの名無しさん:2007/09/09(日) 11:42:40
文字列に記述したプログラムを解析して結果を返したいけどいい方法はない?
jscript.netのevalはNGです。
自分で書いた独自のメソッドを呼べないので。。
public string myMethod(string s)
{
return "hoge";
}
文字列に
if(myMethod("hoge")=="hoge") "あ","い")
としておき
結果の
"あ"
を返す方法
文字列中にmyMethodがいつ来るかはわからないです。
503デフォルトの名無しさん:2007/09/09(日) 12:23:16
まあやっぱりJScript.NETのevalだな
myMethodは静的にすれば元アセンブリ参照で呼べるだろ
504デフォルトの名無しさん:2007/09/09(日) 12:36:05
>>502
IronPython
505デフォルトの名無しさん:2007/09/09(日) 12:37:51
教えてください。
ArrayList で foreach を使う事について
ループ内部でIndexof を使用してIndexを求める場合、
foreach を使用せずに最初からインデックスを指定して回すやり方が普通なのかどうか
常識的に考えると後者が普通だと思うのですが
foreach を使用したほうが、コードが若干短くなるし、
コード上では多少効率が割るそうですが、オプティマイズされたCLRが吐かれるような気もしますし
506デフォルトの名無しさん:2007/09/09(日) 12:45:06
ArrayListの中身を変更したいんならindexで回す
参照オンリーならforeachでいいんじゃないのか

Array<T>やList<T>ならForEachメソッドなんてのもある
507デフォルトの名無しさん:2007/09/09(日) 13:05:00
>>506
ありがとうございます
ところで、2003 にはList<T>は無いみたいです...
508デフォルトの名無しさん:2007/09/09(日) 13:08:21
ペイント系のアプリを書こうと思ってとりあえずPaint.NETを
使ってみたが、とてもじゃないが金を取れるソフトではありませんね

やはり、商用だとC/C++がいいのですかね
509デフォルトの名無しさん:2007/09/09(日) 13:18:51
そりゃ金とってないソフトだ品
510デフォルトの名無しさん:2007/09/09(日) 13:35:56
>>508
おまいさんは金を取ることの意味を勘違いしてるな。
The Old New Thingsでも立ち読みしてこい。
ttp://www.amazon.co.jp/dp/4756150004
511デフォルトの名無しさん:2007/09/09(日) 13:57:37
>>508
みたソフトが悪い

あれはMITのヲタク学生が書いた駄作だよ
512デフォルトの名無しさん:2007/09/09(日) 14:05:24
またまたArrayListについて教えてください
ArrayListにオブジェクトをセットして
セットするオブジェクト: int Key, string Name1, string Name2, ...
そのArrayListに対して、例えば、Key = 3 は何番目なのかを
メソッドだけで、処理できますか?
Contain と IndesOf と、比較用のメソッドをオーバーライド?すればできそうな気もしていますが
良くわかりません
513デフォルトの名無しさん:2007/09/09(日) 14:26:55
なにを言っているんのかよく分からんが
IndexOfでとれるだろ。。unboxingされて値が同じなやつが返るだろうけど
514512:2007/09/09(日) 14:29:21
>>513
比較の際に、同一オブジェクトではなく、プロパティのKeyのみで比較したいのです
515デフォルトの名無しさん:2007/09/09(日) 14:33:23
>>512
EqualsとGetHashCodeをoverrideする。またはHashtableでも使え。
それがいやならC#2.0のList<T>にはFindメソッドとかあるぞ。
516デフォルトの名無しさん:2007/09/09(日) 14:35:30
ますます何を言ってるのかわからん
intなら値で比較されるだろ

もしかして
key1, string1_1, string1_2,
key2, string2_1, string2_2,
...
みたいな構造をArrayListで作ろうとしてるの?

HashTable使えよ。。。
517デフォルトの名無しさん:2007/09/09(日) 14:42:57
>>512
こういうことがしたいの?

public class Item
{
 public int Key;
 public string Name1;
 public string Name2;
 public string Name3;
}

ArrayList al = new ArrayList();

// 入力

int index = 0;
foreach (Item item in al)
{
  if( item.Key == 3 ) break;
  ++index;
}

if (index == al.Count)
  Console.WriteLine("みつかりませんでした");
else
  Console.WriteLine("{0}番目", index);
518デフォルトの名無しさん:2007/09/09(日) 14:44:43
孔子は言った。
考えるだけで学ぶことをしようとしない人間は間違いを犯しやすい。
519512:2007/09/09(日) 14:58:56
ちょっとだけ違います。

ArrayList al = new ArrayList(); // 入力

Item addOrReplaeceItem = new Item(); // 追加または、更新しようとする要素(オブジェクト)
addOrReplaceItem.Key = 2;
addOrReplaceItem.Name1 = "new name1";

int index = 0;
foreach (Item item in al)
{
  if( item.Key == addOrReplaceItem.Key ) ;
{
((Item)al[index]).Name1 = addOrReplaceItem.Name1; // あれば、入れ替え
break;
}
  ++index;
}

if (index == al.Count)
{
  Console.WriteLine("みつかりませんでした");
al.Add (addOrReplaceItem); // 無ければ、追加
}
こんな感じです。
宜しくお願いします。
520デフォルトの名無しさん:2007/09/09(日) 14:59:19
>>505
あほなこと言ってないで素直にインデックスで回すか、
自前でインデックスカウントしとけ。

同じ値とか複数あったらどうすんだ?
無いとしても効率悪くなるだけ。
そんな器用な最適化ができるわけなかろう。
521デフォルトの名無しさん:2007/09/09(日) 15:01:13
いっそDataSet/DataTableを使ったらどうだ。
522デフォルトの名無しさん:2007/09/09(日) 15:01:30
ふらっと逝け
523デフォルトの名無しさん:2007/09/09(日) 15:22:45
>>519
「メソッドだけで」とか難しいこと考えずに
全部書くか自分でメソッド作ることをおすすめする。

どうせList<T>使えるようになったら組み直しなんだし。
難しいことやるのは慣れてからでいいよ。
524512:2007/09/09(日) 16:11:52
ありがとうございます。
525デフォルトの名無しさん:2007/09/10(月) 02:22:48
DataGridViewでコントロール+Cを押したときのクリップボードに
値を渡すのを防ぎたいんですがどうすればいいでしょう?
526デフォルトの名無しさん:2007/09/10(月) 02:24:53
clipboardcopymode = Disable
でできました。。どうもです。
527デフォルトの名無しさん:2007/09/10(月) 03:46:34
SDJEditorを使ってみた

やはり、.NETではこの程度が限界か?
528デフォルトの名無しさん:2007/09/10(月) 06:36:45
>>503
すみません
この発言読み飛ばしてました。
静的にすればアセンブリ参照で呼べるというのを解釈すると
new をしないようなstaticなメソッドにしてDLLとして作成。
呼び出し元プログラム側で、参照の設定をしてあげるという
のでしょうか?
この静的にするということは、タイプセーフではないという
ことになりますか?今回ASP.NETで作成したいのですが。。

>>509
IronPaython
は動的言語ということで私も考えたのですが
具体的にどうすればよいのかが浮かびませんでした。
それにC#から呼び出したいのでオーバヘッドが発生する気がします。
529デフォルトの名無しさん:2007/09/10(月) 08:55:33
組み込みスクリプト感覚で使うつもり?
それ危なくない?
530デフォルトの名無しさん:2007/09/10(月) 12:46:34
> 静的にするということは、タイプセーフではないということになりますか?
なんで?

> C#から呼び出したいのでオーバヘッドが発生する気がします。
eval とか言ってるのにオーバーヘッドw

まあ全体に ASP.NET でやるには怖すぎる処理だわな
531デフォルトの名無しさん:2007/09/10(月) 13:01:49
限定された構文でよかったら自分でインタープリタを作る手もあるし、
その手のライブラリもあるだろう。
evalと同等とかC#の関数で出来ることを全部やりたいなら、
CodeDOMやらそれなりに危険なことをしないと無理。

話はそれるがC#3.0のExpression<Func<>>の仕組みをつかって、
eval的なことが出来そうな気がする。
いまのところDLinq用だが、どう見てもLispのクォートを狙ってるとしか思えない。
532デフォルトの名無しさん:2007/09/10(月) 18:43:40
>>531
本題とはずれるけど、C# 3.0 のラムダ式の話、
C# 3.0 は F# からいろいろ輸入したって話らしいから、
F# の(大元をたどればもちろん LISP の) quote 由来だろうね。

LISP だと、データとプログラムを区別しないってのを、
.NET Framework だと、ラムダ式を
デリゲートに代入したときはプログラムとして、
Expression 型に代入したときはデータとして扱う
というコンセプトみたい。
533デフォルトの名無しさん:2007/09/10(月) 18:49:29
>>532
DLRも見てみると面白いよ。
ASTからILへの汎用変換エンジンになりつある。
CodeDOMは死相が出ちゃったけど
DLRはRubyとPythonという目標がある以上、
ある程度のところまで作り込むんじゃないかな。

ちなみにExpression Treeの裏話。
ttp://d.hatena.ne.jp/siokoshou/20070709

ま た D o n B o x か !

534デフォルトの名無しさん:2007/09/10(月) 23:55:38
すんません。
HTML中で16進形式(5桁:ex."&#x20B9F;")で指定されたサロゲートペア文字を
正しく変換する楽な方法ってないですか?

HttpUtility.HtmlDecodeだと、下位4桁までしか認識しないようで、困っております。

string s = HttpUtility.HtmlDecode("&#x20B9F;");
foreach (char c in s)
  Console.WriteLine(string.Format("{0:X4}",(int)c));

--出力(こんな値が入ってて欲しい)--
D842
DF9F
--出力(でもこうなっちゃってる orz)--
0B9F
535デフォルトの名無しさん:2007/09/11(火) 00:07:19
正規表現使えば
536デフォルトの名無しさん:2007/09/11(火) 00:19:54
ども。"&amp;"とかも"&"として取得したいんで、
できればメソッド一発でできたらなぁ、と思ったんですが、
やっぱそこだけ別に処理するしかないスかね。
537デフォルトの名無しさん:2007/09/11(火) 00:29:04
数値文字参照だけ置換してあとはHttpUtilityに任せる
というのをひとつのメソッドにすればメソッド一発だよ
538デフォルトの名無しさん:2007/09/11(火) 00:54:18
気になったのでざっと調べた感じ、HTML4.01の扱える文字集合はISO/IEC 10646-1らしい。
いわゆるUCS-4なんだが、-1はBMPしか扱わないそうな。-2がそれ以外の文字。
539デフォルトの名無しさん:2007/09/11(火) 01:32:11
BitmapオブジェクトがDispose()されたことをBitmapオブジェクトの外部から知ることはできるでしょうか。
ローカルメモリオブジェクト内のDIBをもとに作成したBitmapオブジェクトが破棄されるまではローカルメモリオブジェクトを解放せずにおき、Bitmapオブジェクトが破棄された段階でローカルメモリオブジェクトを解放するようにしたいのです。
DIBをマネージメモリにコピーしてからImage.FromStream()でImageオブジェクトを生成し、すぐさまローカルメモリオブジェクトを解放する、という方法なら安全確実なのですが、いかんせん遅いのです。
540デフォルトの名無しさん:2007/09/11(火) 05:44:01
>>503
>まあやっぱりJScript.NETのevalだな
>myMethodは静的にすれば元アセンブリ参照で呼べるだろ

やってみたけど無理でしたよ!
やっぱりできないのでは?

DLL側に
public class MultiplyClass
{
public static long Multiply(long x, long y)
{
return (x * y);
}
}

としてコンパイル、それを呼び出し側で参照の追加。

string exp = "MultiplyClass.Multiply(10, 5)";
Microsoft.JScript.Vsa.VsaEngine ve =
Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
long result =
(long)Microsoft.JScript.Eval.JScriptEvaluate(
exp, ve);

そうすると
変数 'MultiplyClass' が宣言されていません。
結局、作成したクラスはスコープの範囲外でした。
541デフォルトの名無しさん:2007/09/11(火) 07:22:54
>>538
なるほど。HttpUtility.HtmlDecodeのバグというわけではないわけですね。
わざわざありがとうございます。
542デフォルトの名無しさん:2007/09/11(火) 17:14:33
>>540
いや・・・
543デフォルトの名無しさん:2007/09/11(火) 22:57:12
ふらっとスレから移動してきました

アンマネージリソースを安全に管理するために、
SafeHandleクラスを継承しようと思っているんですが、
ReleaseHandleとIsInvalidをオーバーライドするだけでいいんでしょうか
(実際にはCreateToolhelp32Snapshotでプロセスのスナップショットを得たいので、
CriticalHandleMinusOneIsInvalidから継承したハンドル管理クラスを作る)

具体例的に解説しているサイト等あったら教えてください。

MSDNのサンプルには
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
なんて属性もでてきたりするんですが、意味がわからなくて・・・
544デフォルトの名無しさん:2007/09/11(火) 23:08:30
SafeHandle.ReleaseHandleは?
545デフォルトの名無しさん:2007/09/11(火) 23:22:57
546デフォルトの名無しさん:2007/09/13(木) 00:18:36
>>540
だれか答えて!
お願いします
547デフォルトの名無しさん:2007/09/13(木) 00:25:29
JScript.NET で eval を公開するクラス持った dll 作れ。
548デフォルトの名無しさん:2007/09/13(木) 01:45:04
BCB5で作成したDLLをC#から呼び出すにはどうしたらよいんでしょう?

[DllImport("aaa.dll", EntryPoint="FunctionA")]
private static extern uint FunctionA();

で試してみたら実行時に「dllがありません」て返ってきます。
549デフォルトの名無しさん:2007/09/13(木) 01:53:25
そりゃ本当にDLLが見つかってないんだろ。
exeと同じフォルダにおいてるか?
550デフォルトの名無しさん:2007/09/13(木) 03:04:31
関数を公開してないとか
551デフォルトの名無しさん:2007/09/13(木) 05:01:06
SortedListとかはキーと値を使いますが、ソートに値(だけ)を使うコンテナってないですか?
C++のSTLでいう、setクラスみたいなものです。
552デフォルトの名無しさん:2007/09/13(木) 08:01:59
キーと値に同じの突っ込んどけ
553デフォルトの名無しさん:2007/09/13(木) 10:52:29
>549
>550
すみません。メッセージが間違ってました

「DLL 'aaa.dll'を読み込めません:指定されたモジュールが見つかりません。」
でした。
ちなみにDLLはexeと同じフォルダに置いています。
BCBで作ったプログラムからは呼び出しできます。
554デフォルトの名無しさん:2007/09/13(木) 12:05:07
Releaseに置いてたりして
555デフォルトの名無しさん:2007/09/13(木) 12:07:22
DLLをフルパスで指定して見るとか
556デフォルトの名無しさん:2007/09/13(木) 12:10:19
Winアプリを作成しております、相談にのって下さい。

環境:
   WindowsXP Professional SP2
   VisualC# 2005
   .net framework2.0

やりたいこと:
   TextBoxにフォーカスがあるときはTextBoxのBorderStyleプロパティをFixed3Dに、
   フォーカスが無いときはBorderStyleをNoneにする。
   開発全体でこの動作を多用するので、カスタムコントロールとして作成したい。

とりあえずTextBoxを継承したカスタムコントロールを作成しました。
OnEnterでBorderStyle=Fixed3Dに、
OnLeaveでBorderStyle=Noneにするよう記述し動作を確認したところ、
マウスでの移動は思ったとおりに動作するのですが、
Tabキーでの移動が出来ません。(フォーカスが次のコントロールに移らない)
エラーなどは特に出ません。
557デフォルトの名無しさん:2007/09/13(木) 12:11:26
>>556の続き
BorderStyleではなくBackColorプロパティの変更ではTab移動が出来ました。
調べてみたところ、BorderStyleだけでなく、
TextAlignでも同様の不具合が発生するようです。

http://dobon.net/vb/bbs/log3-18/10725.html
>OnEnter / OnLeave で TextAlign プロパティの値を変更すると
>Tab キー操作によるフォーカス移動に支障を来たす

この不具合の回避方法か、
別の方法での機能の実装をご存知の方がいましたら
教えて下さい。
558デフォルトの名無しさん:2007/09/13(木) 12:13:46
>>557の続き 長々すいません
ソース抜粋:
namespace CustomControl
{
  public partial class TextBoxEx : TextBox
  {
    public TextBoxEx()
    {
      InitializeComponent();
    }
    protected override void OnEnter(EventArgs e)
    {
      this.BorderStyle = BorderStyle.Fixed3D;
      base.OnEnter(e);
    }
    protected override void OnLeave(EventArgs e)
    {
      this.BorderStyle = BorderStyle.None;
      base.OnLeave(e);
    }
  }
}
559デフォルトの名無しさん:2007/09/13(木) 12:36:36
>554
それはないです。

>555
やってみましたが、DLLの名前がフルパスで表示される以外
メッセージは変わりませんでした。
560デフォルトの名無しさん:2007/09/13(木) 12:39:02
>>558
BorderStyleを変更するとハンドルが再作成されるからじゃね?
ToolStripTextBoxの内部のコントロールの実装を調べてみたらどうか
561デフォルトの名無しさん:2007/09/13(木) 13:36:30
>>559
もともとの質問であるC#からDLLの呼び出し方なら、>>548で問題ない。
だから、DLLが見つからないのは、環境やパスの問題が一番怪しい。
たとえば>>554とか。

自分のプロジェクトとファイル構成をもう一度じっくり見直したほうがいいと思う。
あと、dllと同じフォルダにあるexeをエクスプローラから直接起動してもだめ?
562デフォルトの名無しさん:2007/09/13(木) 13:46:26
>561
>自分のプロジェクトとファイル構成をもう一度じっくり見直したほうがいいと思う。
見直してみる。

>あと、dllと同じフォルダにあるexeをエクスプローラから直接起動してもだめ?
ダメだった。
563デフォルトの名無しさん:2007/09/13(木) 13:52:16
>>558
引用先に書いてある通り内部でWindowを再作成してるのが原因だろう。
ディスパッチャーに乗せてスタイルの変更処理を遅延させてみた。
一応動いているがタイミングの問題が残るかもしれない。
delegate void ChangeBorderStyleHandler();
protected override void OnEnter(EventArgs e) {
  base.OnEnter(e);
  this.BeginInvoke(new ChangeBorderStyleHandler(ChangeBorderStyleFixed3D));
}
protected override void OnLeave(EventArgs e) {
  base.OnLeave(e);
  this.BeginInvoke(new ChangeBorderStyleHandler(ChangeBorderStyleNone));
}
private void ChangeBorderStyleFixed3D() {
  this.BorderStyle = BorderStyle.Fixed3D;
}
private void ChangeBorderStyleNone() {
  this.BorderStyle = BorderStyle.None;
}
564デフォルトの名無しさん:2007/09/13(木) 13:58:25
>>562
今試したけど普通に呼べた
aaa.cpp (DLL側)
----------
#include <tchar.h>
#include <windows.h>
extern "C" __declspec(dllexport) UINT FunctionA(){
MessageBox(NULL, _T("hello"), _T("test"), MB_OK);
return 0;
}
a.cs (呼び出し側)
----------
using System.Runtime.InteropServices;
public class C {
[DllImport("aaa.dll")]
private static extern uint FunctionA();
public static void Main() {
FunctionA();
}
};
これで作成したDLLとEXEを同じフォルダに置いて実行すると、正しくメッセージが表示された
試しに新しいプロジェクト作って上のコード打ち込んで、動作するか試してみたら?
565デフォルトの名無しさん:2007/09/13(木) 15:17:52
>564
VCで作ったDLLなら普通に呼び出せるけど、BCB5だとダメみたい。
違う方策を考えたほうがいいのかも...
566デフォルトの名無しさん:2007/09/13(木) 16:46:56
>>548
aaa.dll が依存している他の dll が無いだけ。
DependancyWalker (depends.exe) で調べて見れ
567デフォルトの名無しさん:2007/09/13(木) 16:56:41
>>560
>>563
ありがとうございました。

>>563の方法で何とかなりそうなので、
これで進めようと思います。
568デフォルトの名無しさん:2007/09/13(木) 17:09:36
ToolStripItemをオーバーフローしない程度にコンテナ(ToolStripなど)内でサイズ最大化したいのですが、
どうすればよいでしょうか?
569548:2007/09/13(木) 17:38:58
>566
調べました。
最初「msjava.dll」がないって言われたから、全然関係なさそうだったけど
探して入れましたが結局ダメでした。
ムムム
570デフォルトの名無しさん:2007/09/13(木) 18:31:36
>>569
msjava.dllは関係ないだろ
ちょっとググっただけでも、BCBで作成したアプリには
cc3250mt.dll
borlandmm.dll
vcl50.bpl
みたいなランタイム(バージョンによって違う)が必要っぽい気がするけど、
この辺は大丈夫なのか?
571548:2007/09/13(木) 19:43:58
>570
>この辺は大丈夫なのか?
当然大丈夫であります。
572デフォルトの名無しさん:2007/09/13(木) 20:24:44
ドトネト以外からは使えるのか?
573デフォルトの名無しさん:2007/09/13(木) 21:01:45
ConfigurationSection を継承してカスタム構成情報クラスを作ったけど、
更新した後に Configuration.Save() するタイミングで、「ロックされて
いるのでうんぬん」という例外が発生する。このロックは解除できないもの?
574デフォルトの名無しさん:2007/09/13(木) 21:07:11
単に読込みの時にストリーム閉じきっていないのでは?
575548:2007/09/13(木) 21:53:16
>572
BCB5からは呼び出せます。
576デフォルトの名無しさん:2007/09/13(木) 22:05:49
えっBCB5のものは呼び出せないでしょ

メーカー違うとだめじゃない?
delphiでも苦労した覚えが…
577デフォルトの名無しさん:2007/09/13(木) 22:08:11
578デフォルトの名無しさん:2007/09/13(木) 22:15:32
C#のWindowsアプリケーションプロジェクトを新規作成して
FormのPaintイベントハンドラを
private void Form1_Paint(object sender, PaintEventArgs e) {
// e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
e.Graphics.DrawString(
"fffffffffffffffffffffffffffffffffffffffffffff", Font, Brushes.Black, 0, 0
);
}
として実行すると表示される文字列の右の方が寸詰まりな感じになります.
コメントアウトしてあるTextRenderingHintの行を有効にすると寸詰まりになりません.
皆さんの環境でも同様でしょうか?
できれば寸詰まりして欲しくないのですが対処方はないでしょうか.
579578:2007/09/13(木) 23:23:25
TextRenderer#DrawText()だと寸詰まりしないようですのでこちらを使って見ます.
でもDrawString()よりだいぶ遅いです・・・.
580548:2007/09/14(金) 00:51:25
>577
解決しました。
関数に「WINAPI」をつけたらうまくいきました。
Win32APIの呼び出し規約で、呼び出される関数には「_stdcall」が必要のようです。

ありがとうございました。
581デフォルトの名無しさん:2007/09/14(金) 02:31:09
ハードディスクを交換しようとしています。
起動しているOSのドライブを丸ごとコピーするプログラムをC#
でかけますか?
582デフォルトの名無しさん:2007/09/14(金) 02:47:19
はい
583デフォルトの名無しさん:2007/09/14(金) 13:58:23
そんなもんわざわざ自分で作らなくても探せばどこにでも転がってます
584デフォルトの名無しさん:2007/09/14(金) 14:04:02
書けないとでも思ってるのか?
585デフォルトの名無しさん:2007/09/14(金) 14:12:50
C#で書いたらWindowsインストールしないとデータ復旧できないよな
できるけど実用性は0だ
586デフォルトの名無しさん:2007/09/14(金) 15:03:54
MONOで動けばなんとか……
587デフォルトの名無しさん:2007/09/14(金) 15:09:49
588デフォルトの名無しさん:2007/09/14(金) 23:27:35
ObjectDataSourceのSelect操作やDelete操作に割り当てるメソッドの型はなぜstaticで組むのが一般的なのでしょうか?
ASP.NETの場合、スレッドセーフにならないのではと思って私はあえてstatic宣言していません。
それでも使えるからです。
なぜMSDNなどではstaticでメソッドを宣言しているのでしょうか?

589デフォルトの名無しさん:2007/09/14(金) 23:38:56
590デフォルトの名無しさん:2007/09/14(金) 23:41:41
>>588
おれも、それ疑問だったよ。
静的メソッドじゃ同時アクセスしたりしたら、別セッションから変数の値が書き変わっちゃうことがあるよね。
ロックしているとしたらあまりパフォーマンス的にいいことじゃないしな。
591デフォルトの名無しさん:2007/09/14(金) 23:52:14
C#で書いたアプリってVB6で書かれたアプリよりももっさりとしかも遅いんでしょうか?
592デフォルトの名無しさん:2007/09/14(金) 23:57:26
staticかどうかとスレッドセーフって関係あんの?
593デフォルトの名無しさん:2007/09/14(金) 23:57:27
君が使ったら何使っても遅いと思うよ
594デフォルトの名無しさん:2007/09/14(金) 23:59:15
遅いよ
595デフォルトの名無しさん:2007/09/14(金) 23:59:58
>>593
負け惜しみw
596デフォルトの名無しさん:2007/09/15(土) 00:04:01
>>588
>>590
よく理解もしてないのにスレッドセーフとかそうじゃないとか思い込みで判断しないほうがいいよ。
ObjectDataSourceみたいな使い方で、どうして静的メソッドだとスレッドセーフじゃなくてインスタンスメソッドだとスレッドセーフだと思うの?

>静的メソッドじゃ同時アクセスしたりしたら、別セッションから変数の値が書き変わっちゃうことがあるよね。
どういうこと?

>ロックしているとしたらあまりパフォーマンス的にいいことじゃないしな。
何をどうロックすると考えられるわけ?
597デフォルトの名無しさん:2007/09/15(土) 00:05:59
スレッドとかスレッドセーフとかASP.NETでのスレッドの動作とか
いろんなことちゃんと理解してたら、>>590みたいな発想はしないと思うけどな。
598デフォルトの名無しさん:2007/09/15(土) 00:07:03
>>596
あー、素人は黙ってようね
599デフォルトの名無しさん:2007/09/15(土) 00:09:38
素人って…

っていうかなぜstaticだとスレッドセーフじゃないのかいってみろ。
600デフォルトの名無しさん:2007/09/15(土) 00:15:35
>>598
はやくいえよボケ
601デフォルトの名無しさん:2007/09/15(土) 00:17:07
俺じゃねーけど早く言って♥
602デフォルトの名無しさん:2007/09/15(土) 00:19:49
>>601
日本語でおk
603デフォルトの名無しさん:2007/09/15(土) 00:20:43
そんなこといってると普通なら必要もないのに
無理やりstaticメンバ変数をいじって
正常に動かない例を出されるぞw
604デフォルトの名無しさん:2007/09/15(土) 00:21:40
スタティック変数を持つ関数がスレッドセーフじゃないことと取り違えている馬鹿?
605デフォルトの名無しさん:2007/09/15(土) 00:22:16
つまり>>601>>599であり>>600ではなくて
暴言は吐いたりしたのは俺じゃないけど
早く言ってとは思ってことではなかろうか。
606デフォルトの名無しさん:2007/09/15(土) 00:23:55
staticメンバを複数スレッドから扱っておかしくなるという
例示だけを記憶してて、きちんと意味を理解せずに
staticはスレッドセーフじゃないと安直に思い込んでる

といったところだろ、どうせ。
607デフォルトの名無しさん:2007/09/15(土) 00:28:38
>>599-600
なぜそんなに切れてるんだ
608デフォルトの名無しさん:2007/09/15(土) 00:31:52
>>600>>599じゃないやい。

>あー、素人は黙ってようね
つまらんことだけ言ってるから理由をちゃんと言えってだけだよう。
609デフォルトの名無しさん:2007/09/15(土) 00:32:42
staticでも適切なコード書けばスレッドセーフなんです
610デフォルトの名無しさん:2007/09/15(土) 00:33:44
>>608
なんでそんなに必死なの?
611デフォルトの名無しさん:2007/09/15(土) 00:35:04
そもそもstaticだろうがインスタンスだろうが、
単一のメソッドで処理が完結するような場合など
状態情報を維持する必要がないようなメソッドは
最初からスレッドセーフだ。

っていうか複数スレッドで競合する部分がそもそもないし。
612デフォルトの名無しさん:2007/09/15(土) 00:35:40
>>610おまえ>>598だろw
613デフォルトの名無しさん:2007/09/15(土) 00:37:06
>>610
「素人」って言葉が痛かったとかw
614デフォルトの名無しさん:2007/09/15(土) 00:38:37
>>612
俺は607と610だけですがなにか?
615デフォルトの名無しさん:2007/09/15(土) 00:44:07
とりあえずvolatile知らない奴はレスするなよ
616デフォルトの名無しさん:2007/09/15(土) 00:56:33
>>609
適切なコードを書かなければスレッドセーフじゃないんでしょ。
だから適切なコードは何で適切じゃないコードはなんなの?
ASP.NETはstaticなメソッドなんか書いたら、その中で使われる変数とか
他のセッションからでも共用されちゃうでしょ?
617デフォルトの名無しさん:2007/09/15(土) 01:01:26
>ASP.NETはstaticなメソッドなんか書いたら、その中で使われる変数とか
>他のセッションからでも共用されちゃうでしょ?

どんな変数使う気だ?
これはそもそもObjectDataSourceみたいなやつの
メソッドの話だよな?
618デフォルトの名無しさん:2007/09/15(土) 01:03:30
適切なコード書かなきゃインスタンスメソッドでも
スレッドセーフにはならんだろ
619デフォルトの名無しさん:2007/09/15(土) 01:47:23
いっつも本題から外れていくな…
なぜstaticなの?
620デフォルトの名無しさん:2007/09/15(土) 01:55:40
staticで困らんからだろ。
インスタンスにする必要もないからだろ。
621デフォルトの名無しさん:2007/09/15(土) 01:57:27
例えばMathクラスのメンバが全部インスタンスメソッドだったらどう思うよ。
そこまで極端じゃないにせよ、
622デフォルトの名無しさん:2007/09/15(土) 01:59:04
すまん>>621の続き
特にObjectDataSourceの使い方じゃ本質的にはそれと変わらんてこと。

Mathのメソッドがstaticだからって、スレッドセーフなのかとか、
ロックされててパフォーマンスが悪いんじゃないかとkじゃ思うかね?
623デフォルトの名無しさん:2007/09/15(土) 03:44:25
思いません先生!!
624デフォルトの名無しさん:2007/09/15(土) 05:14:29
asp.net使ったこと無いからよくわからないが、インスタンス化するとメモリー消費量がバカにならないから
スタティックで済むならスタティックで書けってことじゃね
625デフォルトの名無しさん:2007/09/15(土) 05:34:47
フィールドに一切アクセスしないprivateメソッドを書くとき、staticにしたほうがメモリを節約できるかも、という考えが脳裏をよぎることもある。
626デフォルトの名無しさん:2007/09/15(土) 07:13:43
ObjectDataSourceが呼び出すSelectMethod/UpdateMethod/InsertMethod/DeleteMethodは
基本的にステートレスで作れってこと。ステートレスなら基本的にスレッドは気にしなくてよい。
staticを使わない場合はメソッドを呼び出すごとにインスタンスを作って終わると破棄する
SingleCallモデルになっている。
一般的にはSingletonが用いられるケースなんだろうけどMSはなぜかあまり使いたがらないね。
627デフォルトの名無しさん:2007/09/15(土) 10:27:36
>>625
どんな理屈だw
628デフォルトの名無しさん:2007/09/15(土) 11:04:58
>>627
C++のメンバ関数の実装を想像して、thisポインタの分が節約できるかも、と考えたが
CLRだと変わらないんだっけ?
629デフォルトの名無しさん:2007/09/15(土) 11:04:59
>>625
普通にFxCopとかでstaticにしろやって言われるやん
630デフォルトの名無しさん:2007/09/15(土) 11:13:16
>>626
ファクトリとか指定できるようになってたらSingletonにしたりとかもっといろいろできるんだけど、
フレームワーク側で勝手にシングルトンはできてもあまりうれしくもないと思う。
631デフォルトの名無しさん:2007/09/15(土) 12:31:17
object obj = new object();
の時、下の2つは何が違うんですか?
function(obj);
function(ref obj);

参照型の場合refありもなしも変わらないんですか?
632デフォルトの名無しさん:2007/09/15(土) 12:35:12
void function( object obj )
{
 obj = new NewObject();// このメソッド内でしか意味がない
}

void fuction2( ref object obj )
{
 obj = new NewObject();
}

object obj = new object();
function(obj);   //何もおこらず
function2(ref obj); //objはもう昔のobjじゃないわ
633デフォルトの名無しさん:2007/09/15(土) 12:35:14
呼び出し先で obj に代入したときの動作
634631:2007/09/15(土) 12:41:52
なるほど。ありがとうございます。
関数内でnewしない場合は関係ないんですね。

関数内で参照先の値を変更するだけで、newしない場合も
コード的には明示的にrefをつけといた方がいいんですかね?
もしくは参照型を引数にとる関数で引数にrefをつける=関数内で新たにnewしちゃう関数なんだぜ!
て意味合いがあるんですか?
635デフォルトの名無しさん:2007/09/15(土) 12:43:58
標準のクラスライブラリに ref つきのメソッドがどれほどある?
636デフォルトの名無しさん:2007/09/15(土) 12:44:31
void fun01(int x) { x = 2; }
void fun02(ref int x) { x = 2; }

int foo = 1:
fun01(foo);    // foo の値は 1 のまま
foo02(ref foo);   // foo の値は 2 に変わる
637デフォルトの名無しさん:2007/09/15(土) 12:45:22
たしかに。。
ではrefなしで行きたいと思います。
ありがとうございました〜
638デフォルトの名無しさん:2007/09/15(土) 12:55:03
refなんてめったに使わん。
フレームワークなど基盤部分で値型を扱う際に、
内部的に使うことはあるかもしれんが。

639デフォルトの名無しさん:2007/09/15(土) 13:03:27
必要もないのに使うべきでないのは確かだが、
教条主義的に否定する馬鹿にはならないで欲しいな。
この業界そういう馬鹿が案外多いから
640デフォルトの名無しさん:2007/09/15(土) 13:10:37
も一個質問なんですけど、
privateな関数で、メンバ変数、メンバ関数に一切アクセスしない場合
private staticにしたほうがいいんですか?
staticつきでも、なしでも動作は同じなんですけど。呼び出し方が変わるくらいで。
641デフォルトの名無しさん:2007/09/15(土) 13:13:05
うん
642デフォルトの名無しさん:2007/09/15(土) 13:13:18
>>639
気をつけます!
(といっても趣味なので話す相手もいませんが。。)
643デフォルトの名無しさん:2007/09/15(土) 13:17:45
>>641
なるほど。どうもです
644762:2007/09/15(土) 13:49:15
>>638
XNA Frameworkなんかパフォーマンス目的でrefやoutだらけだよ
void Matrix.Multiply (ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
みたいに
645デフォルトの名無しさん:2007/09/15(土) 13:50:46
>>639
その気持ち自体はとってもよく分かるんだが、
現実は結構加減が難しくない?
自分がレビューとかできる範囲ならまだいいんだけどね〜
646デフォルトの名無しさん:2007/09/15(土) 13:53:37
>>644
実質同じこといってるような気がする。
647デフォルトの名無しさん:2007/09/15(土) 15:53:53
荒れてるねw
648デフォルトの名無しさん:2007/09/15(土) 22:31:15
ム板でスレ違いと言われたのでここにて質問させて下さい。

.NETからoracleに接続をする、つまりDB接続文字列が分かりません。

String sConnectionString = "Provider=MSDAORA;User ID=sys;password=test_pass ; Data Source =ORCL10GR2;Persist Security Info=False";

恐らく
1)Provide
2)Data Source
の部分が怪しいと思うのですが、この部分はどうすれば適切なDB接続
文字列を見つける事が出来るでしょうか?

以上 どなたかoracleに詳しい方お教え願います。
649デフォルトの名無しさん:2007/09/15(土) 22:41:23
>648
スレ違い。
650デフォルトの名無しさん:2007/09/15(土) 22:46:15
ですねw
651デフォルトの名無しさん:2007/09/15(土) 22:59:31
>>648
VS2005のメニューで「ツール」→「データベースの接続」でデータベースに接続できるなら、
サーバーエクスプローラ上の接続済みデータベースのプロパティに接続文字列が表示されるけど、
それでも駄目かな(実際にOracle使っていないので保証できないけど)?
652デフォルトの名無しさん:2007/09/15(土) 23:44:37
653デフォルトの名無しさん:2007/09/15(土) 23:50:45
>>652 なんかよさげなサイトだな。
654デフォルトの名無しさん:2007/09/16(日) 00:06:38
>>651
Oracle10g Express Editionに接続をしようと
>>651さんのおっしゃる手順にて試した上でプロパティにて確認を行い、
テスト接続を行ったところ正常に接続は出来ました。
しかしながら、自動生成された接続文字列をコードの中に次の様に指定して
いるのですが接続が出来ません。

string constr1 = "Data Source=127.0.0.1;Persist Security Info=True;User ID=test_user;Unicode=True";
OracleConnection con = new OracleConnection(constr1);
con.Open(); //←この部分でエラーが発生します。

655654:2007/09/16(日) 00:07:49
>>652
そんな便利なサイトがあったんですね。ありがとうございます。
そちらも参考にしつつ試してみます。
656654:2007/09/16(日) 00:14:08
因みに>>651の手順で作成されたServer Explorer上の表示は次の
状態なのです。しかしながらOracle10g Express EditionのWEB上から
createしたテーブルが見えません。(TB_TESTテーブル)
>>651の手順で「正常に接続が出来ました。」というガイダンスが
表示されたのですがそもそも接続先が違っているのでしょうか?
【VS2005 Server Explorer状況】
Data Connections
127.0.0.1.TEST_USER
Tables
WWV_FLOW_DUAL100(FLOWS_020100)
WWWV_FLOW_FIELD_TEMPLATES(FLOWS_020100)
WWWV_FLOW_LIST_OF_VALUES_DATA(FLOWS_020100)
  ・
  ・
  ・
  (TB_TESTテーブル が本来見えるハズなのに見えません。)
657デフォルトの名無しさん:2007/09/16(日) 00:34:24
だからスレ違いだと何度・・・
658651:2007/09/16(日) 00:35:39
>>656
さっきも書きましたが、Oracleを使っていないので、
Oracleのスレに書き込んだほうがいいですよ
(ここまでくると完全にスレ違いですし^^;)。

作成した側で作成したテーブルが見えているなら、
>>654さんの言うとおり、参照先(インスタンスもしくはデータベース)が違うのでしょう。
OracleのVS2005アドオンツールを使って、
VS2005上で直接テーブル設計するのもいいかもしれません。
http://www.oracle.com/technology/tech/dotnet/tools/index.html
6596567:2007/09/16(日) 00:44:37
>>658
色々試してみましたところ何とか接続する事は出来ました。
ありがとうございます。

660デフォルトの名無しさん:2007/09/16(日) 03:32:41
VC#で作成したアプリを別PCで使用する場合はEXEをコピーすればいいのですか?
661デフォルトの名無しさん:2007/09/16(日) 07:59:10
他のファイルを参照したりしてなければ
662512:2007/09/16(日) 09:06:24
>>632
function(obj); の場合、メソッド内にObjectのコピーが作成されるのでしょうか?
663デフォルトの名無しさん:2007/09/16(日) 09:08:14
Objectの実体の住所を書いた紙を書き写す感じ
664デフォルトの名無しさん:2007/09/16(日) 10:17:43
>>662
「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。

ちなみに、function(obj)が値渡し、
function(ref obj)が参照渡し(・・・だったはず)
665デフォルトの名無しさん:2007/09/16(日) 10:50:29
>>664
「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
666デフォルトの名無しさん:2007/09/16(日) 13:50:18
参照の値渡し/参照の参照渡しとでも言えばいいの?w
667デフォルトの名無しさん:2007/09/16(日) 13:57:31
>>666
「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
668デフォルトの名無しさん:2007/09/16(日) 14:10:06
参照型の値渡し、参照型の参照渡しと言うべきだな
669デフォルトの名無しさん:2007/09/16(日) 14:13:19
>>668
「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
670デフォルトの名無しさん:2007/09/16(日) 14:15:23
参照型のインスタンスへの参照を格納する変数への参照の値渡し ならどうだ(ref object)
671デフォルトの名無しさん:2007/09/16(日) 14:16:42
>>670
「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
672デフォルトの名無しさん:2007/09/16(日) 14:22:24
こんちたびなし
673デフォルトの名無しさん:2007/09/16(日) 14:22:46
コピペ君って馬鹿だな、まで読んだ。
繰言クンも馬鹿だな、まで読んだ。
674デフォルトの名無しさん:2007/09/16(日) 14:24:54
675デフォルトの名無しさん:2007/09/16(日) 14:34:26
C#相談室
676デフォルトの名無しさん:2007/09/16(日) 15:07:38
677デフォルトの名無しさん:2007/09/16(日) 15:18:59
C#で月を表す定数を使用したいのですがCalendarクラスに見つかりません。
JavaでいうCalendar.JANUARYのような定数はC#ではどこにおいてあるのでしょうか?
678デフォルトの名無しさん:2007/09/16(日) 15:30:51
俺の部屋のベッドの下
679デフォルトの名無しさん:2007/09/16(日) 15:42:32
.NETはグローバリゼーションを考えてるから、一年が12ヶ月と決め付けてはいないんだ
680デフォルトの名無しさん:2007/09/16(日) 15:44:17
>>677
intの1 ~ 12でいいよ。
681デフォルトの名無しさん:2007/09/16(日) 15:45:25
Javaは月が0-11だから、こういうのがないとつらいのか。
.NETは1-12だからそのまま使え。
682677:2007/09/16(日) 15:53:45
工工エエエエ(´Д`)エエエエ工工
enum自作します・・・
683デフォルトの名無しさん:2007/09/16(日) 15:59:26
おれ英語表記だとJanから順番に唱えないと自身持って数字に変換できないわw
684デフォルトの名無しさん:2007/09/16(日) 16:03:03
定数にした方が見やすいような場面が思いつかない
685デフォルトの名無しさん:2007/09/16(日) 16:04:06
でもあちこちで例外処理するよりはenumのほうがいいんじゃまいか?
686デフォルトの名無しさん:2007/09/16(日) 16:12:24
どんな処理にそれが必要なんだろう
と思ったがMONTHLYDATEとかのときに作る羽目になったなそう言えば
687デフォルトの名無しさん:2007/09/16(日) 16:16:46
俺は677の発想に一票。
コードが見やすいかどうか、というより(まあ数字の方が見やすいのはたぶん日本人ぐらいのものだと思うが)
「月の名」っていう型が存在することの方が重要でしょ。
688デフォルトの名無しさん:2007/09/16(日) 16:19:28
それじゃlocale毎に違う型が必要になっちゃわね?
689デフォルトの名無しさん:2007/09/16(日) 16:22:23
まあ時と場合による、で良いんじゃね
Flags 属性が必要な場合なんか列挙体にするしかないし
// ロケールとの食い合わせが悪いのは仕方なし
690デフォルトの名無しさん:2007/09/16(日) 16:22:56
それ一般論としては間違ってないが、
しかしイスラム暦やチャイニーズカレンダーでコード書く必要ってそんなにあるの?w
691デフォルトの名無しさん:2007/09/16(日) 16:29:17
>>685
enumでも範囲チェックはできないがな
692デフォルトの名無しさん:2007/09/16(日) 16:30:09
>>687
日本人なんだから見やすい数字を選ぶほうが当たり前だろ。
で、なにが重要なの?
693デフォルトの名無しさん:2007/09/16(日) 16:36:44
>>692
重要じゃないと思うなら思っても別にいいんだが、
それならboolをすべてintで代用(いやboolが本来「代用」なんだが)している
コードをみても文句を言うなよ。
694デフォルトの名無しさん:2007/09/16(日) 16:39:27
いや、日本人ならというなら、むしろこうしようぜ。
enum 月
{
&nbsp; 睦月 = 1,
&nbsp; 如月 = 2,
&nbsp; 弥生 = 3,
&nbsp; ...
}
695デフォルトの名無しさん:2007/09/16(日) 16:40:51
enumにするにしても、何に使うかでどういう値になって欲しいか違いそうだから後付けの方がいいかなあ。
696デフォルトの名無しさん:2007/09/16(日) 16:42:40
曜日のenumはあってもよいと思うが、月はいるのかな?
月が必要なら、enum { DAY1, DAY2, DAY3 .... DAY31 } も必要になるか。
その調子で enum { YEAR0001, ... YEAR9999 } は...勘弁してください。
697デフォルトの名無しさん:2007/09/16(日) 16:58:59
そこで強いtypedefという無いものねだり。
698デフォルトの名無しさん:2007/09/16(日) 18:10:15
構造体に型変換演算子を定義すれば
699デフォルトの名無しさん:2007/09/16(日) 18:19:13
C井って、つおい?
700デフォルトの名無しさん:2007/09/16(日) 19:06:02
C丼はおいしいですよ
701デフォルトの名無しさん:2007/09/16(日) 20:09:08
Vb6よりよわいですw
702デフォルトの名無しさん:2007/09/16(日) 22:35:21
>>701
スパゲッティ量産するんだからVB厨はこっちに来ないでよ
703デフォルトの名無しさん:2007/09/16(日) 22:41:12
スパゲッティなんて20年ぶりに聞いたw
704デフォルトの名無しさん:2007/09/16(日) 23:00:13
>>703
本人に向かって言うわけ無いだろ?
705デフォルトの名無しさん:2007/09/16(日) 23:40:46
C#厨はパフォーマンスのこと言われるとすぐ頭に血が上るみたいですね

実行速度はVB6より遅いことに疑問をはさむ余地はないのにね
706デフォルトの名無しさん:2007/09/16(日) 23:43:38
そうだね
707デフォルトの名無しさん:2007/09/16(日) 23:45:51
パフォーマンスが重要ならC++で書くから
708デフォルトの名無しさん:2007/09/16(日) 23:52:58
>>705
せっかくだから自慢のVB6で挑戦してみたら?
ttp://d.hatena.ne.jp/siokoshou/20070411
709デフォルトの名無しさん:2007/09/17(月) 00:20:30
>>705
すまん、パフォーマンスの事言ってるのどこら辺から?
710デフォルトの名無しさん:2007/09/17(月) 00:51:44
>>707
パフォーマンスが重要でない案件なんて今まで出会ったこと無い。
711デフォルトの名無しさん:2007/09/17(月) 00:55:28
>>710
ならばクロック数えながらすべてアセンブラで書け。
712デフォルトの名無しさん:2007/09/17(月) 00:57:40
クロック数えながら?
なにとんちんかんなこといってんの?

713デフォルトの名無しさん:2007/09/17(月) 00:59:41
パフォーマンスが最重要の案件なんて今まで出会ったこと無い。
714デフォルトの名無しさん:2007/09/17(月) 00:59:46
.NETだとパフォーマンスが悪いから仕事で使えないというなら
Javaは使えないしPerlやPHPもダメ、Rubyなんて論外だろう
まあ大体の仕事では逆にC++が論外なんだがな
715デフォルトの名無しさん:2007/09/17(月) 01:06:43
>>712
意味わからんのか、かわいそうにw
716デフォルトの名無しさん:2007/09/17(月) 01:15:41
>>711
発言が幼稚園児なみだな
717デフォルトの名無しさん:2007/09/17(月) 01:18:55
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
718デフォルトの名無しさん:2007/09/17(月) 01:20:27
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
719デフォルトの名無しさん:2007/09/17(月) 01:21:11
ファビョった
720デフォルトの名無しさん:2007/09/17(月) 01:21:25
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
721デフォルトの名無しさん:2007/09/17(月) 01:22:14
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
ならばクロック数えながらすべてアセンブラで書け。
722デフォルトの名無しさん:2007/09/17(月) 01:23:43
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
723デフォルトの名無しさん:2007/09/17(月) 01:24:24
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
>>716 死ね
724デフォルトの名無しさん:2007/09/17(月) 01:34:40
お前らくだらない事だけ頑張るよなw
725デフォルトの名無しさん:2007/09/17(月) 01:49:39
まあ、だから実際自分でコードのひとつも書いてみれば分かるけど、
ドトネトって言ったからって別にVMで動いてるわけじゃないから
パフォーマンスが悪くなる理由はないし、実際悪くないんだけどね。

初回起動の遅さとGUIのロードの遅さは確かにかなり気になるんだけどさ。
726デフォルトの名無しさん:2007/09/17(月) 01:49:56
クロック数えながらw
727デフォルトの名無しさん:2007/09/17(月) 02:09:38
>>725
初回起動の遅さはなんかディスクアクセスのせいな気もするな。
CPU速度関係なさげ。
728デフォルトの名無しさん:2007/09/17(月) 02:19:56
C#でGUIを作成すること自体間違っている
もっさりしすぎて使い物にならん

GUIはMFC若しくはWIN32APIでないと厳しい
729デフォルトの名無しさん:2007/09/17(月) 02:36:58
>>728
もっさりしているのはWindowsフォーム、それともWPFのどっち。
それとも両方?
730デフォルトの名無しさん:2007/09/17(月) 02:47:54
>>715
>クロック数えながらすべてアセンブラで書け
ってどういう意味?
731デフォルトの名無しさん:2007/09/17(月) 02:53:48
>>730
つっこむなよ
かわいそうじゃん
732デフォルトの名無しさん:2007/09/17(月) 03:35:23
そんなにパフォーマンスが最重要なら命令のクロック数かぞえながら最速になるようにすればってことだろ
733デフォルトの名無しさん:2007/09/17(月) 03:39:06
vbより……とか、やっぱC++だな、とか
速度とかバーチャルマシンとかのキーワード使って煽られると弱いな、おまいら。
華麗にスルーしろよ
734デフォルトの名無しさん:2007/09/17(月) 03:45:06
速度はともかく、もちっと小さいヒープから始まんないかなとか思う
735側近中の側近 ◆0351148456 :2007/09/17(月) 04:04:52
(っ´▽`)っ
速ければ速いほどすばらしいという考えは
1970年代の考えですよ。
736デフォルトの名無しさん:2007/09/17(月) 05:24:07
起動がWordなんかより遅いテキストエディタなんてどうよw
737デフォルトの名無しさん:2007/09/17(月) 05:32:20
クロック計算なんて思い出したくもないな。
738デフォルトの名無しさん:2007/09/17(月) 05:34:22
スピードの魅力には抗えないのがプログラマの性
739デフォルトの名無しさん:2007/09/17(月) 08:12:34
>>736
そんなに遅くねえよ
740デフォルトの名無しさん:2007/09/17(月) 11:30:28
Visual C# 2005 Express Editionで作成したtest.exeというファイルが
あるのですが、いざ実行してみるとエラーが出てしまいます。
Visual C# 2005 Express Editionが起動している状態でtest.exeを実行する
とエラーはでないんですが・・・。

ちなみにtest.exeはファイルをアップロードするようになっています。
アドバイスお願いします。。。
741デフォルトの名無しさん:2007/09/17(月) 11:40:16
ぴくでたいまあつくたおいらがきましたよ
でばぐとりりいすのもんだいか?
742デフォルトの名無しさん:2007/09/17(月) 11:53:05
エラーとやらの中身書け
743デフォルトの名無しさん:2007/09/17(月) 12:07:12
すぐ閉じてしまうので、不確かではありますが「ファイルが見つかりません。」
的な内容だったと思います。
744デフォルトの名無しさん:2007/09/17(月) 12:10:54
エスパーすると、実行に必要な*.exe.configや*.dll などが一緒にコピーされてないとか。
745デフォルトの名無しさん:2007/09/17(月) 12:12:32
コンソールアプリか?
コマンドラインから起動したらメッセージが残るかね
746側近中の側近 ◆0351148456 :2007/09/17(月) 12:27:39
>>740
(っ´▽`)っ
コマンドプロンプトから起動してみな☆
すぐに閉じないから。
747側近中の側近 ◆0351148456 :2007/09/17(月) 12:28:21
(っ´▽`)っ
かぶった。しのう。
748デフォルトの名無しさん:2007/09/17(月) 12:36:38
デバッガありだと動くのにデバッガなしだと動かないことは稀にあるね
749デフォルトの名無しさん:2007/09/17(月) 12:57:26
>>742-748
コマンドプロンプトで実行してみると、見事にエラーが残りました。
後は、なんとか自己解決しました。。。

ありがとうございました。
750デフォルトの名無しさん:2007/09/17(月) 13:15:28
で、エラーの内容は?
751デフォルトの名無しさん:2007/09/17(月) 13:20:39
アクセスが拒否されました。とのことでした。
管理者でログインしてなかったのが原因ですね(恥^^;
752デフォルトの名無しさん:2007/09/17(月) 13:25:02
それにしても、Visual C# 2005 Express EditionはGuestアカウントで
開いてたのにtest.exeが実行されたのは何故だろう?
お手数をおかけしますが、分かる方いましたらアドバイスお願いします。。。
753デフォルトの名無しさん:2007/09/17(月) 13:44:31
管理者権限では動いたのか?何の操作で何がアクセス拒否なのかエラーの内容はよく吟味しろよ。
754デフォルトの名無しさん:2007/09/17(月) 14:06:30
質問者が適度に情報さらさないから
うだうだ無意味なレスが続くんだぞ?
俺らはエスパーではないんだぞ?
755デフォルトの名無しさん:2007/09/17(月) 14:17:20
>>754
適度な情報が晒されれば、解決できるほどの実力をお持ち合わせなのでしょうか?hw
756デフォルトの名無しさん:2007/09/17(月) 14:25:07
757デフォルトの名無しさん:2007/09/17(月) 15:02:04
>>755
質問もまともに出来ない奴はふらっとへどうぞ
758デフォルトの名無しさん:2007/09/17(月) 15:05:33
ふらっとに来られても困るわ
759デフォルトの名無しさん:2007/09/17(月) 15:05:47
>すぐ閉じてしまうので、不確かではありますが「ファイルが見つかりません。」
ついにこのレベルまできたか・・・学生である事を切に願う
760デフォルトの名無しさん:2007/09/17(月) 15:20:56
>>756
エスパーキタ━━゚+.ヽ(≧▽≦)ノ.+゚━━ ッ ! ! !
761デフォルトの名無しさん:2007/09/17(月) 15:21:16
まぁ、おまえらも目くそ鼻くそだがなw
762デフォルトの名無しさん:2007/09/17(月) 17:28:13
まさにふらっとレベル
763デフォルトの名無しさん:2007/09/17(月) 18:51:22
パソコンショップ等にならんでいるパッケージソフトの大半はC/C++で書かれているネイティブですが
今後は.NETで書かれたものが主流になってくるんでしょうか?
764デフォルトの名無しさん:2007/09/17(月) 19:03:24
簡単にソースが覗ける問題が解決されない限り、.NETで
パッケージソフトがつくられることはあり得ないと思うよ。
765デフォルトの名無しさん:2007/09/17(月) 19:09:54
パッケージソフトじゃないけどRadeonのドライバについてる設定ツールとか.NET。
766デフォルトの名無しさん:2007/09/17(月) 19:12:14
javaも逆コンパイルが問題になってたな
俺は自分のアプリしか作ってないからどうでもいいが
767デフォルトの名無しさん:2007/09/17(月) 19:18:01
今のところまっとうに使われてるのはWEBなどのサーバーサイドシステムや
保守性や開発効率を求められる社内システムなどの分野。
パッケージ系は最後だろうな。
言語はTPOで使い分ける時代になったから覚えるほうはいろいろあって大変だ。
768デフォルトの名無しさん:2007/09/17(月) 19:30:17
.NETで書かれたアプリが主流になるのは5年以上後だろうね
もしかしたら、その前にMSから捨てられる可能性もきわめて高いがw
769デフォルトの名無しさん:2007/09/17(月) 19:33:00
それはないw
ネイティブコンパイラを出してくる可能性はあるかもしれないけど
770デフォルトの名無しさん:2007/09/17(月) 19:36:05
nGenの事も忘れないであげてください
771デフォルトの名無しさん:2007/09/17(月) 19:39:12
連れのWinVistaで自作アプリを動かしたらメチャクチャ快適
起動もバカっ早っ!
772デフォルトの名無しさん:2007/09/17(月) 20:00:08
まあ起動は速いな
773デフォルトの名無しさん:2007/09/17(月) 21:25:25
自作クラスで例外発生させて、
そのクラス使ってる側でcatchしたあとに
例外発生した場所に処理戻させるなんて鬼テク無理?
774デフォルトの名無しさん:2007/09/17(月) 21:27:49
>>773
意味わからん。

要は例外が起こった事を通知したいだけだ、って意味なら
例外じゃなくてイベントで通知すればいいじゃん
775デフォルトの名無しさん:2007/09/17(月) 21:31:39
メソッド単位でやりたかったらデリゲートを引数に渡せば
776773:2007/09/17(月) 21:31:48
>>774
サンコス。

今それかんがえてました。。
失礼しましたー
777デフォルトの名無しさん:2007/09/17(月) 21:38:51
例外なんてキャッチするもんじゃねーや気持ち悪い
778デフォルトの名無しさん:2007/09/17(月) 21:44:38
Dでいいじゃん
779デフォルトの名無しさん:2007/09/17(月) 21:59:23
素直にC#のネイティブコンパイラにすればよかったのに>D
780側近中の側近 ◆0351148456 :2007/09/17(月) 22:27:30
>>773
(っ´▽`)っ
それはカプセル化が崩壊していますよ。
それどころか、構造化プログラミングも反してる。
GOTO文と変わらない。
戻り値で例外発生したか否かを伝えればいいのでは。
781側近中の側近 ◆0351148456 :2007/09/17(月) 22:29:32
(っ´▽`)っ
>>775の言うとおり、デリゲートもいいね。
782デフォルトの名無しさん:2007/09/17(月) 22:35:16
(っ´▽`)っ
馬鹿じゃないのw

そうやって2chくんだりでわざわざ「自分のキャラ」を出さないと気がすまないのは
等身大の日常が空っぽだからだろ。

はっきりいって見え透いていて見てるこっちが恥ずかしくなるよw
自分じゃキャラを演じてるだけ、と思ってるんだろうがそうじゃない。
そのお馬鹿が本当の君自身なのさたぶん
783デフォルトの名無しさん:2007/09/17(月) 22:38:21
>>769
ネイティブとnGenになんの関係があるんだ?
nGen使えばネイティブアプリに変換できるとでも?w
784デフォルトの名無しさん:2007/09/17(月) 22:40:34
ウィルスバスターは一部.NET
785デフォルトの名無しさん:2007/09/17(月) 22:41:06
とりあえず語尾にwつけるやつは問答無用で白痴認定
例外は認めない
786デフォルトの名無しさん:2007/09/17(月) 22:42:26
>>783
769がそんなこと俺に言われてもシラネって言ってると思う
787デフォルトの名無しさん:2007/09/17(月) 22:58:37
>>784
もっさり?
788デフォルトの名無しさん:2007/09/17(月) 23:03:23
マカフィーのコンソールもそうっぽいね、なんとなく。
ああすごい重いよいらいら。
789デフォルトの名無しさん:2007/09/17(月) 23:05:02
>>785
おkwwwww 。
790デフォルトの名無しさん:2007/09/17(月) 23:06:29
ホント.NETって失敗だよね

MS引くに引けなくなってる状態でしょ

たぶん、そのうち切られる
791デフォルトの名無しさん:2007/09/17(月) 23:13:00
そうだね
792デフォルトの名無しさん:2007/09/17(月) 23:13:06
行間空けてまで言うこと?wwww 。
793デフォルトの名無しさん:2007/09/17(月) 23:16:38
webbrowserで、ある文字の上にマウスが移動したことを知るために
htmldocumentのMouseOverイベントを使っているのですが、
文字に情報を持たせるために、<a>タグがhrefを持たないときに
リンクとして扱われないことを利用して、<a info=〜> 文字 </a>
とし、囲んでいるタグの情報を得るメソッドでinfoを取り出しています。
あまりいいやり方ではないと思うのですが
適切な方法はあるでしょうか?
794デフォルトの名無しさん:2007/09/17(月) 23:21:30
span
795デフォルトの名無しさん:2007/09/17(月) 23:28:33
>>794
ありがとうございます
796デフォルトの名無しさん:2007/09/18(火) 13:00:50
業務でプログラムやってる人じゃなく、独学の人いる?
797デフォルトの名無しさん:2007/09/18(火) 13:02:51


自分で使うちょっとしたツール作るためにプログラムやってる。
798デフォルトの名無しさん:2007/09/18(火) 13:03:16
799デフォルトの名無しさん:2007/09/18(火) 13:45:18


このスレを見ている人はこんなスレも見ています。(ver 0.20)
綜合警備保障(ALSOK)ってどうよ? その3 [転職]
【賽の】国家公務員・再チャレンジ試験7【河原へ】 [転職]
★35歳超45歳未満の転職サロン Part72★ [転職]
ガンガレ
800デフォルトの名無しさん:2007/09/18(火) 13:55:07
学生プログラマてすが


みんな大変そうですね
801デフォルトの名無しさん:2007/09/18(火) 14:08:47
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
会社で使えない奴、それはワタシ/アイツ [プログラマー]
Firebird関連スレ2 [データベース]
綜合警備保障(ALSOK)ってどうよ? その3 [転職]
【賽の】国家公務員・再チャレンジ試験7【河原へ】 [転職]
★35歳超45歳未満の転職サロン Part72★ [転職]


ワロタw
802デフォルトの名無しさん:2007/09/18(火) 15:43:49
http://www.e-words.ne.jp/search.asp
Form上にあるTextBoxに入力した文字を↑の検索サイトに送って
結果を受信するにはどうしたらいいですか?
803デフォルトの名無しさん:2007/09/18(火) 16:12:47
PCの動作にかかる時間を通常の三倍に増強するノートン先生
804デフォルトの名無しさん:2007/09/18(火) 17:56:52
>>802

System.Net.WebClientつかえば?
getならquerystringに必要なデータ押し込んで要求すればよし。
postならuploadstringかな?

MSDNみて意味が分からなければ、HTTPについてまずお勉強しましょう。
805デフォルトの名無しさん:2007/09/19(水) 00:32:29
C#である特定のエラーが発生した場合に再度エラーが起こった場所から
実行できるVBのResume機能を実現するにはどうすれば良いでしょうか?
gotoで処理するのが普通でしょうか?
VBだと以下のようにエラー発生時にリトライが簡単にできるのですが・・・
Private Function GetText() As Boolean
Dim strText(0 To 4) As String
Dim intFileNumber As Integer
Dim i As Long
intFileNumber = FreeFile
On Error GoTo ErrTrap:
Open "C:\Test.txt" For Input As #intFileNumber
For i = 0 To 4
Line Input #intFileNumber, strText(i)
If EOF(intFileNumber) = True Then
Exit For
End If
Next i
Close #intFileNumber:intFileNumber = 0
GetText = True
Exit Function
ErrTrap:
'タイムアップでなければリトライ
If Err.Number = 53 And m_blnTimeUp = False Then
Resume
End If
If intFileNumber > 0 Then
Close #intFileNumber
End If
GetText = False
End Function
806デフォルトの名無しさん:2007/09/19(水) 00:35:17
よくある構成
ツリー、リスト、ピクチャ
なんてメインフォームに置くと、おのおののコントロールを派生させてIViewインターフェイスを
実装してるんだけどかなり面倒

VC++MFCのドキュビューを自前でやってますが、皆さんどうしてます?
807デフォルトの名無しさん:2007/09/19(水) 00:40:48
>>805
んなことせんでboolを返すメソッドにでもして成功するまで
再試行とかするようにした方がすっきりするキガス。
gotoとかで戻すの気持ち悪い。
808デフォルトの名無しさん:2007/09/19(水) 00:51:02
VB.NETでOn Error Goto xxやResumeを使ってるのをildasmすると、
めちゃくちゃ汚いコードが見て取れる。非推奨なのはわかるな。
809デフォルトの名無しさん:2007/09/19(水) 00:51:35
C#はc言語のように暴走することはあるのですか
810デフォルトの名無しさん:2007/09/19(水) 00:51:51
Visual StudioでEUCで書かれたファイルを開いて
文字コード指定して開きなおすってどうやんの?
デフォルトだとsjisになってるぽくて化け化けなんですが。
811デフォルトの名無しさん:2007/09/19(水) 01:01:41
与えられたhtml文書が、webbrowserで表示されるときに
どれだけの高さになるかを取得する方法はありますか?
812デフォルトの名無しさん:2007/09/19(水) 01:06:46
webbrowserに計算させるしかあるまい
bodyのscrollHeightだったっけ
DOCTYPEによっては出ないらしいけど
813側近中の側近 ◆0351148456 :2007/09/19(水) 01:11:31
>>805
(っ´▽`)っ
C#なら、対象の処理をtry句で囲んで、
catch句で
タイムアップなら何もしない
それ以外の例外ならthrowという感じで
実現可能だと思う。

while(true)
{
  try
  {
   対象の処理
  }
  catch(タイムアップ例外クラス e)
  {
  }
  catch(Exception e)
  {
    throw;
  }
}

(っ´▽`)っ ダメかな?かな?
814デフォルトの名無しさん:2007/09/19(水) 01:11:56
>>812
ありがとうございます
bodyのScrollRectangle.Heightから取得できました
815側近中の側近 ◆0351148456 :2007/09/19(水) 01:12:39
(っ´▽`)っ
ただ、>>807のやり方のほうがエクセレントだね☆
わかりやすいから。
816側近中の側近 ◆0351148456 :2007/09/19(水) 01:18:30
>>810
(っ´▽`)っ
StreamReaderクラス使ってるなら
コンストラクタでエンコーディング指定できるよ☆
(ノ´▽`)ノできるよ
817デフォルトの名無しさん:2007/09/19(水) 01:45:35
VSのエデイタ部の事言ってるんだろ
スレ違いだからシカトするけど
818デフォルトの名無しさん:2007/09/19(水) 03:23:09
Nullabledはなんて呼ぶのですか?釣りじゃなくマジです
819デフォルトの名無しさん:2007/09/19(水) 03:23:51
ならぶるでぃー
820デフォルトの名無しさん:2007/09/19(水) 04:08:51
そもそもnullってナルなの?ヌルなの?
821デフォルトの名無しさん:2007/09/19(水) 05:50:59
ぬるぽ
822デフォルトの名無しさん:2007/09/19(水) 05:54:17
>>813
ひさしぶりにwhile(true)見たなぁ・・・
823デフォルトの名無しさん:2007/09/19(水) 06:04:06
ぬらぶるど
824805:2007/09/19(水) 07:39:27
>>807
> >>805
> んなことせんでboolを返すメソッドにでもして成功するまで
> 再試行とかするようにした方がすっきりするキガス。
> gotoとかで戻すの気持ち悪い。

レスありがとうございます。
成功するまで再試行というコードがイマイチ良く分からないのですが
サンプルコードを教えていただければ幸いです。

>>813
コード例付きレスありがとうございます。
825デフォルトの名無しさん:2007/09/19(水) 08:25:42
C#でOSをつくることはできますかあ?
826デフォルトの名無しさん:2007/09/19(水) 08:30:11
お前には無理
827デフォルトの名無しさん:2007/09/19(水) 08:49:39
>>826
じゃあおまえつくってみろや
828デフォルトの名無しさん:2007/09/19(水) 08:57:22
俺にも無理
829デフォルトの名無しさん:2007/09/19(水) 09:06:02
ヘジは反対してるけど
MS内部には.NETでOSを作る計画はある
830デフォルトの名無しさん:2007/09/19(水) 09:36:15
お、その話おもしろいな
詳しいソースある?
831デフォルトの名無しさん:2007/09/19(水) 10:00:44
832デフォルトの名無しさん:2007/09/19(水) 10:46:07
さんくす
833デフォルトの名無しさん:2007/09/19(水) 11:07:27
834デフォルトの名無しさん:2007/09/19(水) 11:12:02
835デフォルトの名無しさん:2007/09/19(水) 14:34:35
MCTSの70-526の試験って難しい?
836デフォルトの名無しさん:2007/09/19(水) 15:18:53
>>829
833 とかのリンク先見てみたけど、
思いっきり研究用だって書いてるね。

現実的なこというと、Singularity が商用 OS になるっていうよりは、
いいアイディアが出たら .NET Framework に取り込まれるって感じなのかな。
837デフォルトの名無しさん:2007/09/19(水) 15:25:10
.NET Micro Frameworkがあるじゃない
838デフォルトの名無しさん:2007/09/19(水) 15:35:25
C#でつくったらしい
http://www.coos.jp/
839デフォルトの名無しさん:2007/09/19(水) 15:49:56
ロゴがgoogleまるパクリでワラカス
840デフォルトの名無しさん:2007/09/19(水) 15:57:16
>>837
あれの意図は、Windows Mobile すら載せたくないくらいの
組み込み向け低スペック環境で .NET 言語を使いたいってのよね。
パフォーマンスは“そこそこ”でセキュリティとかを気にしてる Singularity と違って、
結構パフォーマンス最優先。
841デフォルトの名無しさん:2007/09/19(水) 16:03:03
ロゴなんてどうでもいいが内容は興味深い
842デフォルトの名無しさん:2007/09/19(水) 16:41:34
初歩的な質問ですが。。。
Test test = new Test();
test変数に代入されるのはTestクラスのインスタンスへの参照であり、
インスタンス自体が代入される訳ではない。という解釈でよろしいでしょうか?
ということは、test変数を経由することでTestクラスのインスタンスへのアクセスが
可能になるということになりますよね?
843842:2007/09/19(水) 16:46:43
>なるということになりますよね?
訂正です。。。なるということですよね?
844デフォルトの名無しさん:2007/09/19(水) 16:57:14
>>842
参照型(class)の場合はね。
値型(struct)の場合は値そのものが格納される。
845842:2007/09/19(水) 17:15:24
>>844
アドバイスありがとうございます。
クラスの他に、値型というものが存在するんですね。

まだC#の勉強を始めたばかりなので、またお世話になることがあるかも知れません。
そのときはまたよろしくお願いします・・・。
846デフォルトの名無しさん:2007/09/19(水) 18:19:38
>>845
その際はこちらへどうぞ

ふらっとC♯, C#(初心者用) Part19
http://pc11.2ch.net/test/read.cgi/tech/1188872446/
847デフォルトの名無しさん:2007/09/19(水) 22:49:41
次期VSに搭載されるMFCは現状のC#みたくポトペタじゃないですか
そうすると、C#って存在価値なくなりM$に捨てられるんじゃないかと
思い不安です
848デフォルトの名無しさん:2007/09/19(水) 22:51:58
MSが開発した物は全て捨てられる危険性と共にある
849デフォルトの名無しさん:2007/09/19(水) 22:54:53
MSに限らんだろ
850デフォルトの名無しさん:2007/09/19(水) 23:01:00
>>847
ポトペタなんてC#に限らないからその心配はない。
851デフォルトの名無しさん:2007/09/19(水) 23:15:02
ポトペタ環境でネイティブがかけるなら誰もC#なんて使わん
852デフォルトの名無しさん:2007/09/19(水) 23:18:58
限界のパフォーマンスが必要でない限り
誰もC++なんざ使わん
853デフォルトの名無しさん:2007/09/19(水) 23:28:33
ポトペタってRADのこといってんだよな?そんなの重要なことじゃなくね(それともネタでいってんの?)
C#は、ほかにもLINQやラムダ式、使いやすいデリゲートにスレッド、ガベージコレクション、
整理された.NETライブラリ、IDEの強力なサポートなど魅力山盛りだと思うんだが。
854デフォルトの名無しさん:2007/09/19(水) 23:36:19
ほんとのC++使いじゃ >>851 みたいなアホなことは言わんわ。
855デフォルトの名無しさん:2007/09/20(木) 00:01:08
誰か教えてください。

Visual C# 2005 Express Edition を使っているのですが、大昔のJAVAのソースを使いたくなりました。
J#だと処理に手を加えるのがやっかいだなあと思っていたところJLCA(Java Language Conversion Assistant)なるものを見つけました。

使い方を調べていたところ ttp://msdn2.microsoft.com/ja-jp/library/71czf4se(VS.80).aspx に
>1.Visual Studio を起動します。
>2.[ファイル] メニューの [開く] をポイントし、[変換] をクリックします。
と書いていましたがVC#Expressにはそんなものがありませんでした。

これはExpressでは使えない機能なのでしょうか。
856デフォルトの名無しさん:2007/09/20(木) 00:07:12
そう
857デフォルトの名無しさん:2007/09/20(木) 01:13:08
ポトペタよりもXAMLのが、使いやすいと思た
858デフォルトの名無しさん:2007/09/20(木) 03:06:11
この間C++で昔のソース見たけど、何ツーかヘッダーとか使えないインテリセンスとか使いずらいったらありゃしない('A`)
859デフォルトの名無しさん:2007/09/20(木) 09:24:56
>>851

delphiがあるじゃないか。
860デフォルトの名無しさん:2007/09/20(木) 11:08:15

dataGridView1.DataSource = ds;

って感じでdataGridViewを指定したけど、この場合、
dataGridViewの各列の名前ってどうなるのかな?

具体的には
dataGridView1.Columns[1].Visible = false;
という指定を
dataGridView1.Columns["hogehoge"].Visible = false;
としたいんですが・・・
861860:2007/09/20(木) 11:09:20
↑ データセットの列名がそのまま使えるのね 自己解決しました。ありがとうございます。
862デフォルトの名無しさん:2007/09/20(木) 12:20:59
>>857
でも、それも、ポトペタは要らないかもしれないけど、
WYSIWYG な GUI 表示とインテリセンスは欲しくない?
863デフォルトの名無しさん:2007/09/20(木) 14:26:50
VS2005で、ReportViewerコントロールを使ったレポート作成をしています。

rdlcファイルって、手動で作ったデータセットを参照先には指定できないのでしょうか?
(デザイナで作ったデータセットでないと指定できないのでしょうか?)

クエリが可変になるので、手動でのデータセットを指定できればいいのですが…

#CrystalReportを使いたいが、経費が認められず自腹で買えとorz


864デフォルトの名無しさん:2007/09/20(木) 15:33:10
メール送信する際に全員をBCCにすることは出来ないのでしょうか?
SmtpClientクラスではTOをnullにはできないのです必ずTOが必要なのですが…
865デフォルトの名無しさん:2007/09/20(木) 15:36:52
それはSmtpClientっつーよりSMTPのレベルで認められてないんじゃないか
866デフォルトの名無しさん:2007/09/20(木) 15:38:13
自分をToにすればいんじゃね?
867デフォルトの名無しさん:2007/09/20(木) 15:46:58
それよくやる
868デフォルトの名無しさん:2007/09/20(木) 16:11:35
Undisclosed-Recipient:; って使えない?
869デフォルトの名無しさん:2007/09/20(木) 19:37:07
>>868
thx あとで会社で試してみます!!
870デフォルトの名無しさん:2007/09/20(木) 19:59:49
MailAddressのインスタンス作る時点で、メールアドレス形式のチェックが走るんで
Undisclosed-Recipientを割り当てるのは無理みたいだが
871デフォルトの名無しさん:2007/09/20(木) 21:00:08
ポトペタって言うけど何が悪いんだか?
872デフォルトの名無しさん:2007/09/20(木) 21:01:44
ユーザの平均スキル
873デフォルトの名無しさん:2007/09/20(木) 21:04:20
>>871
たぶん「猫でもできる」とか読んで嬉しくなっちゃうタイプの奴が嫌ってるんだよ。
っていえばだいたいどいういうタイプか想像できるでしょ?w
874デフォルトの名無しさん:2007/09/20(木) 21:05:28
すまん、「猫でもわかる」だったなあのドクターの書いてる本
875デフォルトの名無しさん:2007/09/20(木) 21:11:52
どちらかと言えば携帯のほうが悪いよな。

どこにいても仕事の電話が…orz
876デフォルトの名無しさん:2007/09/22(土) 13:57:20
hosyu
877デフォルトの名無しさん:2007/09/22(土) 19:59:03
ぬるぽ
878デフォルトの名無しさん:2007/09/22(土) 21:52:49
むしろ叩かない
879デフォルトの名無しさん:2007/09/22(土) 23:03:16
それを言うなら「あえて」では?
880デフォルトの名無しさん:2007/09/23(日) 00:22:47
このスレに来れば好きなだけ「ぬるぽ」と叫ぶことができると聞きました。

ぬるぽっぽぽおるぽううろrぷるるっるrぽるrpるrrぽるぽるるうるぬるうぬるぽ!!
881デフォルトの名無しさん:2007/09/23(日) 00:51:18
何が面白いの?
882デフォルトの名無しさん:2007/09/23(日) 01:13:45
クソスレが上がってるのでage
883デフォルトの名無しさん:2007/09/23(日) 02:50:09
Regex.Replaceって"aabb(cc)"の()内だけおきかえって出来ないん?
884デフォルトの名無しさん:2007/09/23(日) 03:11:58
>>883
その正規表現を晒しなさいよ
かっこが全角になってるせいとか言わないよね
885デフォルトの名無しさん:2007/09/23(日) 03:19:49
Regex re = new Regex( @"(?<=\()[^)]+(?=\))" );
886デフォルトの名無しさん:2007/09/23(日) 03:37:19
>>884
string target = "aabbcc";
string pattern = "aabb(cc)";
string s = Regex.Replace(target, pattern, "#test#");
Console.WriteLine(s);

なんだけど「指定した入力文字列内で正規表現パターンに一致する文字列」の認識違う?
887デフォルトの名無しさん:2007/09/23(日) 03:45:44
うん。
888デフォルトの名無しさん:2007/09/23(日) 03:49:47
>>887
d
889デフォルトの名無しさん:2007/09/23(日) 11:00:12
ねただよね?
890デフォルトの名無しさん:2007/09/23(日) 11:07:33
ねたではありません。吊りです
891デフォルトの名無しさん:2007/09/23(日) 12:08:12
プラグインで拡張できるアプリを作ってます

プラグインを扱う部分はできたんですが、
プラグインが怪しい事(Systemファイルをいじったり)をしない様に
システムリソースへのアクセスを制限したいのですが、
どういった方法があるんでしょうか?

検索したところ、セキュリティを設定したAppDomainを作成して、
プラグインはそこで実行させる方法があるみたいですが

他にも方法があったら参考までに教えてください
892デフォルトの名無しさん:2007/09/23(日) 12:36:43
プラグイをLoadFromでhttp://〜なんてURLで読み込んだらいいんじゃね?w
いや悪い冗談だ。

コードアクセスセキュリティの機能で、特定のアクセス許可を消したり、特定のアクセス許可だけを与えたりできる。
んでも、んー結構面倒な気がするな。
アセンブリのロード時にEvidenceでインターネットゾーンレベルの許可を与えられるように指定するとか。

って一般的にどうするものなのか俺は詳しくないからほかの人の反応を待ったほうがいいなぶっちゃけw
893デフォルトの名無しさん:2007/09/23(日) 13:05:35
あえて無視
894デフォルトの名無しさん:2007/09/23(日) 13:06:50
FireFoxのブックマークを読み込みたいんですが、ICON属性にbase64エンコードされたイメージがあり読み込みたい
ヘッダにpngとIconがあるんだけれどpngは素直にヘッダを取ってデコードしてイメージオブジェクトに読み込めたんだけど
ICONタイプのものが上手くいきません、方法があったら教えてください
895デフォルトの名無しさん:2007/09/23(日) 13:09:59
>>894
どこで区切って読めばいいのか分からん。
もう少し読みやすい文章を心がけてくれたまえ
896デフォルトの名無しさん:2007/09/23(日) 13:21:22
897デフォルトの名無しさん:2007/09/23(日) 13:35:23
VS2005で

Invoke(foo.hoge);

はダメ?

delegate void method();
Invoke(new method(foo.hoge));
はOKですよね

C#2.0ではメソッドを暗黙的にデリゲートに変換することが出来るようになってのでは?
898デフォルトの名無しさん:2007/09/23(日) 13:42:52
メソッドを暗黙的に「デリゲート型(delegate void ○○○みたいに宣言するやつ)のオブジェクト」
に変換できるってことなんじゃね
System.Delegate自体は「デリゲート型」じゃないからダメだと
899デフォルトの名無しさん:2007/09/23(日) 13:48:25
>>898
いい加減なこというなよ
内の環境ではいけるぞ
900デフォルトの名無しさん:2007/09/23(日) 13:50:40
Invokeの引数の型は何よ
901デフォルトの名無しさん:2007/09/23(日) 13:51:25
そのInvokeの定義によるんじゃないの?

static void Invoke(System.Delegate d)
static void Invoke(method m)

上だとダメだと思う。
902デフォルトの名無しさん:2007/09/23(日) 15:28:07
>>896
ありがとうございます、これを参考にやってみます
903デフォルトの名無しさん:2007/09/23(日) 16:11:17
なんでMethdInvoker使わないの?

まどっちにしてもだめだが、キャスト書けばいけた気がする。
もはやnewとあまり変わらなくなるが。
904デフォルトの名無しさん:2007/09/23(日) 16:13:39
純粋に言語仕様についての疑問だろ
905デフォルトの名無しさん:2007/09/23(日) 19:07:32
構造体を戻り値として他のクラスに渡す場合の処理の書き方について教えてください
906デフォルトの名無しさん:2007/09/23(日) 19:14:42
意味不明
無理に難しい言葉使わなくていいから何がしたいのか具体的にはっきり書いて
907デフォルトの名無しさん:2007/09/23(日) 19:16:09
>>905
意味がよくわからんがこう言ってるのか?
struct MyStruct{...}
class MyClass
{
...
public MyStruct SetMyStruct(MyStruct myStruct){...}
}
908デフォルトの名無しさん:2007/09/23(日) 19:19:55
typeof(MyStruct)の類かも
909デフォルトの名無しさん:2007/09/23(日) 19:26:54
>>906
分かりずらくてすいません

>>907
struct Mystruct{...}

class MyClass
{

(strMyClassの中身を中身をいじる)

return (strMyClass)

}


classMyClass2
{

ここで結果のstructを取得したい


}

こんな処理をしたいのですがお願いします><
910デフォルトの名無しさん:2007/09/23(日) 19:34:13
>>909
struct Mystruct { public string Str;}
class MyClass{
public Mystruct 中身を中身をいじる(Mystruct strMyClass){
strMyClass.Str = "いじられた";
return strMyClass;
}
}
class MyClass2{
public void MyMethod(){
MyClass myClassObj = new MyClass();
Mystruct myStructObj = new Mystruct();
myClassObj.中身を中身をいじる(myClassObj);
}
}
911910:2007/09/23(日) 19:35:39
>>910訂正
×myClassObj.中身を中身をいじる(myClassObj);
○MyStruct いじられた結果 = myClassObj.中身を中身をいじる(myStructObj);
912デフォルトの名無しさん:2007/09/23(日) 20:20:47
>>909>>910>>911
解決しました本当にありがとうございます(ペコリ
913デフォルトの名無しさん:2007/09/23(日) 20:21:30
>>908>>910>>911
(ペコリ
914デフォルトの名無しさん:2007/09/23(日) 20:57:31
なんじゃあこりゃあ
915デフォルトの名無しさん:2007/09/23(日) 23:44:15
ボタンのクリックイベントハンドラ
private void mnLStart_Click(object sender, System.EventArgs e)
{
 Thread thread = new Thread(new ThreadStart(〜〜〜));
 thread.Start();
}
のようにスレッドを開始し、そのスレッド長いこと処理をしているとします。
thread はスコープを抜けているのでそのスレッドを参照できませんよね

そうするとスレッドが実行中でもGCによって回収されるのでしょうか?
実行が終わるまで回収はされないのでしょうか?されないとするとなぜですか?
916デフォルトの名無しさん:2007/09/23(日) 23:49:45
http://msdn2.microsoft.com/ja-jp/library/system.threading.thread.aspx
> スレッドが開始した後は、Thread オブジェクトへの参照を保持する必要はありません。
> スレッドは、そのスレッドの処理が完了するまで実行を継続します。
917デフォルトの名無しさん:2007/09/23(日) 23:58:03
スレッドオブジェクト自身が自分をどこかに登録してるんだろ
918デフォルトの名無しさん:2007/09/24(月) 00:07:31
>>917
どこかにって・・・
そんないい加減な知識で書いてて怖くないんですか?
919デフォルトの名無しさん:2007/09/24(月) 00:23:03
スレッド作って放置するという状況ってのが皆無じゃないか?
2重にスレッドつくっちゃわないよう監視するとかしないのかい?
920デフォルトの名無しさん:2007/09/24(月) 00:24:21
スレッドは放置だろ
921デフォルトの名無しさん:2007/09/24(月) 00:26:23
>>918
別にメインメソッドに対応するThreadオブジェクトを
参照しなきゃって人は居ないんだし、
なんで新しく作ったスレッドだけ怖がるの?
922デフォルトの名無しさん:2007/09/24(月) 00:29:49
>>918
何も使うなよもう。

どこかで覚えててうまく動く仕組みになってる、
以上の詳細を知る必要なんてほとんどの場合はないだろ。
923デフォルトの名無しさん:2007/09/24(月) 00:31:27
>>915
SSCLI読んでからまたおいで
924デフォルトの名無しさん:2007/09/24(月) 00:32:53
スレッドを監視したり止めたりしなきゃならない状況が
もう失敗って感じだしな
925デフォルトの名無しさん:2007/09/24(月) 00:40:34
>>922
あなたはプログラマには向かない、
926デフォルトの名無しさん:2007/09/24(月) 00:45:44
どうでもいいよそんなこと
927デフォルトの名無しさん:2007/09/24(月) 01:36:48
隠蔽されているものをタシーロしたくなる気持ちは分かるけど・・・
隠されているものは隠されているから良いのであって、世の中の人間全てが田代じゃないと思うわけだ
928デフォルトの名無しさん:2007/09/24(月) 01:41:32
>>924でFA
929919:2007/09/24(月) 01:52:56
>>924
そりゃ、どんな状況下でスレッド使うことを想定してるんだ?
ボタンのクリックでスレッド開始するってんだろ?
ボタン2度押しされたら?とか考えんのか?
長い処理だと、途中で強制停止させたい。
とかもあるかもだろ。

930デフォルトの名無しさん:2007/09/24(月) 02:00:33
ゆとりだから突っ込むなw
931デフォルトの名無しさん:2007/09/24(月) 02:04:19
スレッドの監視ってのが意味分からんのだが
932デフォルトの名無しさん:2007/09/24(月) 02:22:41
まんま過ぎてどう説明すればいいかよくわからんのだが
どういうイメージしてるか教えてくれんか
933919:2007/09/24(月) 02:26:42
親から作ったスレッドに対して
Thread.IsAlive とか Thread.Join とか
することをいってたんだが。
つうか、俺は質問者>>915=918じゃないから
消えるわ。あらしてすまんかった。
934デフォルトの名無しさん:2007/09/24(月) 04:53:52
System.Xml.Linqのクラスリファレンスって、どこかにありますか?
935デフォルトの名無しさん:2007/09/24(月) 05:02:07
>>934
Orcasのベータに付いてくるMSDNにはあったと思う。
既にWebのMSDN Onlineに反映されてるかは自分で調べてくれ。
936デフォルトの名無しさん:2007/09/24(月) 10:19:49
>>935
ぬぅ、Orcasいれなきゃ駄目ですか・・。
ありがとうございます。
937デフォルトの名無しさん:2007/09/24(月) 16:07:54
>>925
契約違反行為しなきゃ分からんこともいっぱいあるのに
ソースやら調べでもアンドキュメントな実装詳細なんてバージョンで変わるかも知れんのに

ご苦労なことだ。

だいたいカレントスレッドのThreadオブジェクト取得するプロパティやらあるのに
つまり何らかの形で保持されてるのは明らかなのに
それでも信用できないのか?
938デフォルトの名無しさん:2007/09/24(月) 16:30:36
マルチスレッドの質問なんですが、

・複数のスレッドで参照される変数にはvolatileキーワードが必須。
・値を更新するスレッドが1つだけの場合は、それだけでOK。
・複数スレッドで値を更新する場合はlock()して値を更新する。

この認識で合ってますか?
939デフォルトの名無しさん:2007/09/24(月) 16:40:35
合ってない。
ってかそんな単純なことじゃない。
940デフォルトの名無しさん:2007/09/24(月) 16:42:58
ちなみにCLRだとvolatileがほんとに必須なことってほとんど無い気がする。
941デフォルトの名無しさん:2007/09/24(月) 16:46:00
だいたいスレッドを監視しなきゃならないなら
Threadを自分で覚えとくんだろうからGCなって関係ないし、
自分で覚えとか無いなら使わないんだろうから、
Thread自体がどうだろうがスレッドがきちんと動いてるならどうでもいいし
何が怖いのかわからない。
942デフォルトの名無しさん:2007/09/24(月) 17:14:13
>>938
更新スレッドが一つでもあれば参照スレッドにおいても一般に同期は必要。
参照スレッドだけならvolatileも同期機構も不要。

そんな難しいことじゃないんでどういう時にどんな問題が起こりうるか自分で考えてみれ。
943デフォルトの名無しさん:2007/09/24(月) 17:20:22
volatileって単にコンパイル時の最適化を抑制するだけじゃないのん?
944デフォルトの名無しさん:2007/09/24(月) 17:23:03
>>943
それはCの話でC#のvolatileはメモリバリアの意味をちゃんと持ってるよ。
945デフォルトの名無しさん:2007/09/24(月) 17:48:25
64ビット値の読み書きを複数スレッドから効率よくやるいい方法って無いかいな?
64ビットを32ビット単位じゃなくアトミックに扱えればいいだけなんだが。

javaと違ってvolatileではできないってかつけれられないし、
Interlocked.ReadとInterlocked..Exchangeはなんか大げさってか重い。

例えばファイル更新時刻のチェックを行う場合に、毎回ファイル情報をリフレッシュすると無駄が多いので、
例えば前回チェックから1秒以上立ってたら再度チェックを行いたいような場合、
チェック時のDateTime(もしくはそれのTicks値)をフィールドに覚えておいて、
チェック前にDateTime.Nowと比較して1秒以上経過してるか確認したい。
経過してるなら実際のファイル更新時刻チェックを行って、ファイルの再読み込みなど。

この、現在時刻と前回チェック時刻を比較する際に、情報が64ビットなので
64ビットをアトミックに扱えない(32ビット環境の場合)。
単純にやるならlockでいいんだけど、64ビット環境とかだとそもそも不要なのでなんか悔しい。
かといってこれのチェックだけのためだけにInterlocked何回も使うと、もはやlock一発の方が効率よさそう。

IntPtrを調べて64ビットなら何もしない、32ビットならlockってやるか、
もう単純にlockするだけが結局一番いいんだろうか…
946デフォルトの名無しさん:2007/09/24(月) 17:58:53
Int64で十分。そんなことに拘るならC#なんか使うな。
947デフォルトの名無しさん:2007/09/24(月) 18:05:42
>>945
CLRがアライメント考慮しないから
Interlockedクラスのlong引数版は使うなって書いてあるよ。Jeffery本に。

64bit値をプロパティにして読み書きを一ヶ所で行うようにして
そこでlockなりなんなりやっておけば良さそうな気はするけどね。
負荷はどうでもよくて、そうしておいた方が
あとでリファクタリングしやすそうという程度の理由だけど。

個人的にはファイル情報なんか見に行ってファイルアクセスが発生したときの
何百万クロック単位のブロックの方が気になるかな。
948デフォルトの名無しさん:2007/09/24(月) 18:30:24
>>947
その何百万クロックを防ぐために二重チェックするという話なのでは。
と一応つっこんでおく。本題とはあまり関係ないけど。
949デフォルトの名無しさん:2007/09/24(月) 18:32:03
>>945
C# なんだし、FileSystemWatcher 使えば?
950デフォルトの名無しさん:2007/09/24(月) 19:16:58
>>947
>CLRがアライメント考慮しないから
>Interlockedクラスのlong引数版は使うなって書いてあるよ。Jeffery本に。

書いてあるねえ。
これってマジ?
でもあの本に書いてあることで間違ってることってそうそうなさそうだし、
わざわざ書いてあるってのはやっぱりそうなんだよねぇ?
いまいち納得いかないんだが。
951デフォルトの名無しさん:2007/09/24(月) 19:19:20
>>946
えーと?
952デフォルトの名無しさん:2007/09/24(月) 19:37:06
953デフォルトの名無しさん:2007/09/24(月) 20:18:04
>>950
Jeffreyだたな。スマソ。

CLI仕様読んでみたけど、8byte値はnative intと同じアライメントって書いてあるね。
>>952のMSDNマガジンの記事で、
「32bit環境ではlongに対するInterlocked APIはやばい。64bit環境でもお勧めしない」
って書いてあるのは、CLI仕様からすれば確かに納得か。
一応64bit環境なら動くはずだけど適度に恐怖しとけと。

しかしこれStructLayoutでレイアウト指定されたフィールドに対して
Interlocked API使ったりするってパターンでも起きうるな。
コンパイルエラーでも検出できないからやっかいかもね。
954デフォルトの名無しさん:2007/09/24(月) 22:38:48
なに、Interlockedって重いの? なんか意味ねーな
そしてlongじゃ使っちゃいけないの?
どうなってんのよ
955デフォルトの名無しさん:2007/09/24(月) 22:40:28
>>954
重くはないというかむしろ最速。
956デフォルトの名無しさん:2007/09/24(月) 22:48:06
>>952
英語だらけで全部読めなかったけどどう解釈したらいい?
32bitCPUでlongのInterlockedを使うと
1. 実は不可分の処理にならない。
2. 実行時にバウンダリー関係の例外になる。
3. なかでこっそりlockを使っていて実は遅い。
957デフォルトの名無しさん:2007/09/24(月) 22:55:38
なに、32ビット環境だと64ビット変数がおかしな感じで割り当てられることが
あるってことなの?
普通のWindows環境でもダメ?
958デフォルトの名無しさん:2007/09/24(月) 23:07:17
>なに、Interlockedって重いの? なんか意味ねーな

何言ってんの?
重いに決まってるだろう、状況によってかなり違うが。
でもその他の同期機構を使うよりは軽い。

でも競合の無いlockはイメージよりはかなり軽い。
Interlocked2回分レベル。
だからInterlockedを何回も使ってるとlockの方がましということもある。

まあ64ビットで使えないのはちょっとどうかと思うけど。
959デフォルトの名無しさん:2007/09/24(月) 23:23:39
Int32使ってロックして
中でInt64を好きに使ったらいいんじゃないの
960デフォルトの名無しさん:2007/09/24(月) 23:29:10
InterlockedったってCPUが持ってるアトミックな更新命令とかを使うだけだろ
重いわけないんじゃねえの
lockが軽いんだろ
961デフォルトの名無しさん:2007/09/24(月) 23:29:31
そこまでするなら普通にロックするだろ。
めちゃめちゃパフォーマンス重視なら知らんけど。
962デフォルトの名無しさん:2007/09/24(月) 23:31:01
>アトミックな更新命令とかを使うだけだろ

それが重いんだろうがw
963デフォルトの名無しさん:2007/09/24(月) 23:49:31
>>958
てかlockって内部でInterlocked使ってるよ。
964デフォルトの名無しさん:2007/09/25(火) 00:18:40
結論としてはInterlockedなんざいらねえ、lockで十分ということかな
965938:2007/09/25(火) 00:50:43
首吊って、あの世逝って修行しなおして来ます。
皆さん来世でお会いしましょう〜。

>>940
なんで?
966デフォルトの名無しさん:2007/09/25(火) 01:23:16
>>947
でもそんなの.NET Frameworkのドキュメントの何処にも書いてねぇ!!
おっぱぴー〜(゚з゚)
967デフォルトの名無しさん:2007/09/25(火) 01:30:31
>>956
3が正解。
64bitマシーンではInt32/Int64とも分割不可な操作が可能。
32bitマシーンではInt32のみ可能でInt64はlockを使っている。
オフセット指定の構造体などでバウンダリーをまたがるケースもlockを行っていると予想できる。
それでMSDNのこの記述。
>したがって、32 ビットのシステムでスレッド セーフにするためには、
>64 ビット値へのすべてのアクセスを Interlocked クラスのメンバを使用して行う必要があります。

ロックを避けるためにInterlockedを使いたいなら、内部でLockが発生しないように注意する必要がある。
968デフォルトの名無しさん:2007/09/25(火) 01:37:09
>それでMSDNのこの記述。
>>したがって、32 ビットのシステムでスレッド セーフにするためには、
>>64 ビット値へのすべてのアクセスを Interlocked クラスのメンバを使用して行う必要があります。

これは別の意味でそっていうかそうとは限らんでそ。
lock使って無くてもそうなるのは当たり前。
969デフォルトの名無しさん:2007/09/25(火) 01:39:42
>>963てかlockって内部でInterlocked使ってるよ。

そうかいてるように見えるのは気のせい?
>でも競合の無いlockはイメージよりはかなり軽い。
>Interlocked2回分レベル。
970デフォルトの名無しさん:2007/09/25(火) 01:42:07
>>965
CLR(2.0)のメモリモデルが意外と強力だから。
971デフォルトの名無しさん:2007/09/25(火) 03:17:36
X86では32bitのCPUでもCMPXCHG8Bなど64bitの値をアトミックに扱う命令はあるが、
活用していないということかな?
972デフォルトの名無しさん:2007/09/25(火) 04:29:36
中途半端な汗の知識で語るな
973デフォルトの名無しさん:2007/09/25(火) 12:02:58
てことはJava5とかで導入されたlock-freeなコレクションみたいなのは
.NETでは最初から作れたんだな
というかもうあるのか?
974デフォルトの名無しさん:2007/09/25(火) 12:18:17
ない。
コンカレントライブラリ確か作成中じゃなかったっけ?
それに含まれたりしないのかなと期待してるんだが…
975デフォルトの名無しさん:2007/09/25(火) 12:44:05
>>974
数年内にSoftware Transactional Memory (STM)使ったライブラリが出てきそうな希ガス
MS ResearchにSTMやってる人がいるから調べてみたら?

ttp://channel9.msdn.com/ShowPost.aspx?PostID=232189
976デフォルトの名無しさん:2007/09/25(火) 13:04:51
スレッドセーフなQueue<T>なんかあったら飛び付くな。
977デフォルトの名無しさん:2007/09/25(火) 13:09:51
Queue.Synchronizedはあるのに、Queue<T>.Synchronizedがないのは何で?手抜き?
978デフォルトの名無しさん:2007/09/25(火) 13:19:13
ttp://research.microsoft.com/research/downloads/Details/6cfc842d-1c16-4739-afaf-edb35f544384/Details.aspx

SMXって実は実行時コード生成のたぐいだったんだな。
979デフォルトの名無しさん:2007/09/25(火) 13:25:36
SMXじゃなくてSXMだった。

あと最新は1.1か。
ttp://www.cs.brown.edu/~mph/
980デフォルトの名無しさん:2007/09/25(火) 13:53:12
シンクロラッパー系はやっぱやめたってことじゃなかったっけ?
981デフォルトの名無しさん:2007/09/25(火) 14:00:42
やめたの?
自分でロックしろってこと?
982デフォルトの名無しさん:2007/09/25(火) 14:37:55
983デフォルトの名無しさん:2007/09/26(水) 02:09:16
もう終わりそうですけど、DataGridViewで滑らかに自動スクロールさせるにはどうしたらいいですか?
FirstDisplayedScrollingRowIndexに値を設定すれば自動でスクロールしてくれるけど、ビシッ!とワープしたように動いちゃいます。
ゆっくりというか、滑らかに次の行へ移動したいんですけど、なんかいい方法あるでしょうか?
よろしくお願いします。
984デフォルトの名無しさん:2007/09/26(水) 06:26:11
1ピクセルずつってことか1行ずつってことかどっちだ
985デフォルトの名無しさん:2007/09/26(水) 10:24:27
ビシッ!っとじゃなくてスゥィーッと動いて欲しいんです
986デフォルトの名無しさん:2007/09/26(水) 10:38:04
滑らかに次の行、だからピクセルじゃね?
985じゃまったくわからんけど
987デフォルトの名無しさん:2007/09/26(水) 11:33:10
>>985 もう少しプログラマー的言葉遣いして繰れ・・・('A`)
988デフォルトの名無しさん:2007/09/26(水) 11:37:53
そして死ぬほど使いにくいリストのスムーズスクロールの二の舞に…
989デフォルトの名無しさん:2007/09/26(水) 15:16:02
>>987
同じく萎えた
990983:2007/09/26(水) 18:40:35
まさに
>>985
さんが言ってるような感じなんですが、たとえば
FirstDisplayedScrollingRowIndex++;
だと遷移過程が見えないので、そこをユーザが見えるようにスクロールさせたいということです。
そうするとピクセル単位ということになるんですかね・・・。
ピクセル単位で次の行へスクロールさせるにはどうしたらいいんでしょうか?
DataGridViewのメンバ見ててもどれ使えばいいのかわかりませんでした。
991デフォルトの名無しさん:2007/09/26(水) 18:42:47
ねーよ
992デフォルトの名無しさん:2007/09/26(水) 18:49:12
>>987
案外、985は長嶋茂雄的天才かもしれないじゃないか
993デフォルトの名無しさん:2007/09/26(水) 19:52:05
ヌルっとしたらガッですよ
994デフォルトの名無しさん:2007/09/26(水) 21:08:49
某ツールバーみたいにC#でエクスプローラのツールバーってできるんですか?
C++/CLIとかいうのじゃないと無理なのかなと思うんですが
995デフォルトの名無しさん:2007/09/26(水) 21:10:06
某ツールバーって何だよ。ハゲ
996デフォルトの名無しさん:2007/09/26(水) 21:27:30
997デフォルトの名無しさん:2007/09/26(水) 22:23:08
なるほど、
シェル拡張コンポーネントをマネージコードで(俺以外のやつは)作るな。
でOkですね。ありがとうございました。
998デフォルトの名無しさん:2007/09/27(木) 07:09:19
 
999デフォルトの名無しさん:2007/09/27(木) 07:12:51 BE:738129839-2BP(100)
1000
1000デフォルトの名無しさん:2007/09/27(木) 07:13:42
                               /
          ♪        ,.-r、.        /     一
    r'7ー-..、     _,.,,_    /::::::ヽ!、      ,'   あ  万
   //::::::::::::`ヽ、 ,.:'´:::::::`ヽ/:::::::::::::::::Yi      i   ・   円
   { !::::::::::::::::::::;>'''"´ ̄ `"''<:;::::::::::!」     !   い   と
   }.!:::::::::;ゝ'"´::::::::::::::::::::::::::::::::::::::::ヽ;::::!_!.     |   ・   二
   「/::::::;:':::;::::::::;::::::::::;:::::::;:::::';::::ヽ.:::::::::Y_/     ノ    し  .千
   `ヽ/:::::;':::::/::!:::::::;!::::::ハ::::_!_:::::!::::::!:::!、    /     ・   円
♪   /;'::::::i::::;'::/!-‐/!:::_」 レ'_」_`ハ_レ'::::!:::ヽ. ∠___   て.   く
   /::i:::::::::i::::i/,.'-‐-´   ´  `!__!):::ハ:::::::〉、  i   ・   れ
  ,rく::::ハ;:::/!_;ハ ,.,.     __  ""i::::|::;イ:::';:::/ン'   '、  る.  た
  `'ミ_コ_;ヽi´::!_,i'、    l'´  `; ,.:'!::::!:::!-r'ア´ i    \     ら
    /::::::;'::i::::!:/`iァ.,、..,,__,,. イ::::!::::|/'´「   | l  バン `' 、.,_______
    ;'::::/!::!::::!::::::,.ィ'ヽ、  /ヽ、!::::!:::::;'!  | l l|  人.__
    !::/::::::';|:::::!7´ヽ.ヽ /ム //|:::;!ヽ!_|  /)、    (
    レi:::::::/!::::::!:::::::::V/ ハヘ / レ'_L_ァ'´)' ' ')  Y⌒ ☆ バン
     '、:/ レ、ハ:::::,,..く. - ''"´」二二二二二二二二二二i
     r'",.-/、`ソ´_,,.. - ''"´ |               |
     / '´./i   ソ´       !   これが 素敵な  |
    ;' /;':::ゝイ         |               !
    ! ! i::::::::::';        |     賽 銭 箱   |
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。