C#, C♯, C#相談室 Part54

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

前スレ
C#, C♯, C#相談室 Part53
http://pc12.2ch.net/test/read.cgi/tech/1245150671/

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい
2デフォルトの名無しさん:2009/08/22(土) 12:33:24
関連スレ

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

Visual Studio 2008 Part 17
http://pc12.2ch.net/test/read.cgi/tech/1245309571/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech/1197620454/
3デフォルトの名無しさん:2009/08/22(土) 12:33:52
参考リンク

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

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
4デフォルトの名無しさん:2009/08/22(土) 12:34:07
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html
5デフォルトの名無しさん:2009/08/22(土) 13:26:55
>>1乙!
6デフォルトの名無しさん:2009/08/22(土) 19:41:07
さっそく質問なんですが

VC♯で画面を作っていて、
ListBoxを二つ用意して、ListBox1の項目を選択した場合に、ListBox2に表示されている項目もListBox1の項目に対応したフォーカスが自動でセットされる仕組みにしたいのですがうまくいきません。
例えば、ListBox1に名前を表示させて、ListBox2に誕生日を表示させた場合、名前を選んだら自動的にその名前に対応した誕生日にフォーカスがあたる仕組みを作りたいのです。

それぞれのListBoxに表示するものはXMLファイルから読み取って表示させています。
一応、名前と誕生日はXMLファイルの中で関連付けもしています
7デフォルトの名無しさん:2009/08/22(土) 19:53:33
Ajax的なものをWinFormでしたいのな。
ListBoxが変化したときにイベント起こせばいけそう。
8デフォルトの名無しさん:2009/08/22(土) 20:07:24
バインディングで
ListBoxだとDataSourceか
9デフォルトの名無しさん:2009/08/22(土) 21:13:26
>>6
「うまくいかない」という質問は、ありえないほど酷い。
PCが煙吐いて空の果てに飛び立ったまま戻ってこなくなりました、だって「うまく
いかない」のうちだ。
どううまくいかないのかを書け。

リストボックスの項目選択をプログラム的に行うだけならListBox#SelectedIndex
プロパティに値をセットすれば動くが。
10デフォルトの名無しさん:2009/08/22(土) 21:13:41
>>6 汚いソースでごめんよ。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private const string xmldoc =
@"<?xml version='1.0'?>
<names>
<person name='satou'>2009/01/01</person>
<person name='saitou'>2009/02/01</person>
<person name='sakata'>2009/03/01</person>
</names> ";
private void Form1_Load(object sender, EventArgs e)
{
var doc = XElement.Parse(xmldoc);
var q = from n in doc.Descendants("person")
select n.Attribute("name").Value;
this.lstName.DataSource = q.ToList();
}
private void lstName_SelectedIndexChanged(object sender, EventArgs e)
{
var item = (sender as ListBox).SelectedItem.ToString();
var doc = XElement.Parse(xmldoc);
var q = from n in doc.Descendants("person")
where n.Attribute("name").Value == item
select n.Value;
this.lstBirthday.DataSource = q.ToList();
}
}
11デフォルトの名無しさん:2009/08/22(土) 21:23:32
一応、貼っておくね?
http://www.redout.net/data/osietekun.html
12デフォルトの名無しさん:2009/08/23(日) 00:58:34
おお、皆さんありがとうございます
とりあえず今から試してみます
13デフォルトの名無しさん:2009/08/23(日) 01:46:18
http://d.hatena.ne.jp/kiichi55/20090429/1241021253
ここ参考にMeCab(形態素解析器)呼び出し作ってみたんだけど

1000文字くらいの解析を数万ループしたら
メモリがバカほど膨らんでしまった

GC.Collect();
しても解放されないのでMeCab内で持っているらしいんだけど
こういうのって対策ある?
14デフォルトの名無しさん:2009/08/23(日) 02:30:29
その DLL が解放するための関数を提供してないなら、
DLL 自体をアンロードするしかないんじゃね?
15デフォルトの名無しさん:2009/08/23(日) 02:34:58
>>13
mecab_destroy よんでないんじゃないのか?
16デフォルトの名無しさん:2009/08/23(日) 02:35:36
相互参照は開放するように指示は出せるけど、いつ開放するかは決まらないんじゃなかったけ
17デフォルトの名無しさん:2009/08/23(日) 02:51:03
>14-16
返信どうもです

mecab_destroyは呼んでます
それでも駄目なので困ってたところ

ロード アンロードは時間がかかるので
あまりやりたくないのですが,それしか方法なさそうですか...
18デフォルトの名無しさん:2009/08/23(日) 07:17:53
どうせ目的の処理自体が重いんだからどうでもいいだろ
別プロセスにして標準出力で受けるとかでもよくね
19デフォルトの名無しさん:2009/08/23(日) 07:43:51
>>13
リンク先、PtrToStringAnsi呼ぶ位置がおかしいな
それはともかく手元のVistaでmecab0.98pre2のlibmecabを4000文字10000回ほど
mecab_new2〜mecab_sparse_tostr〜mecab.destroyしてみたが
とくに問題なかった 非プライベートなワーキングセットも含めて
20デフォルトの名無しさん:2009/08/23(日) 09:06:40
>>19
0.97->0.98pre3
バージョン上げることでメモリ問題解決しました
気づかせてくれてありがとうございます

わざわざサンプルまで作っていただいてすみません


アンカー後先逆ですが
>>18
以前までそういう風に組んでたんですが
アンマネージのDLL読み込めることを知ったのでやってみたらこうなった感じです
21デフォルトの名無しさん:2009/08/23(日) 12:55:34
System.Net.Socketsが見つからないため
TcpListenerクラスが使えません。 System.Netはありました。
どうすればいいですか? VC#2008です
22デフォルトの名無しさん:2009/08/23(日) 12:57:34
必要なアセンブリを参照設定して、必要な名前空間を using する。
それだけ。
23デフォルトの名無しさん:2009/08/23(日) 14:30:05
>>22
いえ、それでも見つからなかったのです
24デフォルトの名無しさん:2009/08/23(日) 14:34:23
じゃあアンドレカンドレの「夢の中へ」でも歌っとけ
25デフォルトの名無しさん:2009/08/23(日) 14:43:14
じゃあ、あきらめろよ。
26デフォルトの名無しさん:2009/08/23(日) 15:00:11
>>23
具体的にどんな環境でどんなことやって見つからなかったの?
27デフォルトの名無しさん:2009/08/23(日) 16:10:00
>>23
気合が足りない
28デフォルトの名無しさん:2009/08/23(日) 16:26:12
昨日の>>6で質問した者なんですが>>10さんが書いてくださったソースを基に試してるのですが
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

var doc = XElement.Parse(xmldoc);
var q = from n in doc.Descendants("person")
select n.Attribute("name").Value;
var lll = from a in doc.Descendants("aaa")
select a.Attribute("name").Value;
this.listBox1.DataSource = q.ToList();
this.listBox2.DataSource = lll.ToList();
}
private const string xmldoc =
@"<?xml version='1.0'?>
<names>
<person name='satou'>2009/01/01</person>
<person name='saitou'>2009/02/01</person>
<person name='sakata'>2009/03/01</person>
<person name='sakamoto'>2009/01/01</person>
<aaa name='2009/01/01'></aaa>
<aaa name='2009/02/01'></aaa>
<aaa name='2009/03/01'></aaa>
<aaa name='2009/04/01'></aaa>
</names> ";
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
このようしてにXMLから表示させる時にpersonの名前と関連させた誕生日だけを表示させるのではなく、まず初めに名前一覧と誕生日一覧をそれぞれのListBoxに表示させてから名前を選ぶとそれに関連する誕生日にフォーカスが移るようにしたいのですが、
この場合personの誕生日をみてaaaの誕生日と関連付けをしてフォーカスを移させることは可能なのでしょうか?
29デフォルトの名無しさん:2009/08/23(日) 19:12:59
無理無理。なにせpersonとaaaを関連づける情報が無いじゃないか。
エスパーするとaaaのnameが参照キーでテキストノードが関連するデータのつもりかもしれないけど。
名前ならいざしらず誕生日をキーにする気?(名前も同じ名前があったらどうする)

あくまで一例だけど、こんなのはどう?
1.DataSet 配置して、その中に persons テーブル作る。
2.persons の中に name と birthday 項目を作る。
3.二個のリストボックスの DataSource に配置した DataSet を設定。
4.二個のリストボックスのそれぞれの DisplayMember に "persons.name" と "persons.birthday" を設定。
5.DataSet に以下のようにデータを食わせる。
string data
= @"<?xml version='1.0' standalone='yes'?>
<data>
<persons><name>satou</name><birthday>2009/01/01</birthday></persons>
<persons><name>saitou</name><birthday>2009/02/01</birthday></persons>
<persons><name>sakata</name><birthday>2009/03/01</birthday></persons>
<persons><name>sakamoto</name><birthday>2009/04/01</birthday></persons>
</data>";
public Form3() {
InitializeComponent();
dataSet1.ReadXml(new StringReader(data));
}
これで名前を選択すると誕生日、誕生日を選択すると名前が自動にセレクトされる。

他の関連付けたい情報は、誕生日と同じようにpersonsテーブルに入れて誕生日と同じように関連付け。
ラベルとかに選択されてるデータを連動表示させたいなら
label1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dataSet1, "persons.birthday", true));
という感じ。
30デフォルトの名無しさん:2009/08/24(月) 14:39:51
興味のない方はすみません(スルーお願いします。)
新しくコンテストを来年開きたいと思っています
プログラマー(ゲーム・ツール・)の方は
http://pc12.2ch.net/test/read.cgi/tech/1221701297/l50
のスレに来てもらえるとうれしいです。
運営も募集しています。
↓のような感じでコンテストを開始する予定です。
http://219.113.110.143/
31デフォルトの名無しさん:2009/08/24(月) 14:48:00
なぜHSP・・・
32デフォルトの名無しさん:2009/08/24(月) 14:51:24
つーかIPアドレス直でやるなよ。
ちょっとDDNS登録すりゃ済む話じゃないか
33デフォルトの名無しさん:2009/08/24(月) 15:28:15
そんなスレがム板にあったのか。
ゲ制作板でやるべきじゃね?
34デフォルトの名無しさん:2009/08/24(月) 19:22:24
これ誰得・・・?
豪華商品にふいたw
35デフォルトの名無しさん:2009/08/24(月) 21:01:45
リアル中学生だな……
36デフォルトの名無しさん:2009/08/24(月) 21:31:40
中古w
37デフォルトの名無しさん:2009/08/25(火) 23:23:56
treeview(4階層)を最初はエクスパンドしていない状態にし、
検索ボックスで該当した4レベル目のノードとその親ノードと祖父ノードのみを表示させたいときはどうやるのでしょうか?
38デフォルトの名無しさん:2009/08/26(水) 00:02:47
気合い
39デフォルトの名無しさん:2009/08/26(水) 00:08:48
ふらっとの方でレスもらってたろw
40デフォルトの名無しさん:2009/08/28(金) 11:19:41
カスタムコントロール作るのは大変???????????
41デフォルトの名無しさん:2009/08/28(金) 11:40:09
そんな質問をするレベルなら大変
42デフォルトの名無しさん:2009/08/28(金) 13:21:36
ツリービューを開いたのを、一度完全に折り畳むには、どういうメソッドを設けたらよいですか?
43デフォルトの名無しさん:2009/08/28(金) 13:35:55
WinForm?
CollapseAll 呼び出すだけだが
44デフォルトの名無しさん:2009/08/28(金) 14:39:49
>>43
A
B1
C1
B2
C2
C3
というツリーがあり、これが全て畳んだ状態でC3ノードを検索したとき、
A1
B2
C3
のみを表示させることはできますか?
45デフォルトの名無しさん:2009/08/28(金) 14:42:50
>>43
A
B1
C1
B2
C2
C3
というツリーがあり、これが全て畳んだ状態でC3ノードを検索したとき、
A1
B2
C3
のみを表示させることはできますか?
46デフォルトの名無しさん:2009/08/28(金) 14:45:08
Aが開かれてる時その子ノードのB1が表示されてなかったらおかしいだろ
47デフォルトの名無しさん:2009/08/28(金) 15:02:12
表示するようにすればいいじゃん
48デフォルトの名無しさん:2009/08/28(金) 15:42:47
元のツリーを変更してもいいけど、検索結果閉じた時に面倒なんで
新しいツリー用意してA1->B2->C3だけ表示すればいいじゃん
49デフォルトの名無しさん:2009/08/28(金) 15:54:04
同じレベルのノードは、常に表示されてしまうわけか…。
50デフォルトの名無しさん:2009/08/28(金) 17:18:31
データセットの特定のレコードを削除するには、どう記述すればいいですか?
51デフォルトの名無しさん:2009/08/28(金) 19:48:07
dataSet.Tables[0].Rows.Remove
52デフォルトの名無しさん:2009/08/28(金) 20:09:18
>>51
ありがとう(*^_^*)。
53デフォルトの名無しさん:2009/08/28(金) 21:30:07
( object sender , EventArgs e )という形の引数が取られる形をよく見るのですが
この引数に何かが代入(参照)するコードはどこにあるのでしょうか。
senderには
54デフォルトの名無しさん:2009/08/28(金) 21:30:58
ごめんなさい、途中送信してしまいました。
55デフォルトの名無しさん:2009/08/28(金) 21:31:58
senderにはそのなのとおり呼び出し元が渡されます
キャストでもして使えばいいじゃないんでしょうか
56デフォルトの名無しさん:2009/08/28(金) 21:49:55
>>55
お答えありがとうございます。

sender = オブジェクト名 ;のようなコードを書かなくても
呼び出し元が自動で渡されるという理解でいいのでしょうか?
57デフォルトの名無しさん:2009/08/28(金) 21:56:29
自動も何も引数って呼び出す側が渡すものだから。
誰が呼び出してるかというと,イベントの発生源が呼び出してる。
つまりイベントの発生源がそのイベントを呼び出すときにはsenderにthisを渡してるわけ。
58デフォルトの名無しさん:2009/08/28(金) 22:13:24
>>56
http://www.akadia.com/services/dotnet_delegates_and_events.html
Clockのところが参考になるよ。
59デフォルトの名無しさん:2009/08/28(金) 22:41:25
方法 : .NET Framework ガイドラインに準拠したイベントを発行する (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/w369ty8x.aspx

この辺を紹介しておけばいいような
60デフォルトの名無しさん:2009/08/28(金) 23:04:05
一度終了したスレッドをもう一回再開するにはどうすればいいですか?
61デフォルトの名無しさん:2009/08/28(金) 23:06:58
できないよ
62デフォルトの名無しさん:2009/08/29(土) 00:41:20
コンソールって何ですか。
63デフォルトの名無しさん:2009/08/29(土) 00:53:03
メンソールみたいなもんだ。
64デフォルトの名無しさん:2009/08/29(土) 01:02:14
チェックボックスの外観をラジオボタンと同じ丸型にできると聞いたことがあります。
どのようにすればできるのでしょうか。
appealanceプロパティだと、コマンドボタンの形状になってしまいます。
65デフォルトの名無しさん:2009/08/29(土) 01:15:54
>>64
もうこれと同じ質問を今週だけで3回見たが、
どっかの学校の夏休みの宿題か何かなのかね。

それとも同じ奴が粘着してるのか?
66デフォルトの名無しさん:2009/08/29(土) 01:16:42
>>64
やめろ。チェックボックスは四角のままにしとけ。
67デフォルトの名無しさん:2009/08/29(土) 01:31:34
こんな宿題を出す学校は存在しないと思いたい…
UIデザインとしては最悪じゃん。
68デフォルトの名無しさん:2009/08/29(土) 01:43:48
ラジオボタンは複数の選択肢から選らばせるとき…
チェックボックスは単純に有無を示すとき…
という典型的な使用方法があるのだから。
チェックボックスを丸にすると逆に不気味。
69デフォルトの名無しさん:2009/08/29(土) 01:47:35
普通に丸にするやり方を調べて来た生徒は落第

「丸にする理由が無くまた機能を視覚化するデザインとして最悪でうんぬん」
と課題をやらない理由をレポートしてきた生徒は合格
70デフォルトの名無しさん:2009/08/29(土) 01:58:33
C#をマスターするために読むべき、すばらしい本を教えてください。
入門書は読み終えました。
71デフォルトの名無しさん:2009/08/29(土) 02:20:30
ぐぐれ
72デフォルトの名無しさん:2009/08/29(土) 02:24:02
入門書読み終わったのなら、理解度を確認するためにも小規模なアプリケーション作っとけ
本読んで理解したつもりになりたいだけなら作んなくてもいいけど
73デフォルトの名無しさん:2009/08/29(土) 02:40:29
>>69
そこまで頭が働く奴は、独立SEとして食べていけるだろうね。
74デフォルトの名無しさん:2009/08/29(土) 02:44:08
>>70
俺のお勧めは、

作って覚えるV…C#2008
秀和システム

だね。Express向きだけど、家計簿を作りながらイメージを掴める。
他の本でアプリケーション作成の一連の作業を例示してくれている本は知らない。
7556:2009/08/29(土) 02:44:14
>>57さん
つまり例えばpaintイベントなどにも見えてはいないけれども、senderに実引数(となるオブジェクト)を渡すような
コードが書かれているとことなのですね。

>>58さん >>59さん
参考になりました。

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

76デフォルトの名無しさん:2009/08/29(土) 10:05:47
教えてください。
propertyGridで表示しているプロパティの名称一覧は取得できますか?
できるのであれば、どのようにすればよいのでしょうか?
77デフォルトの名無しさん:2009/08/29(土) 10:08:00
TypeDescriptor.GetProperties
なんだってそんな面妖なことを
78デフォルトの名無しさん:2009/08/29(土) 10:13:26
>>77
ありがとうございます

プロパティウィンドウに表示されている順番にすべてを取得したくて
propertyGridに表示させれば簡単に取得できるのかな?と調べてました
79デフォルトの名無しさん:2009/08/29(土) 13:24:40
おまえらいくつ?
80デフォルトの名無しさん:2009/08/29(土) 13:34:41
>>79
33歳独身。現在、社内SE。
4月入社だがついていけなくて、毎日が地獄。
81デフォルトの名無しさん:2009/08/29(土) 15:38:05
>>79
独り身
82デフォルトの名無しさん:2009/08/29(土) 16:06:20
C#は実行ファイル(中間コード)が見えると聞きました。
結構簡単に見えてしまうんですか?
83デフォルトの名無しさん:2009/08/29(土) 16:10:20
↑すいません日本語が変でした。

C#は実行ファイル(中間コード)からソースコードが容易に解析できると聞きました。


84デフォルトの名無しさん:2009/08/29(土) 16:14:33
>>83
reflectorでググれ
85デフォルトの名無しさん:2009/08/29(土) 16:15:00
うん、.NetでもJavaでも、中間コードを見るツールは標準で入ってる。
86デフォルトの名無しさん:2009/08/29(土) 16:34:59
難読かすればだいぶ見にくくなる。
それかましとけば十分。
87デフォルトの名無しさん:2009/08/29(土) 17:18:09
>>81
何歳?
88デフォルトの名無しさん:2009/08/29(土) 17:21:54
88
89デフォルトの名無しさん:2009/08/29(土) 17:23:43
89
90デフォルトの名無しさん:2009/08/29(土) 18:27:21
僕3さい!
91デフォルトの名無しさん:2009/08/29(土) 18:39:04
前に、デリケートに関する質問があったが、
結局デリケートは、サブルーチンを呼ぶサブルーチンを呼ぶサブルーチンを1オブジェクトのように見立てるようなもの?
92デフォルトの名無しさん:2009/08/29(土) 18:40:26
ふらっとの方で質問した方がいいんじゃね?
93デフォルトの名無しさん:2009/08/29(土) 18:48:36
それから delegate な
94デフォルトの名無しさん:2009/08/29(土) 19:06:59
サブルーチンなんて言葉を聞いたのはドクター宮永以来だ
95デフォルトの名無しさん:2009/08/29(土) 19:21:00
デリケートゾーン?
96デフォルトの名無しさん:2009/08/29(土) 20:01:43
覚えたての頃、得意げにサルブーチンって言ってたの思い出して赤面した
97デフォルトの名無しさん:2009/08/29(土) 20:08:25
サブルーチンって死後??????
私は34歳。COBOL歴5年ののち、金融機関の内勤5年…のブランクがあるからか。。。
98デフォルトの名無しさん:2009/08/29(土) 20:10:30
昔のFORTRANなら「サブルーチン副プログラム」というのが正しい。
99デフォルトの名無しさん:2009/08/29(土) 20:13:30
>>94
今は、なんて言っているの?
共通プログラムとか?
100デフォルトの名無しさん:2009/08/29(土) 20:16:41
「C#の初心者や修行者あつまれ!!!!!」in 大阪城公園
なんてイベントを企画したら、みんな来てくれるかな?
私は関西在住なので関西でしか企画できないですが
(+_+;)。
101デフォルトの名無しさん:2009/08/29(土) 20:19:31
行く分けねーだろ馬鹿
102デフォルトの名無しさん:2009/08/29(土) 20:20:16
>>101
そんな言い方ないだろ。てめえの面が見てみたいよ。
103デフォルトの名無しさん:2009/08/29(土) 20:31:28
>>102
見せるわけねーだろカス
104デフォルトの名無しさん:2009/08/29(土) 20:32:49
>>103
どんだけひねくれているんだよ。
大手でプロジェクトリーダーでもやってるのか?
105デフォルトの名無しさん:2009/08/29(土) 20:55:24
何でひねくれてると大手でプロジェクトリーダーやってることになるんだよw
106デフォルトの名無しさん:2009/08/29(土) 21:18:33
それが彼の常識だから
107デフォルトの名無しさん:2009/08/29(土) 21:34:50
ひねくれている奴がリーダーだったりするけどね…。
○○○データとか。
108デフォルトの名無しさん:2009/08/29(土) 22:11:16
>>107
ひねくれているのはお前だろうが。
風呂屋でひとっ風呂浴びて頭を温めてこい。
109デフォルトの名無しさん:2009/08/29(土) 22:29:35
dataはいい評判聞かないね
N,F,Hのほうがまだまし
110デフォルトの名無しさん:2009/08/29(土) 22:40:57
メーカーとSI一緒にすんなハゲ
111デフォルトの名無しさん:2009/08/29(土) 22:41:40
ひねくれよばわりする前に、下請けに甘んじている自分の人生を省みろよ。
112デフォルトの名無しさん:2009/08/29(土) 22:44:47
そのアホ話、いつまで続けるつもりだよ。
しかし、無能な奴ほど被害妄想が激しいのはこの業界もう鉄板といっていい法則だな。
113デフォルトの名無しさん:2009/08/29(土) 22:48:47
マ板でやれ!だな
114名無しさん@そうだ選挙に行こう:2009/08/30(日) 09:10:18
おいおい大学生の俺にも住処をあたえてくれよ
115名無しさん@そうだ選挙に行こう:2009/08/30(日) 09:21:23
就職板でやれガキ
116名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:49:07
ニートの俺にも(ry
11783:2009/08/30(日) 20:07:28
>>84-86
詳しく教えていただき、ありがとうございました。
118デフォルトの名無しさん:2009/09/01(火) 04:18:28
.Net2.0で開発してるんだけども、DictionaryのValuesをIListを受け入れるメソッドに使いたい。
Listに代入してしまうのが楽だけど、Valuesの変更が即反映させるようにしたい場合、
IListを継承した独自クラスを作ってそれに入れるしかない?
119デフォルトの名無しさん:2009/09/01(火) 04:22:29
変更が即反映する,ってどういう感じ?
120デフォルトの名無しさん:2009/09/01(火) 04:43:23
Dictionary<int,char> dic = new Dictionary<int,char>()
{
  { 0, 'a' },
  { 1, 'b' },
};

***List<char> lis = new ***List<char>(dic.Values);

dic.Add( 2, 'c');

こんな処理の時、lis[2]に'c'が入ってて欲しいのですよ。
とりあえずIListを継承したクラスを用意して実現はできたけど、
あまりにも汎用的なので何かクラスが既にあるような気がしてならない。
121デフォルトの名無しさん:2009/09/01(火) 04:53:07
Dictionary<TKey, TValue>.ValueCollectionが
ICollection<T>しか実装せずIList<T>を実装しないのには理由があるわけで、
IList<T>はICollection<T>より限定的なリストなので
そんなの汎用的に作れと言われても無理。
122デフォルトの名無しさん:2009/09/01(火) 05:59:04
FUNC<DIC,ILIST>とかで毎回作るのだめ?
123デフォルトの名無しさん:2009/09/01(火) 08:17:22
IListを実装するってことは要素の順番に意味があるってこと
だから要素の順番を全く保証しないDictionaryがIListを実装するのは不適切
124デフォルトの名無しさん:2009/09/01(火) 09:29:31
Javaには標準でLikedHashMapがあるのに・・
C#まじ使えねーな
125デフォルトの名無しさん:2009/09/01(火) 09:38:22
>>120の例ではSortedList<TKey, TValue>が使える
SortedList<TKey, TValue>.ValuesはIList<TValue>型
126デフォルトの名無しさん:2009/09/01(火) 11:20:07
>>124
ばかだろあんた。
そりゃList違いだ。
127デフォルトの名無しさん:2009/09/01(火) 12:15:44
(・∀・)クスクス
128デフォルトの名無しさん:2009/09/01(火) 16:08:40
キャスト不要のenumみたいなのってありますか?
全部int型みたいな
129デフォルトの名無しさん:2009/09/01(火) 16:15:53
こんなふうにする
struct MyEnum : IEquatable<MyEnum>, IComparable<MyEnum> {
public static readonly MyEnum One = 1;
public static readonly MyEnum Two = 2;

private int value;
private MyEnum(int value) { this.value = value; }
public static operator int(MyEnum value) { return value.value; }
public static operator MyEnum(int value) { return new MyEnum(value; }; }
//以下略(インターフェイスメンバや演算子などを実装)
}
130129:2009/09/01(火) 16:17:15
訂正
public static implicit operator int(MyEnum value) { return value.value; }
public static implicit operator MyEnum(int value) { return new MyEnum(value; }; }
131デフォルトの名無しさん:2009/09/01(火) 16:18:12
全部定数でいいじゃん
132デフォルトの名無しさん:2009/09/01(火) 16:35:53
>>129-131
ありがとうございます
全部定数にしますっ!
133デフォルトの名無しさん:2009/09/01(火) 16:48:43
ワロタ
134デフォルトの名無しさん:2009/09/01(火) 20:16:19
そもそも:intなenumは普通にキャストなんかせずにintとして扱えると思うんだが
135デフォルトの名無しさん:2009/09/01(火) 20:51:54
扱えません
136デフォルトの名無しさん:2009/09/01(火) 21:14:22
ん?と思ったが、そうかキャスト要らないのはenumな型の変数に整数を入れる場合であって
逆ではなかったのか。

冷静に考えるとこれって本来逆であるべきじゃないのかね。
まあ深くは考えてないんでいろいろ何か事情があるんだろうが。
137デフォルトの名無しさん:2009/09/01(火) 21:17:33
試してから言えよ
どっちもキャストが必要
138デフォルトの名無しさん:2009/09/01(火) 21:21:01
>>137
棚上げクンって恥ずかしいなw
139デフォルトの名無しさん:2009/09/01(火) 21:42:54
>>138は0しか試してないのか?
140デフォルトの名無しさん:2009/09/01(火) 21:57:52
>>137
すまん確かに試さずに言ってた。

そもそもenumを数値的に扱うことをほとんどしないのと、
あとVBも触るんでそっちの知識がゴッチャになってた。
141デフォルトの名無しさん:2009/09/01(火) 22:00:32
0からのみ暗黙に変換できるのはcharも同じだな
変換というよりは0は数値じゃなくて特別な記号みたいなものとして扱われてるんだろうな
142デフォルトの名無しさん:2009/09/01(火) 22:20:47
しかし、逆はともかくenumを基になってる整数型として暗黙的に扱えても
そんなに害にも落とし穴になるとも思えないけど、なんで明示的キャストが
強制されるルールになってるんだろう。
143デフォルトの名無しさん:2009/09/01(火) 22:28:49
特に必要もないのにenumを数値として意識したり明示的に型指定することは
非推奨とされてるからなあ
144デフォルトの名無しさん:2009/09/02(水) 08:02:47
>>63
土曜日からずっとメンソールに関して調べましたがタバコ関係の情報しか得られませんでした。
もっとヒントください
145デフォルトの名無しさん:2009/09/02(水) 08:30:45
コンソメみたいなもんじゃね
146デフォルトの名無しさん:2009/09/03(木) 00:53:10
めんそーれー
147デフォルトの名無しさん:2009/09/04(金) 08:40:19
麺魂
148デフォルトの名無しさん:2009/09/04(金) 16:36:57
おまいらスピン付数値入力コントロール作るとしたらテキストボックスから派生させる?それともcompositionつかう?
149デフォルトの名無しさん:2009/09/04(金) 16:54:27
作らない
150デフォルトの名無しさん:2009/09/04(金) 21:35:41
コンポジション
151デフォルトの名無しさん:2009/09/04(金) 22:10:27
NumericUpDownが使えない環境でってこと?
152デフォルトの名無しさん:2009/09/04(金) 22:11:44
コンポジションっていうか、この場合は普通にユーザーコントロールでしょ。
153デフォルトの名無しさん:2009/09/04(金) 22:14:16
コンポジションが使いやすい
154デフォルトの名無しさん:2009/09/04(金) 23:23:30
>151
いや、一般的な設計の話で。
コンポジションの方が作る分には良いんだが、使う側としてはテキストボックスでもあった方がプロパティ設定出来て良いものか。
んでも余計なものない方がよい気もする。
155デフォルトの名無しさん:2009/09/04(金) 23:29:24
スピン付数値入力コントロールならキャレット関連はあんまり意味無いだろ

それ以外でTextBox固有の機能で特に必要なものなんてあるか?
156デフォルトの名無しさん:2009/09/04(金) 23:33:22
主に外環の設定だな。
157デフォルトの名無しさん:2009/09/04(金) 23:35:21
テキストボックスのように使うのなら継承だ
158デフォルトの名無しさん:2009/09/04(金) 23:40:22
んでテキストボックスとして使うことがそれほどあるのかって問題だな。
用途としては違うとも思うけれどかぶってるところもある。
159デフォルトの名無しさん:2009/09/05(土) 00:05:53
だからこういう場合はユーザーコントロールにするんだよ。
本当にコントロールを自分で作ったり拡張したことがある奴が
経験に基づいて継承だのコンポジションだの言ってるのか?

やってみろよ実際。
そんな方法じゃめんどくさくてやってられないから。
160デフォルトの名無しさん:2009/09/05(土) 00:52:06
ネタで言ってるんだと思ってた
161デフォルトの名無しさん:2009/09/05(土) 05:04:28
ユーザーコントロールとカスタムコントロールの違い
162デフォルトの名無しさん:2009/09/05(土) 06:51:04
>>159
ユーザーコントロールにコントロールを乗せて行くという方法をコンポジションと
言うんだと思っていたが?普通に合成という意味だから。
拡張して作るカスタムコントロールはどう考えてもコンポジットではない。
163デフォルトの名無しさん:2009/09/05(土) 12:44:32
それならユーザーコントロールって言おうよ。
ユーザーコントロールはオブジェクトコンポジションより意味が狭いのだから。
ユーザーコントロールはコンポジョションだが、逆は違うよ。

普通は前提条件なしで「コンポジション」と言えば、NativeWindow的なものを想像するぞ。
164デフォルトの名無しさん:2009/09/05(土) 19:38:25
俺はオブジェクト指向的な包含の事かと思ってた
165デフォルトの名無しさん:2009/09/05(土) 21:18:59
同じだよ
数値入力コントロールを作るためにユーザーコントロールにテキストボックス置いたら
それはオブジェクト指向的な包含
166デフォルトの名無しさん:2009/09/05(土) 22:10:20
未経験でC#アプリの製作をしているが、
汎用系の開発しかしたことがなかったから、GUI設計をしたことがない
(-_-;)。
どういう点に心がけたらいいんだろ。
もう50回くらいやり直しをしまくって、
フォームを分けてみてはやはりパネルにしてみたり、
縦スクロールにしてみては横にしたり…。
未だに使いやすいフォームができない。
担当者は俺だけ。
どうすりゃいいんだよ…。先が見えない。
167デフォルトの名無しさん:2009/09/05(土) 22:12:40
諦めちゃえばいいじゃん
168デフォルトの名無しさん:2009/09/05(土) 22:13:12
馬鹿でも簡単に使えるように気をつけてるな
169デフォルトの名無しさん:2009/09/05(土) 22:19:55
>>168
それが一番大事だね。
170デフォルトの名無しさん:2009/09/05(土) 22:30:23
・選択肢を少なくする。
 →1画面内にあるコントロールを少なくする。
・クリック回数を少なくする
 →処理を完了するまでのステップ数を少なくする。

この相反する2つの調度良いバランスを求める。
後は既存の似た処理をするツールのUIをオマージュ。
開発経験者か、UIを発注した事ある人に意見を聞くのがいいんだろうけど。
171デフォルトの名無しさん:2009/09/05(土) 22:39:39
c#上からpingして疎通確認するアプリ作って xp上からは動いたんですが

2003にいれたら他のマシンへのping完了しないのはどこらへんがまずいんでしょうか
ちなみにcmd.exe起動してping打つと普通に他のマシンへも通ります。

なんかファイアウォールとかいわれたけど
windosのファイアウォールってなにもいわないからなどこで止められてるのかわかんないし
もうつかれたよ・・・。
172デフォルトの名無しさん:2009/09/05(土) 22:41:52
ファイアウォールの例外に追加したら?
173デフォルトの名無しさん:2009/09/06(日) 00:25:48
>>166
作るのは初めてでも、使ったことくらいはあるだろ。
そこから何か学ばなかったか?
174デフォルトの名無しさん:2009/09/06(日) 00:27:11
GUIデザインの草案は紙とペンで作るのがいいとおもうまう
175デフォルトの名無しさん:2009/09/06(日) 00:45:01
はじめまして、ちょっと質問させてください。
DataGridViewで列ヘッダをクリックして並び替える際に、行を選択していたりするとこの選択状態の位置がそのまま維持されてしまい、
並び替えられた(選択されていた)行へ追従しません。

これを、並び替えたときに行とともに選択状態の位置が移動するようにするにはどうしたらよいでしょうか?
176デフォルトの名無しさん:2009/09/06(日) 08:43:02
今まで見てきたGUIで、感動したものを教えてください。
サイトでも何かのコントロールでもいいです。
177デフォルトの名無しさん:2009/09/06(日) 09:00:38
ユーザーインターフェイスデザイン―Windows95時代のソフトウェアデザインを考える

でも買え。って、About Face の 3 が出てるのな。ぽちっとしておこう。
178デフォルトの名無しさん:2009/09/06(日) 09:13:40
>>176
Windows Vista 版 Explorer のアドレスバー。
パンくず型リストの理想型だと思う。
ただし、1 つのコントロールが複数の機能を兼ねているので、
賛否が分かれそうだが。

あと FL Studio の GUI 全般。
複雑になりがちな DAW というジャンルで、画面遷移や
ウィンドウ数の増大を上手く回避してる点に感心してる。
179デフォルトの名無しさん:2009/09/06(日) 09:48:42
EclipseのPerspectiveの機能はVSにもほしい
180デフォルトの名無しさん:2009/09/06(日) 11:03:11
不景気で6月末でMSDNサブスクリプション更新しなかったのにWindows7製品板が落とせるんだけど。
後から請求きたりするの?

問い合わせてみて「手続き上のミス」とか言われて終わっちゃうのも残念なんで問い合わせしてないんだけど。
181デフォルトの名無しさん:2009/09/06(日) 12:15:02
Pro は落とせるみたい。
5年以上前に Expire したアカウントでも落とせた。
182デフォルトの名無しさん:2009/09/06(日) 13:11:15
>>179
Eclipseのパースペクティブと、VSのソリューションがあると自分的には完璧だなぁ。
ソリューションは機能であってUIじゃないけど。

GUIで最も感動したのはポップアップメニューというかコンテキストメニュー。
オブジェクト選択して右クリックで動詞選ぶなんて最高だ。
183デフォルトの名無しさん:2009/09/06(日) 13:24:59
VSのソリューションがEclipseのWorkspaceに相当するんじゃないのかな?
184デフォルトの名無しさん:2009/09/06(日) 14:04:54
だってワークスペース切り替えは-dataで起動時指定だしなぁ。
いいとこProjectsレベル。
185デフォルトの名無しさん:2009/09/06(日) 14:11:31
solutionはライブラリ作りつつアプリ作ってる時とか便利
186デフォルトの名無しさん:2009/09/06(日) 18:46:36
年配向けの顧客データ管理ソフトを作るよう特命を受けた。
顧客データや商品データなど100項目以上あり、1画面に入りきらない。
タブコントロールを使いたいけど相手は年寄り。
急にパネルが見えなくなれば、疲れるだろう。
スクロールを多様すればいくらでも画面内に情報が入れられるが、
相手は年寄り。
スクロールによって見えなくなった情報が気になって疲れるだろう。
マウスを当てたら新しいウインドウが立ち上がり、隠れた情報を知ることができても、相手は年寄り。
消えたときに疲れるだろう。
どうしたら年寄りから満足してもらえるかなぁ。
やはりスクロールをするしかないかな。
187デフォルトの名無しさん:2009/09/06(日) 18:53:34
「誰か他の若者に仕事をさせる」機能が無いぞ
188デフォルトの名無しさん:2009/09/06(日) 18:56:05
>>186
またお前か
189デフォルトの名無しさん:2009/09/06(日) 18:56:46
考えすぎ。

俺なら操作手順の少ないタブで押し通す。
新しいウィンドウなんて視線があちこち飛んで疲れるだけ。それならタブでいいし。
スクロールするにしても目次のリスト出しておいてクリックするとその位置まで
自動的にスクロールとか、タブとほとんど同じにして操作の手数にこだわる。
190デフォルトの名無しさん:2009/09/06(日) 19:00:12
ボタン一発でリモートアシスタンスを実行できるようにすればいいと思う
191デフォルトの名無しさん:2009/09/06(日) 19:26:11
>>186
何回も同じ質問するな。少しは自分で考えろよ。
192デフォルトの名無しさん:2009/09/06(日) 19:33:36
>>186
画面のほうをでかくしろ
193デフォルトの名無しさん:2009/09/06(日) 20:24:51
その程度で疲れる相手に管理ソフトなんか作ってもすぐに使われなくなるのがオチ
「ええのう、わしの若い頃を思い出すのう みwなwぎwっwてwきwたwww」
って思わせるような画面でも考えてろ
194デフォルトの名無しさん:2009/09/06(日) 20:25:21
タッチパネルにしてウィザード方式。大丈夫、たぶん ATM とかで
お年寄りでも慣れてる
195デフォルトの名無しさん:2009/09/06(日) 20:50:29
>>193
それも立派な視点だね。
196デフォルトの名無しさん:2009/09/06(日) 21:40:25
>>186
ウィザード方式に俺も一票。最初に目的を押させた後は
質問に答えてもらうとあら不思議、登録が終わってるみたいな。
197デフォルトの名無しさん:2009/09/06(日) 21:45:30
>>181

そんなもんなんだ。
たしかにプロだったなぁ。
なぜに放置なんだろ
198デフォルトの名無しさん:2009/09/06(日) 22:24:06
でもアクティベーションキーの取得はさすがにダメなんでしょ?
それじゃほぼ無意味じゃないかn。
199デフォルトの名無しさん:2009/09/07(月) 00:07:40
>>186
100項目もあるのがおかしい。
20項目まで削れ。
200デフォルトの名無しさん:2009/09/07(月) 00:18:07
>>186
年寄りに一度に100項目も見せて殺す気かよw
201デフォルトの名無しさん:2009/09/07(月) 00:23:12
>>186
てか何故に100項目も出来るのかが知りたい
202デフォルトの名無しさん:2009/09/07(月) 00:26:23
だって正規化してないDBなんだもんっ♪
みたいな
203デフォルトの名無しさん:2009/09/07(月) 00:29:13
204デフォルトの名無しさん:2009/09/07(月) 00:32:24
205デフォルトの名無しさん:2009/09/07(月) 10:19:43
206デフォルトの名無しさん:2009/09/07(月) 11:00:30
WinFormのWYSIWYGなHTMLエディタコントロール探してるんだけど、
ASPとか有料のしか見つからないんだがフリーでないんだろうか。

文字サイズと色変えれるくらいでいいんだが、何か知らない?
207デフォルトの名無しさん:2009/09/07(月) 14:26:03
JavaScriptのやつが山ほどあるから、WebBrowserでホストして使うのが楽。
文字サイズとか色変えるぐらいなら自分で実装してもいい。
208デフォルトの名無しさん:2009/09/07(月) 15:09:04
>>207
なるほど、調べてみるよ
サンクス
209デフォルトの名無しさん:2009/09/07(月) 20:14:06
>>203
なんで202を笑う?
普通の意見だろうが。
210デフォルトの名無しさん:2009/09/07(月) 20:19:43
211デフォルトの名無しさん:2009/09/07(月) 20:27:48
>>210
なんでだよ禿げ野郎!
212デフォルトの名無しさん:2009/09/07(月) 21:56:23
UIの項目数とテーブルの正規化になんの関係があるんだよハゲ
213デフォルトの名無しさん:2009/09/07(月) 22:15:29
例えばPCの諸元で言うなら、CPU : Core2 Duo T5600 という項目と動作周波数・
コア数・FSB・・・の項目があるような。普通ならCore2 Duo T5600だけでいいのに。

キー項目以外の項目を表示するということはあるかもしれないけど、全項目に
渡って表示しているなら第二正規化していない可能性高いヨネーという話かと。
214デフォルトの名無しさん:2009/09/07(月) 22:44:12
月末、大阪城公園か淀川河川敷でオフ会をやりませんか?
参加費は1人100円いただきます(ビニールシートを買うため)。
C♯を語りつくしましょう。
215デフォルトの名無しさん:2009/09/07(月) 22:47:09
ビニールシートくらいだれか一人が持っていけよ
216デフォルトの名無しさん:2009/09/07(月) 23:07:07
じゃ1メートル四方の一枚もっていく
217デフォルトの名無しさん:2009/09/08(火) 00:26:04
ビニールシートなら大阪城にたくさんあるじゃん
218デフォルトの名無しさん:2009/09/08(火) 01:50:46
そういうの好きだけど大阪在住でないのが残念
219デフォルトの名無しさん:2009/09/08(火) 20:04:24
まじで企画しようかな。
大阪城公園、または本町の居酒屋でもいいね。
参加していい人は、書き込みしてください。
ミクシイに似たようなコミュニティがあれば、そちらでもできるので教えてください。
220デフォルトの名無しさん:2009/09/08(火) 20:10:13
九州ならいったのに・・・
221デフォルトの名無しさん:2009/09/08(火) 20:25:42
河川敷よりネット環境のあるところのほうが良くね?
222デフォルトの名無しさん:2009/09/08(火) 20:26:26
オーストラリアならいったのに。。。
223デフォルトの名無しさん:2009/09/08(火) 20:36:15
太宰府市なら行く
224デフォルトの名無しさん:2009/09/08(火) 20:58:15
第一回は大阪で…
(理由:私が関西におりますので…。)
達人から初心者まで、C#に日々打ち込む人たちが集うコミュニティがあればなぁ…。
関西でうまくいけば、九州でも集まりたいですね。
一度きりの人生、こういうきっかけであっても、先に楽しみが生まれるならば
こういう集まりでもいいじゃないですか。
225デフォルトの名無しさん:2009/09/08(火) 21:07:13
普通のコミュニティで充分。
226デフォルトの名無しさん:2009/09/08(火) 21:28:25
わんくまとか各都市でやってるじゃん
俺は行ったことないけど
227デフォルトの名無しさん:2009/09/08(火) 21:36:26
わんくまは・・・いいやw
228デフォルトの名無しさん:2009/09/08(火) 22:29:20
わんくまってなに?
229デフォルトの名無しさん:2009/09/08(火) 22:31:27
幼稚園のクラスの名前。
230デフォルトの名無しさん:2009/09/08(火) 22:33:59
わんくまかw
231デフォルトの名無しさん:2009/09/08(火) 22:36:50
マルチポストを忌み嫌うヤカラの集団。
232デフォルトの名無しさん:2009/09/08(火) 22:47:05
>>231
いやむしろあそこの掲示板はそうでもないよ。
dobon氏の掲示板にいるようなキチガイ監視員はいないと思う。
233デフォルトの名無しさん:2009/09/08(火) 22:48:42
っていうか、ひょっとして>>231まマルチポスタークンなのかなw
234デフォルトの名無しさん:2009/09/08(火) 22:50:06
インフルエンザで勉強会中止だぜー
235デフォルトの名無しさん:2009/09/08(火) 23:02:21
プロしかいないのけ?
236デフォルトの名無しさん:2009/09/08(火) 23:10:28
どうせお前らは、友人もおらず同僚からも距離を開けられ、家族からも怪訝な目で見られ、親戚からも寡黙に思われている孤独男児だろ。
集まろうよ。俺と会って話そうよ。ネットができる喫茶店にでも集まるか。
237デフォルトの名無しさん:2009/09/08(火) 23:53:44
行きたいけどニートなのが恥ずかしいのでそこら辺には触れないでくれると嬉しいです
238デフォルトの名無しさん:2009/09/09(水) 00:17:35
オフ板でやれ
239デフォルトの名無しさん:2009/09/09(水) 00:57:36
ここでいいよ
240デフォルトの名無しさん:2009/09/09(水) 02:14:10
初心者スレで聞いてみたんですが、誰も相手してくれなかったのでお願いします。

VS2005、C#なんですが
大きな画像、というか地図を格子状に区切って分割して保存してある画像があり、
任意の場所を中心として周囲8近傍結合、pictureBoxに表示するソースを書いてます。

pictureBoxの画像をマウスドラッグでgoogleMapのように滑らかにスクロールさせたく思い
その際表示領域より少し大きめの画像に結合したあと表示領域分切り出しているんですが
動作がもっさりであんまり満足できていません。

上手くやる方法ないでしょうか?
またはpictureBox以外でもこのような実装を行う方法ってありますか?
241デフォルトの名無しさん:2009/09/09(水) 02:19:20
>>240
> 動作がもっさりであんまり満足できていません。
この原因をくわしく
242デフォルトの名無しさん:2009/09/09(水) 02:24:00
>>241
Graphics g = g.DrawImage(〜〜〜〜);
という感じで大き目の画像を結合した上で
さらに同じ方法で切り出しを行ってるためだと思うんですが・・・
243デフォルトの名無しさん:2009/09/09(水) 02:27:15
で?
244デフォルトの名無しさん:2009/09/09(水) 02:33:44
>>242
原因調査が不十分って感じなんだが
とりあえず,どの部分でどれだけ時間がかかっているか実測してみて
245デフォルトの名無しさん:2009/09/09(水) 09:15:33
246デフォルトの名無しさん:2009/09/09(水) 09:38:43
247デフォルトの名無しさん:2009/09/09(水) 15:44:55
>>246
変態的だwww
248デフォルトの名無しさん:2009/09/10(木) 10:38:36
あれ、カスタム書式指定文字列で整数部はカンマ区切り、小数部は有れば全部表示とかしたかったんだが、整数部と小数部分けてごにょごにょやらないと出来ない?
#とか使うと小数部が指定した桁数分に丸められてしまふ…
249デフォルトの名無しさん:2009/09/10(木) 11:00:34
#を310個ほど並べたらいいよ
250デフォルトの名無しさん:2009/09/10(木) 11:06:23
全部表示は無茶だろ
とんでもない桁になる
251デフォルトの名無しさん:2009/09/10(木) 14:56:55
252デフォルトの名無しさん:2009/09/10(木) 20:26:40
小数部を全部出すという要件が思いつかんが。
253デフォルトの名無しさん:2009/09/10(木) 23:06:29
仮に全部出したところで桁数なんてしれてるだろう。
254デフォルトの名無しさん:2009/09/10(木) 23:19:05
1/3
255デフォルトの名無しさん:2009/09/10(木) 23:21:40
表示は上の数桁だけに制限して,コピーしたら全部取得されるみたいな工夫をするべき
256デフォルトの名無しさん:2009/09/10(木) 23:31:12
要するに普通にdoubleなりdecimalなりで扱えばいいってことだな
257デフォルトの名無しさん:2009/09/11(金) 00:06:24
なんか分かって無さげなのいるから横から。

System.Double.Epsilon 見てみれば分かるが、
指数部が e-324 とかになる。

「有効桁数」ならまぁ高々15桁としても小数部とかみた
いな表現すりゃ 300 文字オーバーみたいになりうるよと
いう話。

ちなみに Epsilon で . 以下 # を 339 個並べてみたら全部
出たので >>249 の方法論でいいんじゃね(310 では足り
ないみたいだが)

ちなみに整数部も同じ。e308 かな。
258デフォルトの名無しさん:2009/09/11(金) 00:39:55
ああごめん、確かにぼけてたわ。
259デフォルトの名無しさん:2009/09/11(金) 06:15:46
>248
すまん、数値入力の部分の表示だったので小数部がえらいことになるとか考えてなかったw
桁数制限、ごもっともです。
260デフォルトの名無しさん:2009/09/11(金) 18:45:31
WebBrowserコントロールで表示してるWebページを、コントロールの大きさ(横幅)に合わせて拡大縮小しだいのたけど
どんな属性やメソッドを使えば良いのか全く分からない……
MSDNのフォーラムに似たような質問があったけど、そもそもその解決したと言われるプロパティが見つからない

環境は学生用のVS2008なんだけど、誰か突破方法に心当たりありません?
261デフォルトの名無しさん:2009/09/11(金) 18:47:41
属性とかスタイルシートとかでやってんじゃねーの
そのプロパティとやらを書いてみろよ
262デフォルトの名無しさん:2009/09/11(金) 18:52:06
>>260
そのフォーラムのスレッドどこ?
263デフォルトの名無しさん:2009/09/11(金) 18:56:30
264デフォルトの名無しさん:2009/09/11(金) 19:08:01
>>263
JavaScript じゃねーか
265デフォルトの名無しさん:2009/09/11(金) 19:11:27
JavaScriptっつーか、HTML DOMな
StyleプロパティまではWinFormでもサポートしてるから
そこにzoomの設定つけたしゃいい
266デフォルトの名無しさん:2009/09/11(金) 19:19:08
だって>>260はコントロールの話じゃなくてHTMLのビジビリティの話なんだもんっほしみ
267デフォルトの名無しさん:2009/09/11(金) 20:37:54
>>264-266
いまいちよく分からなかったけど、ありがとう
268デフォルトの名無しさん:2009/09/11(金) 20:42:57
さすが学生^^
269デフォルトの名無しさん:2009/09/11(金) 20:49:13
俺はそのWebBrowserコントロールのClientSizeをいじればいいだけの話に思えたんだけど、違うんだろうなあ。
270デフォルトの名無しさん:2009/09/12(土) 08:06:35
よくわからんがOperaの拡大縮小みたいなかんじ?
271デフォルトの名無しさん:2009/09/12(土) 08:30:08
ディスプレイが2台ある状態でdualviewかcloneか片方のディスプレイのみ利用の切り替えと
それぞれのディスプレイの解像度を変更したいのですが、どうしてもやりかたがわかりません。

とりあえず解像度だけでも変更してみようと調べました。
DirectXのSDKをインストールしてDirectDrawを使って以下のコードを実行したところメインディスプレイの解像度が変わりましたが
DualViewになっている場合セカンダリディスプレイはNo signalになってしまいます・・・
セカンダリディスプレイの解像度を変更する方法がわかりません。

Microsoft.DirectX.DirectDraw.Device device;
device = new Microsoft.DirectX.DirectDraw.Device();
device.SetCooperativeLevel(this, Microsoft.DirectX.DirectDraw.CooperativeLevelFlags.Normal);
device.SetDisplayMode(800, 600, 32, 0, false);

どなたか助言お願いします。
272デフォルトの名無しさん:2009/09/12(土) 09:02:50
解像度は ChangeDisplaySettingsEx() でいけるだろ。
273デフォルトの名無しさん:2009/09/12(土) 10:54:08
型名とかに日本語使ってますか?
274デフォルトの名無しさん:2009/09/12(土) 11:23:08
別の言語だったかで文字コードの違うソースコード作っちゃって、リンクで
エラー起こして以降、多バイトコードで識別子は書かないと心に決めてる。
あと、タイプミスが思いのほか多いんだアレ。てにおはとか。
275デフォルトの名無しさん:2009/09/12(土) 12:56:56
すっごい関係ないが
てにをは
だよ
276デフォルトの名無しさん:2009/09/12(土) 12:59:15
手爾遠波
277271:2009/09/12(土) 14:49:37
>>272
いけました!!ありがとうございます。
後はデュアルディスプレイ・クローン・一つのディスプレイのみの設定の変更です・・・
なにか方法ありますか?
278デフォルトの名無しさん:2009/09/12(土) 15:07:07
>>273
IMEの変換とインテリセンスの親和性が最悪じゃない?
Migemoのアドインとかあればましかもしれんが
279デフォルトの名無しさん:2009/09/12(土) 15:09:01
初歩的なことですがサブクラスaをメンバとして持つAからA1というオブジェクトインスタンスを作成しました
aで定義したメソッドやプロパティにA1からアクセスできません
aの内部でもAでもpulicは設定したんですが・・・

なんか勘違いしてますか?
280デフォルトの名無しさん:2009/09/12(土) 15:17:00
>>279
日本語で書け、と言われる前に質問を推敲したほうがいいんじゃないの?
しかし、そんな日本語で他人に通じると思ってる神経が理解できん。

言葉の使い方に自信がないのなら、同じ事を複数の別の言い方で表現しておくとか、
馬鹿は馬鹿なりに少しは工夫しようよ。
281デフォルトの名無しさん:2009/09/12(土) 15:43:15
>>279
Dotfuscatorを通したようなクラスでも作っているんだろうか。
public class A
{
public a a1 = new a();

public class a
{
public void f() { }
}

static void Main(string[] args)
{
A A1 = new A();
A1.a1.f();
}
}
282デフォルトの名無しさん:2009/09/12(土) 16:46:25
>>281
こんな感じですまさに
A1.a1.f();
これができないんです。

できないわけがないですよね?
そもそもできないのがあたりまえかと思ってしまって
もういちどチェックしてみます。
283デフォルトの名無しさん:2009/09/12(土) 17:31:36
>>282
コンパイルエラーならメッセージをよく確認する。
質問するときはエラーメッセージもアップ。

内部クラスをpublicにしてないという話だと思うけど、
他にはstaticなメンバーを参照経由で呼び出そうとしているなど他の可能性はある。
どれかはエラーメッセージを見れば分かる。
284デフォルトの名無しさん:2009/09/12(土) 18:03:00
>>282
public class Outer
{
public class Inner
{
public static void f() { }
public void g() { }
}

public Inner innerObj = new Inner();

static void Main(string[] args)
{
Outer outerObj = new Outer();
outerObj.innerObj.g();

Outer.Inner.f();
}
}
ふらっとでやれ。
285デフォルトの名無しさん:2009/09/12(土) 18:16:35
>>274
なるほど、タイプミス多いなww
286デフォルトの名無しさん:2009/09/12(土) 18:33:52
>>283
エラーメッセージはアセンブリに対する参照を設定しろと言われました
今チェックしています

>>284
ごもっともでした
287デフォルトの名無しさん:2009/09/12(土) 18:44:56
内部クラスをpublicにしたらガイドライン違反だよ
288デフォルトの名無しさん:2009/09/12(土) 18:50:49
http://support.microsoft.com/default.aspx/kb/308216/ja
ここのソースの中に
ChangeDisplaySettingsEx((LPSTR)DisplayDevice.DeviceName,
&defaultMode, NULL, CDS_NORESET|CDS_UPDATEREGISTRY, NULL);

// A second call to ChangeDisplaySettings updates the monitor.
ChangeDisplaySettings(NULL, 0);
とあるのですが、C#ではChangeDisplaySettingsの第一引数に
通常DEVMODEの構造体を受け渡すところを上記のようにnullにすると

エラー1'ConsoleApplication1.Program.ChangeDisplaySettings
(ref ConsoleApplication1.Program.DEVMODE, int)' に最も適している
オーバーロード メソッドには無効な引数がいくつか含まれています。

というエラーが出てしまいます・・・ nullを受け渡したいのですがどうしたらいいですか?
289デフォルトの名無しさん:2009/09/12(土) 18:53:39
適当なnull渡せるオーバーロードを書く
290デフォルトの名無しさん:2009/09/12(土) 18:54:12
IntPtrとして宣言してIntPtr.Zeroを渡す
291デフォルトの名無しさん:2009/09/12(土) 19:04:54
>>290
出来ました!
ありがとう!
292デフォルトの名無しさん:2009/09/12(土) 19:12:53
DEVMODEをクラスで定義して値渡しすりゃいいんじゃないの?
293デフォルトの名無しさん:2009/09/12(土) 23:55:04
>>292
どういうこと?
294デフォルトの名無しさん:2009/09/13(日) 00:27:39
どういうこと、って言われても「そういうこと」だよ。
>>292が説明の限界じゃないか?
http://msdn.microsoft.com/ja-jp/library/hc662t8k.aspx
295デフォルトの名無しさん:2009/09/13(日) 00:28:21
エスパーすると多分、自力で定義して渡したら?
と言っていると思うけど、リセットのためのNULLを渡したいという話なので的外れだね。
296デフォルトの名無しさん:2009/09/13(日) 00:31:37
>>295
エスパーってチミが無知なだけだと思うけど。
頭大丈夫かよ。
297デフォルトの名無しさん:2009/09/13(日) 00:35:28
あ、こっちが的外れだったか、すまん。
298デフォルトの名無しさん:2009/09/13(日) 17:40:58
フリーソフトで出回っているYouTubeのダウンローダが使い辛いので
自分専用のダウンローダを作ろうとしています。

やりたい事は、検索キーワードを入力してヒットする動画のうち
埋め込みタグが禁止されていない物は全て丸ごとダウンロードできるものを
作りたいと思っています。

そこで質問なのですがYouTubeから動画をダウンロードするにはどうすればよいでしょか?
参考になるサイトがあれば教えてください。
299デフォルトの名無しさん:2009/09/13(日) 18:25:06
>>298
来年1月1日以降に作って発表するといいと思うよ
300デフォルトの名無しさん:2009/09/13(日) 18:34:40
(1)のtreeview から(2)のように
stringの配列を受け取るにはどう処理すれば良いでしょうか?
階層の深さは何段になるかわからない環境です。

(1)
foo
├─bar
│ └─hoge
├─bar2
└─bar3
├─hoge2
└─hoge3
(2)
foo\bar\hoge
foo\bar2
foo\bar3\
foo\bar3\hoge2
foo\bar3\hoge3
301デフォルトの名無しさん:2009/09/13(日) 18:37:41
再帰的な処理にすれば簡単だろうが
302デフォルトの名無しさん:2009/09/13(日) 18:44:26
barは取らないのにbar3は取るとか謎仕様だな
303デフォルトの名無しさん:2009/09/13(日) 18:49:41
304デフォルトの名無しさん:2009/09/13(日) 18:53:21
>>302
すいません、bar3も取らない形で作りたいです。
305デフォルトの名無しさん:2009/09/13(日) 18:55:04
再帰的処理で葉が無ければ上に受け渡す
受け取ったものがあればそれを\で連結
超簡単じゃないか
306デフォルトの名無しさん:2009/09/13(日) 18:59:35
TreeNode.FullPath使えば連結する必要すらない
307デフォルトの名無しさん:2009/09/13(日) 19:14:35
>>301>>305>>306
レスありがとうございます。

結局string[]で返すのは自分には書けませんでしたので
配列を引数にしてそれを再帰で変更するようにすれば
希望通りの動作にできました。
308298:2009/09/13(日) 20:03:03
>>299
なぜに来年1月1日以降なのでしょうか?
まぁ、作っても自分が欲しい動画を出回っているソフトだと色々と制限があって
使い辛いので自分用に使おうと思ってます。

ってかYouTubeからC#(つか .Net) を使用して動画をダウンロードする方法はありますか?
FLV ⇒ mpg( or AVI)形式に自動変換した上でDLしたいと思っています。
309デフォルトの名無しさん:2009/09/13(日) 20:04:41
来年1月1日から特許出願したらいいとおもうよ
310デフォルトの名無しさん:2009/09/13(日) 20:10:18
他の言語でできるならC#でもできる
やり方はスレ違い
それくらい自分で調べられないなら無理
311デフォルトの名無しさん:2009/09/13(日) 20:14:43
>>309
もう既に色々あるしwネタだろうけどw

つかマジで出回ってるYouTubeのダウンローダー宣伝が入ってたり
遅かったりマジで使い辛いんだよね〜


教えて頂戴
312デフォルトの名無しさん:2009/09/13(日) 20:16:52
そういったの開発しているところがオープンソースだったらもらってくればいいんじゃないの
313デフォルトの名無しさん:2009/09/13(日) 20:24:41
>FLV ⇒ mpg( or AVI)形式に自動変換した上でDLしたい
えっ
314デフォルトの名無しさん:2009/09/13(日) 20:24:44
>>312
だから教えて頂戴と。
出回ってるフリーソフトよりも遥かに使い勝手のいいものを作るから
315デフォルトの名無しさん:2009/09/13(日) 20:25:51
>>311
お前には作れないよ
316デフォルトの名無しさん:2009/09/13(日) 20:28:34
やり方を教えろって、ソースまで出せって事なんだろうな
317デフォルトの名無しさん:2009/09/13(日) 20:33:32
ヒントを教えて頂戴

例えばSystem.IO.FileStreem とかね
318デフォルトの名無しさん:2009/09/13(日) 20:35:42
System.IO.FileStreem









System.IO.FileStreem
319デフォルトの名無しさん:2009/09/13(日) 20:39:42
>>318
なんか知らんが爆笑した
320デフォルトの名無しさん:2009/09/13(日) 20:45:10
>>318
頭打ちぬかれてしね
321デフォルトの名無しさん:2009/09/13(日) 20:51:18
Streemワロタw
322デフォルトの名無しさん:2009/09/13(日) 20:56:20
Streeeeeeeeeeem
323デフォルトの名無しさん:2009/09/13(日) 23:33:57
【利用環境】
.net3.5、WinXPPro、VS2008Proの環境で開発しています。
利用環境は主に、.net3.5、Win2008 or WinVistaを想定しています。

【質問内容】
C#で、以下の機能を実現するには、どうしたらいいでしょうか?
tp://www.bohyoh.com/CandCPP/FAQ/FAQ00108.html
順列組み合わせを出力する機能です。これ関連の、クラスがあれば教えてください。
324デフォルトの名無しさん:2009/09/13(日) 23:36:23
>>323
自分でコーディングする。
325デフォルトの名無しさん:2009/09/13(日) 23:59:28
>>323
VC/CRTのalgorithm読んでpermutation関係を移植する。
326323:2009/09/14(月) 00:08:49
実はすでに自分でコーディングしたものはあるんですよ。
問題なく動いていますが、新しいプログラムを作成する際に、既存のものがあれば、活用したいと思ったのです。
その方が何かと助かると思っていたので……

しかし、なさそうでしたら、今まで通り、自作の物を使用します。
どうもありがとうございました。
327デフォルトの名無しさん:2009/09/14(月) 01:41:14
順列生成はわりかし単純だで、俺も昔アルゴリズム辞典とかを読んで理解できた
でも組み合わせの効率的生成はnext_combination.cのソース見ても理解できなかった

なにが言いたいかというと、やっぱそういうのは標準ライブラリに入れといてほしいよね
328デフォルトの名無しさん:2009/09/14(月) 04:15:09
>>327
順列生成なんて簡単でしょ?と思って見てきたけど、んー…こりゃ難しい。
329デフォルトの名無しさん:2009/09/14(月) 04:42:07
直感だけど再帰っぽくなりそう
330デフォルトの名無しさん:2009/09/14(月) 14:31:07
勉強がてら作ってみた

class Permutation
{
public static IEnumerable<int[]> GetPermutationSet(int[] array)
{
return GetPermutationSet(new List<int>(array), new List<int>());
}
//とりあえず何も考えずにListに
private static IEnumerable<int[]> GetPermutationSet(List<int> left, List<int> permutation)
{
if (left.Count == 0)
yield return permutation.ToArray();

for (int i = 0; i < left.Count; i++)
{
int element = left[i];
left.RemoveAt(i);
permutation.Add(element);
foreach (var tItem in GetPermutationSet(left, permutation))
yield return tItem;
left.Insert(i, element);
permutation.RemoveAt(permutation.Count - 1);
}
}
}
331デフォルトの名無しさん:2009/09/14(月) 14:38:10
順列って俺もしらんかったが、とりあえずすべての組み合わせのことを言うのか?

すべてのデータが違うというのを前提として、文字列でやると
private void func()
{
List<string> ret = new List<string>();
junretsu("あいうえお", "", ret);
foreach (string s in ret)
{
Console.WriteLine(s);
}
}
private void junretsu(string str, string junretsustr, List<string> ret)
{
if (str.Length == 1)
ret.Add(junretsustr + str);
else
foreach (char c in str)
{
junretsu(string.Join("", str.Split(c)), junretsustr + c, ret);
}
}
こんな感じのこと?
332デフォルトの名無しさん:2009/09/14(月) 15:00:41
>>331
全てのデータが違う前提だとそうだけど、同じデータが含まれる場合も考慮するのが普通。
例えば {1,1,2} に対する並び替えで、「組み合わせ」と言ったら {1,1,2}, {1,2,1}, {2,1,1} の3通りだけど
「順列」と言ったら {1,1,2}, {1,2,1}, {1,1,2}, {1,2,1}, {2,1,1}, {2,1,1} の6通り(2つの1をそれぞれ別ものとみなす)。
333デフォルトの名無しさん:2009/09/14(月) 15:04:48
>>332
ふむ。理解した。
334デフォルトの名無しさん:2009/09/14(月) 18:26:03
組み合わせは{1,1,2}なら
{1}{2}
{1,1}{1,2}
{1,1,2}
じゃないか?
で、順列なら3!/1!2!=6/2=3コあって
{1,1,2}{1,2,1}{2,1,1}
だよ
335デフォルトの名無しさん:2009/09/14(月) 19:46:22
順列・組み合わせって中三の内容だったぞ俺の時代はw
今は高校でもやらんの?
知らないってことはないはずだと思うが。
336デフォルトの名無しさん:2009/09/14(月) 19:50:54
こういう発言から学歴論争に発展する
337デフォルトの名無しさん:2009/09/14(月) 19:52:54
義務教育レベルの話に学歴も糞もないだろ真面目な話。
俺だって中学なんて田舎の公立校だよ。
338デフォルトの名無しさん:2009/09/14(月) 20:05:52
今は数学I・A(高校)なのかな?
多分文系でもやってると思うけど、高校数学は10年以上縁がないので違ってるかもしれん
339デフォルトの名無しさん:2009/09/14(月) 20:09:47
オレの時台は高校で選択だったから同年代の半数は順列組み合わせを知らない
340334:2009/09/14(月) 21:45:00
え、俺が間違ってた?
341デフォルトの名無しさん:2009/09/14(月) 21:47:59
うん
342334:2009/09/14(月) 22:03:07
うそーん
一応現役なのにorz

でも332はあからさまに間違ってるよね??
343デフォルトの名無しさん:2009/09/14(月) 22:25:35
うん
344デフォルトの名無しさん:2009/09/14(月) 23:14:11
>>334
それは組み合わせじゃなくて
{∅} と合わせて冪集合。
俺の知る限り高校じゃ習わん。

順列はあってる
345デフォルトの名無しさん:2009/09/14(月) 23:41:23
1個選ぶ組合せ
2個選ぶ組合せ
3個選ぶ組合せ
っていうつもりで書いたんだがそれでも間違ってる?
てか、激しく論点がずれてしまった
この辺で自重します
346デフォルトの名無しさん:2009/09/15(火) 00:23:29
347デフォルトの名無しさん:2009/09/15(火) 07:56:00
すいません、質問させてください。

Formのサイズ変更枠がありますよね。
その枠の長さを動的に得たいのですが、方法はありますか?

↓マウスでつまんでサイズ変更ができる枠の長さです。
http://f42.aaa.livedoor.jp/~imawaka/imgboardphp/src/1252968758611.jpg

VistaだとXPに比べて枠が長いですよね。おそらく・・・
それを現在のウィンドウ(Form)の状態によって動的に値を得たい。
たとえば、BorderStyleがNoneのときは、「0」になるとか。
そういうのを得るメソッド・プロパティってありますか?
348347:2009/09/15(火) 08:07:33
http://dobon.net/vb/dotnet/form/formborderstyle.html
このサイトにかかれているフォームの境界線の長さを得たいわけです。はい。
349デフォルトの名無しさん:2009/09/15(火) 08:45:35
arimasen
350デフォルトの名無しさん:2009/09/15(火) 08:59:20
GetSystem…
351デフォルトの名無しさん:2009/09/15(火) 10:12:25
SystemInformation..::.Border3DSize
352デフォルトの名無しさん:2009/09/15(火) 10:16:08
それは違うだろう
353デフォルトの名無しさん:2009/09/15(火) 11:42:52
>>347
長さ?幅じゃなくて?
354デフォルトの名無しさん:2009/09/15(火) 15:49:28
幅のことだろう。

(form.Width - form.ClientSize.Width) / 2

でいいんじゃね。
355デフォルトの名無しさん:2009/09/15(火) 23:52:41
組み合わせは、3C2=3通りだろ。
高校の時にやったぞ。
ちなみに年齢は30のおっさんだ。
たぶん1つ上の年代までは教育課程が違ってやってないかもしれない。
数T、U、V、A、B、C世代な。
356デフォルトの名無しさん:2009/09/16(水) 00:17:48
それも組み合わせの一つ
357デフォルトの名無しさん:2009/09/16(水) 00:58:37
さすがに普通科の理系コースで高校卒業までに確率統計を一度も習わない、
なんてことはありえんと思うが(ありえるなら日本終わってるだろ)
俺の時代も何故か確率統計ってあまり重要視はされてなかったね。

何だろうね。
個人的には微積はともかく線形代数より役に立つ場面が多いと思うけど。
358デフォルトの名無しさん:2009/09/16(水) 01:04:08
>>354
左右対称とは限らないだろう
359デフォルトの名無しさん:2009/09/16(水) 02:18:26
じゃあフォームのleftとクライアントのleftで左枠の幅を求めてから引けばいい
360デフォルトの名無しさん:2009/09/16(水) 02:51:59
>>359
ClientRectangleの座標値はクライアント座標だから左端は常に0
361デフォルトの名無しさん:2009/09/16(水) 09:19:05
>>357
30代の俺の代ですら、受験で稼げない確統なんざ理系選抜クラスでも選択科目扱いだった
今なんてなおさらでしょ
362デフォルトの名無しさん:2009/09/16(水) 11:21:00
>>360
PointToScreen使えばクライアント座標をデスクトップ座標に変換できる
363デフォルトの名無しさん:2009/09/16(水) 11:45:56
>>357
ありえるし、すでに終わってる
それが授業のカリキュラムを大幅に削減したゆとり教育の結果
学力が下がって企業の開発力が落ちてこのザマ
工業製品が台湾や韓国にどんどん追い越されてる
364デフォルトの名無しさん:2009/09/16(水) 17:41:00
>>357
確率は数Aでやるけど統計は習わないはず。
もちろん進学校は別。
来年以降高校の教育課程で統計を本格的に入れるという話を聞いた。
数字カードの組み合わせ問題はゆとり教育時代でも小学校で習うし中学入試にも出る。

確率統計が後回しにされるのは、文系で統計学をやる時に積分を沢山使うから
それを先に学ばせないと授業にならないからだそうだ。
俺理系で文系の人から聞いた話だから、嘘ついてたらすまん。
365デフォルトの名無しさん:2009/09/16(水) 18:17:56
初心者以下の質問のような気がしますが

C#3.0って、VisualStudio2008以上でないと開発に使えないのですか?
あと.NET以外でC#を使うことはできないのですか?
366デフォルトの名無しさん:2009/09/16(水) 18:27:40
>>365
MONO
367デフォルトの名無しさん:2009/09/16(水) 22:34:02
C#のバージョン(1.x,2.0,3.0とか)と、
VisualStudio(VisualC#)のバージョン(VisualStudio2005とか、VisualC#2008とか)と、
.NET Frameworkのバージョン(2.0とか3.0とか)の違いがいまいちわかりません。

どなたかわかりやすく説明していただけませんか?

たとえば、C#3.0から追加になったLINQの機能を、VisualStudio2005でソースを書くとどうなりますか?
C#3.0はVisualStudio2008がサポートしていると聞いたのですが、動かなかったりコンパイルエラーになったりするのでしょうか?
368デフォルトの名無しさん:2009/09/16(水) 22:49:56
VSのバージョンと使用可能言語・開発可能ターゲットは以下の通り
VS2002: C#1.0 .NET1.0
VS2003: C#1.1 .NET1.1
VS2005: C#2.0 .NET2.0 ※.NET3.0用の拡張があったけど今はもうないはず
VS2008: C#3.0 .NET2.0/.NET3.0/NET3.5

LINQはC#3.0の機能なのでVS2008でしか使えない
ただし、LINQは基本的に.NET3.5のライブラリを使ってるので
開発ターゲットが.NET2.0/.NET3.0の場合は普通には使えない

違いと一口に言われても困るな
369デフォルトの名無しさん:2009/09/16(水) 22:50:41
>>367
VS2005 - C# 2.0
VS2008 - C# 3.0
VS2010 - C# 4.0
といった感じでいいんでないかな。
.NET Frameworkのバージョンは0.5とかSP1とか出てきて面倒くさいので考えない方向で。

VS2005でLinqのコードを書くとコンパイルエラーになります。
370デフォルトの名無しさん:2009/09/16(水) 23:05:21
VS2002 -> 1.0
VS2003 -> 1.1
VS2005 -> 2.0
VS2005 + Extention -> 3.0(2.0)
VS2008 -> 2.0、3.0(2.0)、3.5(2.0、3.0)
371デフォルトの名無しさん:2009/09/16(水) 23:05:38
>>368
>>369
ありがとうございます。

もうひとつ質問なのですが、
1つのパソコンに異なるバージョンのVisualStudioを共存させるのはよくないのでしょうか?
会社で使うのが主に旧バージョンなので、
自宅PCには会社と同じ環境用の旧バージョンと自己学習用の新バージョンを入れたいと思っているのですが
372デフォルトの名無しさん:2009/09/16(水) 23:14:58
問題ない。
373デフォルトの名無しさん:2009/09/16(水) 23:15:43
複数の環境を作るためにVirtualPCを無料で配布しているんです
374デフォルトの名無しさん:2009/09/16(水) 23:37:14
いあ普通に共存できるし。
375デフォルトの名無しさん:2009/09/16(水) 23:50:38
そういう問題じゃないんだよ
376デフォルトの名無しさん:2009/09/17(木) 00:01:06
どういう問題だよ。
377デフォルトの名無しさん:2009/09/17(木) 00:05:50
趣味グラマにゃ関係ねえわなwww
378デフォルトの名無しさん:2009/09/17(木) 00:23:42
いや仮想環境はいいぞ
379デフォルトの名無しさん:2009/09/17(木) 00:27:37
むしろパソヲタ的な趣味グラマの方が意味なく(おまけにライセンス的にヤバい方法で)
VMで遊んでる気もしますが。
380デフォルトの名無しさん:2009/09/17(木) 00:42:46
趣味グラマ(初心者)で意味なくVMで遊んでるけど
ライセンス的にやばいことはしないぞw
win7(RC)入れて見たり、linuxで遊んでるだけだ
381デフォルトの名無しさん:2009/09/17(木) 00:47:49
仮想環境って、2台としてカウントされるのだろうか…
382デフォルトの名無しさん:2009/09/17(木) 00:55:17
職業グラマ(上級者)だけどVMはLinux・BSD開発に使ってる
Win開発は実機
383デフォルトの名無しさん:2009/09/17(木) 01:06:34
HDDイメージをDVDに焼いておけば簡単に初期状態に戻せるから重宝してるよ
クリーンな状態でテストしたいからね
384デフォルトの名無しさん:2009/09/17(木) 01:07:44
>>382
上級者は自分を上級者だと言わない
385デフォルトの名無しさん:2009/09/17(木) 01:11:01
>>384
そういう突っ込みを入れさせるために書いといた
まあちょっとした遊び心
386デフォルトの名無しさん:2009/09/17(木) 01:11:51
涙目。
387デフォルトの名無しさん:2009/09/17(木) 01:37:35
後釣り宣言ほど恥ずかしいものはないな
388デフォルトの名無しさん:2009/09/17(木) 01:39:05
まあちょっとした遊び心
389デフォルトの名無しさん:2009/09/17(木) 01:41:05
釣れた釣れた
390デフォルトの名無しさん:2009/09/17(木) 01:41:40
MSDNで開発用のライセンス貰ってVMで動かしてる。
391デフォルトの名無しさん:2009/09/17(木) 01:49:07
俺はDreamSparkでもらったやつをホストOSにして
それで余ったやつをゲストOSにしてる
392デフォルトの名無しさん:2009/09/17(木) 02:01:45
大学生羨ましい
393デフォルトの名無しさん:2009/09/17(木) 02:10:50
ちなみに専門学校です
しかも情報系ではありません
394デフォルトの名無しさん:2009/09/17(木) 02:41:21
なら私は高専生低学年です
しかも情報系ではありません
395デフォルトの名無しさん:2009/09/17(木) 02:54:33
そうですか。
396デフォルトの名無しさん:2009/09/17(木) 03:20:29
いいから寝ろ
397デフォルトの名無しさん:2009/09/17(木) 03:51:43
仕事中
398デフォルトの名無しさん:2009/09/17(木) 04:05:50
いいから仕事しろ
399デフォルトの名無しさん:2009/09/17(木) 04:30:12
おはよう、おまいら
400デフォルトの名無しさん:2009/09/17(木) 04:34:44
いいから眠らせろ
401デフォルトの名無しさん:2009/09/17(木) 08:12:14
2005と2008を共存させるのビビッて仮想環境で
開発しようとか、典型的なおっさんプログラマーだろうなw
402デフォルトの名無しさん:2009/09/17(木) 08:56:14
えっ
403デフォルトの名無しさん:2009/09/17(木) 10:47:59
2005のupdateがきて関連付けを2005にされたときは、ふざけるなと思った
404デフォルトの名無しさん:2009/09/17(木) 20:35:57
>>403
ごめんね。MSがばかでごめんね。
405デフォルトの名無しさん:2009/09/18(金) 21:28:03
エスケープ文字についての質問です。

\nは改行、\rは復帰だそうですが、復帰とはどういう意味ですか?
また、サンプルソースで改行を\r\nとしていたのですが、ただの\nと何が違うのですか?
406デフォルトの名無しさん:2009/09/18(金) 21:30:05
C#とは関係ない
「改行コード」でぐぐれ
407デフォルトの名無しさん:2009/09/18(金) 22:22:27
放送大学の学籍番号キター
408デフォルトの名無しさん:2009/09/18(金) 23:01:19
>>405
行頭に戻る
409デフォルトの名無しさん:2009/09/18(金) 23:05:53
>>405
「\r 復帰」で検索すればすぐにわかるのに
410デフォルトの名無しさん:2009/09/18(金) 23:16:00
まあ、別に非難するつもりはないけど
>>405みたいな話でいちいち人に聞いてたら学習効率悪すぎるな。
>>405は自分で自分の首を絞めてることに気づいた方がいいね。
無理強いはしないけど。
411デフォルトの名無しさん:2009/09/19(土) 08:34:04
ゆとり
412デフォルトの名無しさん:2009/09/20(日) 09:35:04
TransportBindingElement.MaxReceivedMessageSizeで
WCFで受信する最大のメッセージサイズを指定しているのですが、
最大値より大きなメッセージを受信した時に
「最大値を増やすことを検討して下さい」
といった感じのログを残したいと考えています。

メッセージを受信する側で
「最大値より大きいメッセージを受信し、リクエストを拒否した」
という事を検出するにはどうすれば良いのでしょうか?
413デフォルトの名無しさん:2009/09/20(日) 11:03:47
Visual C# 2008 Express Editionを使っています。
スタートアップ時、前回終了時のプロジェクトがそのまま開けるようにできる設定方法はないでしょうか?
414デフォルトの名無しさん:2009/09/20(日) 11:23:29
>>413
オプションにあるだろ
415デフォルトの名無しさん:2009/09/20(日) 11:34:43
>>414
ありがとうございます。見逃していました。
「ツール」→「オプション」→【全ての設定を表示】→『スタートアップ』の手順で、
【全ての設定を表示】のチェックを見逃していたため、気づきませんでした。
416デフォルトの名無しさん:2009/09/20(日) 11:56:10
全ての設定を表示って邪魔くさいよな。
417デフォルトの名無しさん:2009/09/20(日) 13:09:46
Expressのその機能はかえって初心者を混乱させてるよな
何度それに起因する質問を見たことか
418デフォルトの名無しさん:2009/09/20(日) 13:17:31
そう?
「まず落ち着いて状況をよく見る」という、プログラマに不可欠な能力の欠如を
初心者に思い知らせる、いい薬になってると思うけど。

個人的には、そんな「よく見れば誰でもわかる」プログラムの設定程度で
躓く人間にまともなプログラムなんて書けっこないと思う。
419デフォルトの名無しさん:2009/09/20(日) 13:31:09
不明瞭な機能をスキルに対するリトマス試験紙とか言う馬鹿がまだいるとは
420デフォルトの名無しさん:2009/09/20(日) 13:36:03
一通りオプションを眺めるとかHELPを読むとかしろよ
ど素人じゃないんだからさ
421デフォルトの名無しさん:2009/09/20(日) 13:37:34
ど素人なんだろ。
422デフォルトの名無しさん:2009/09/20(日) 13:40:57
あのオプションはチェックが入った状態が逆ならまだましな気がする。
すべて表示、じゃなくて一部隠す、にするということね。
423デフォルトの名無しさん:2009/09/20(日) 13:42:58
Express以外は、チェック自体がないのか?
424デフォルトの名無しさん:2009/09/20(日) 13:43:18
項目大杉! って文句付けた奴がいるんだろうな。
425デフォルトの名無しさん:2009/09/20(日) 14:47:32
>>423
無い。
つーかそもそもExpressEdition以外はC#専用ってわけじゃないしね。
同じExpressEditionでもC++もこのオプション無い。
426デフォルトの名無しさん:2009/09/20(日) 14:55:14
チェックボックスは上位エディションでも設定で出せるよ
427デフォルトの名無しさん:2009/09/20(日) 18:49:32
テキストボックスに日付を入力させて、
もし、値がおかしければ、Leave時にそのテキストボックスの背景色を赤にしたいと思っています。
しかし、Leave時のactiveコントロールは次のタブオーダーのコントロールに変わってしまっていますし、
どうやって、Leaveされたコントロールを取得したらいいのか分かりません。
ご存知の方、教えてください。
428デフォルトの名無しさん:2009/09/20(日) 18:53:07
Validateとかねーの?
429デフォルトの名無しさん:2009/09/20(日) 18:53:32
テキストボックスのイベントハンドラじゃダメなの
430デフォルトの名無しさん:2009/09/20(日) 18:54:18
431デフォルトの名無しさん:2009/09/20(日) 18:54:30
TextBox.Validatedイベントを使う
見た目も任せていいならErrorProviderを使うのが楽
432デフォルトの名無しさん:2009/09/20(日) 21:09:13
>>427です。
お返事ありがとうございます。
Validatedのイベントに記述します。

このチェックを共通サブルーチンのようにし、
複数の日付項目のValidatedイベントから呼ぶようにしたいと思っています。
もしエラーなら、その該当のコントロールの背景色を変えたいのですが、
どのコントロールから呼ばれたかを取り出して、
そのコントロールの背景色を変えるにはどうしたらいいでしょうか。
senderの中身を見ても、コントロールの種類だけしか見つかりません。

たびたびで申し訳ないですが
よろしくお願いします。
433デフォルトの名無しさん:2009/09/20(日) 21:22:54
キャストしろ
434デフォルトの名無しさん:2009/09/20(日) 21:44:23
>>432
いやいやValidatedイベントハンドラ(ってかデリゲータ)を一つ用意すればいいだけだから
無駄に分ける必要ないから
435デフォルトの名無しさん:2009/09/20(日) 22:38:02
ヘルプの EventHandler デリゲートより
「このメソッドの最初のパラメータの型は Object であり、イベントを発生させるインスタンスを参照します。」
436デフォルトの名無しさん:2009/09/20(日) 22:42:18
>>431
へえ。ErrorProviderなんてあるんだな。
俺ならユーザコントロールでコードを分離してイベントを書くな。
437デフォルトの名無しさん:2009/09/21(月) 00:55:51
>senderの中身を見ても、コントロールの種類だけしか見つかりません。
ワロタ
438デフォルトの名無しさん:2009/09/21(月) 02:09:39
テキストボックスのマルチラインをtrueにした状態で、
改行をさせないようにするにはどうすればいいですか?
マルチラインをtrueにしているのは、テキストボックスの高さを少し上げたかったからであり、
複数行入れたいわけではありません。

何かテクニックがあれば教えてください・・・!
439デフォルトの名無しさん:2009/09/21(月) 10:36:18
テキストボックスの高さを普通に上げればいいじゃない
440デフォルトの名無しさん:2009/09/21(月) 11:00:54
そういうスタイルもあるけどコピペに対応できないから
入力時にチェックしてはじいたら?
441デフォルトの名無しさん:2009/09/21(月) 12:11:47
RichTextBox使ってMultiLine=falseにしたら?
442デフォルトの名無しさん:2009/09/21(月) 14:07:47
フォント大きくするか>>441だな。
443デフォルトの名無しさん:2009/09/22(火) 08:42:11
>>441
リッチテキストボックスとテキストボックスは外観がちがうんだね。同じフィックスド3Dでも。
同じならいいのに。
444デフォルトの名無しさん:2009/09/22(火) 13:03:02
C# .NETアプリケーション開発 徹底攻略
て本に、LOADイベントはInitializeComponent完了前、
正確にはResumeLayout直後に発生する事があるって書いてあるんだが
そんなことホントにあるのか?
ちょっと考えられないってかありえない気がするんだが。
Newするだけで表示しなかったらどうなるの?とか疑問だらけだ。

どうもこの本は、正しく理解してない開発者が多いなんて書きながら、
あちこちに間違いとか思い込みとか極端な例を元にしてる話がある感じで
今ひとつ信用できない。
本自体の方向性は好きなんだが。
445デフォルトの名無しさん:2009/09/22(火) 13:06:27
イマイチ信用できなくなったきっかけは、非同期処理絡みでいろんなこと書きながら、
実は正しい非同期処理のルールすら理解せずに書いてるから。
思い込みでおかしな動作すると言ってんじゃないかと思ってしまう。
446デフォルトの名無しさん:2009/09/22(火) 13:08:57
>>444
見た覚えあったので辿ってみた。
C#, C♯, C#相談室 Part52
http://pc12.2ch.net/test/read.cgi/tech/1238548552/
の574あたり。
447デフォルトの名無しさん:2009/09/22(火) 13:12:21
非同期処理では例外は握りつぶされるとか
スレッドプールのスレッドでも同様とか
各種Timerクラスとスレッドプールの関係で勘違いしてるとか
文字列連結パフォーマンス関連の不適切な例と説明とか(ここは言いたいことは理解は出来るが)
ngenの勘違いした記述とか
448デフォルトの名無しさん:2009/09/22(火) 13:31:36
C#はパラダイム詰め込みすぎでパラダイム間の共認知が薄れてるきがす
449デフォルトの名無しさん:2009/09/22(火) 13:35:49
444も447も大体.NETの問題でC#とは直接関係はなさそうだが
450デフォルトの名無しさん:2009/09/22(火) 14:07:46
>>446
サンクス。
読んでみたけど、うーん、そりゃそんなことしたら呼ばれることはあるわな。
これは当たり前の話だよねー。

気になるのは、そんなおかしなことしてる場合じゃなくて、
普通にあり得るのか?ってことなんだよなー。

例え話としては、
「Loadイベントではまだフォームは表示されていない」に対して、
「そんなことはない、Load内でShowを呼び出したら表示される」
「だからLoad中はまだフォームが表示されていないというのは間違い」
とか言ってるみたいな感じ。
※MDIとかだとまたややこしいは話があったかも知れんがそれはそれ

本を見ると、InitializeComponent完了前にLoadが発生するのは
Vistaで起こりやすい?らしいんだが、どうなんだろう…
451デフォルトの名無しさん:2009/09/22(火) 17:20:15
>>450
普通にはありえないんじゃない?

OnLoadで初期化をするとか割とありふれたことだから、
そんな現象がありうるのならもっと大騒ぎされてると思う。

俺が検索した限りでは、そんな現象を指摘する情報は見つからない。
個人的にもそんな現象にあたったことはないね。
452デフォルトの名無しさん:2009/09/22(火) 17:23:53
要するに「可能性があるからできる限りそれに依存しないコードにしましょう」ってことでしょ
その本は読んでないから文脈分からんけど
453デフォルトの名無しさん:2009/09/22(火) 19:04:31
外部 DLL の null 終端されていない文字列を string に変換するにはどうすればいいですか。
以下の方法だとうまくいきませんでした。

struct Hoge {
// 文字列(null terminate されてない)
IntPtr str; // const char*
// 文字列のバイト数
int length; // int
}

[DllImport("hoge.dll", CharSet = CharSet.Ansi)]
extern static IntPtr get_struct(); // 構造体 Hoge のポインタを返す

IntPtr p = get_struct();
Hoge hoge = (Hoge)Marshal.PtrToStructure(p, typeof(Hoge));
string s = Marshal.PtrToStringAnsi(hoge.str, (int)hoge.length); // ここで変換がうまくいっていない


ちなみに length が正しく文字列のバイト数を格納していることは確認しています。
454デフォルトの名無しさん:2009/09/22(火) 19:11:16
RtlMoveMemory() で文字数分切り取ればOK。
455デフォルトの名無しさん:2009/09/22(火) 19:12:33
「うまくいかない」の具体的な事象は?
456デフォルトの名無しさん:2009/09/22(火) 19:17:43
>>454
試してみます。

>>455
文字がシングルバイトかマルチバイトかにかかわらず文字化けします。
457デフォルトの名無しさん:2009/09/22(火) 19:25:12
一部だけ?全部?
char*はANSI(ASCII/Shift_JIS)の文字列で良いの? たまに違う文字セット使う場合もあるけど
取り敢えずMarshal.CopyでIntPtrをbyte[]に転写して中身調べたらどんな感じ?
458デフォルトの名無しさん:2009/09/22(火) 19:37:26
>>457
全部です。
Copy すると byte 配列が明らかにおかしいですね。
char* は ANSI で間違っていないのですが、
byte[] に格納されたバイトは ANSI でも Unicode でもなさそうです。

期待する文字列: 太郎
Marshal.Copy(hoge.str, bytes, 0, hoge.length) の結果: {8, 0, 0, 0}

もしかしたら>>453とは関係ない部分かもしれないので API 等見直します。
ありがとうございました。
459デフォルトの名無しさん:2009/09/22(火) 20:54:01
>>452
可能性でいやなんでも可能性はあるぜ?
大体NewしただけでLoadイベントが発生する作りのFormなんて明らかにおかしいわけで。

----引用開始
またLoadイベントは、コンストラクタの完了を待って同期的に呼ばれるのでは、
といったイメージをもたれがちですが、これも間違っています。
Loadイベントは、コンストラクタで実行されるInitializeComponentメソッドが
完了した後に呼ばれます(正確にはデザイナコードのResumeLayoutメソッドで
レイアウト描画が開始された時)。
つまり、InitializeComponentの直後に記述したロジックと、Loadイベントに
記述したロジックは、どちらが先に実行されてもおかしくありません。
この現象は、マルチスレッド、マルチコアCPUの実行パフォーマンスが最適化
されたWindows Vistaでよく起こるようです。

どちらの現象も開発者に正しく理解されてないことが多く

----引用終了
いややっぱりおかしいって。
多分作りのおかしなアプリ動かして、普通に起こる現象だと勘違いしてる。
460デフォルトの名無しさん:2009/09/22(火) 21:02:29
>>453
C#側の構造体に[StructLayout(LayoutKind.Sequential)]とか書いてある?
461デフォルトの名無しさん:2009/09/22(火) 21:02:54
あー、確かにその記述はフォローできないな
WinFormなんだからシングルスレッドで同期的に動かされるのは当然だもの
462デフォルトの名無しさん:2009/09/22(火) 21:04:12
>>459
明らかにおかしいとは思えんね。
Loadの意味的な定義は「ShowまたはShowDialogが呼ばれた」なんだから、
InitializeComponentの中だろうがなんだろうが、それが起これば発生してくれなきゃ
逆にそっちの方が「オカシイ」よ。
463デフォルトの名無しさん:2009/09/22(火) 21:06:08
発生することがおかしいと言ってるんじゃないよ。
本の記述というか、説明がおかしいと言ってる。
どこかでShowしたらそりゃそのタイミングで発生するのは当たり前。
464デフォルトの名無しさん:2009/09/22(火) 21:11:33
ついでに言うと、マルチスレッドでの例外はこんな感じだ。
デリゲートの非同期実行での例外に関する記述で、EndInvokeを使用してないコードを書いてて、

----引用開始
このマルチスレッド例外のしくみは、ほとんどの開発者に正しく理解されていません

つまり別スレッドで起こった例外は、メインスレッドから検知できません。
これはマルチスレッドにおける重要な仕様です。
別スレッドで起こった例外は、何事もなかったかのように例外の起こったスレッドを
終了しています。

たとえばSocketを使用した非同期通信のしくみを利用した場合、非同期処理の部分は
別スレッドで実行される場合があります。

通信エラーが起こっても正しく検知できません。
通常のスレッド処理や、スレッドプールが暗黙的に使われるタイマー処理、デリゲート
でも同じことが言えます。
----引用終了

そりゃEndInvokeとか使ってないんだから当たり前。
それにBegin〜系以外ならちゃんとハンドルされてない例外になるから
タイマーとか普通のスレッドとか普通のスレッドプール利用とかでは当てはまらない。

この人のコードは基本的に非同期処理でEnd〜を使ってない。
非同期処理は不安定とか結構文句が書いてあるんだが、
それってちゃんとEnd〜してないからってのと、他にもなんか
ぽかやってんじゃないかと思ってしまう。
465デフォルトの名無しさん:2009/09/22(火) 21:23:03
これに対する対処として書かれてる方法が、
非同期実行する対象のメソッドの先頭で、
InvokeRequired調べてコントロールにInvoke。

いくらなんでも例として不適切だ。
466デフォルトの名無しさん:2009/09/22(火) 21:29:24
>>463
なるほど失礼。
467デフォルトの名無しさん:2009/09/22(火) 21:43:43
MSの記事のどこかでMS社員が
FormsのFormの内部実装でスレッドの見落としがあってバグ採りしたってあったなー

コントロールのメソッド一つ一つにInvokeRequiredをガードに入れるという作業
468デフォルトの名無しさん:2009/09/22(火) 22:16:52
質問です。

Set xls = CreateObject("Excel.Application")
xls.Visible = True
Set book = xls.Workbooks.Add

これをC#で書くと、どんな感じになりますか?
469デフォルトの名無しさん:2009/09/22(火) 22:21:36
・ExcelをCOM参照すればまあ似たような感じに書ける
・レイトバインドじゃないと嫌なら、C#で記述するのは諦めてVBで書く
・Excelの相手はVBScriptにやらせて、C#からはProcess.StartでそのVBSを起動するだけにする
お勧めは3つめ
470デフォルトの名無しさん:2009/09/22(火) 22:33:43
レイトバインドもできないわけじゃないけど、かなり面倒だわな。
471デフォルトの名無しさん:2009/09/22(火) 22:35:28
C#4.0待ち
472デフォルトの名無しさん:2009/09/22(火) 22:36:20
お勧めは、Excel Web Service。
473デフォルトの名無しさん:2009/09/22(火) 22:38:16
Visual Studio 2008 で開発してます。
DataGridViewの一行のデータDataRowに、画面には表示しないバイナリデータや、
ArrayListなどを紐付けたいのですが、
DataRowあるいはDataGridViewに、そういう画面非表示のデータを紐付けて管理するメソッド等ありますか?
MFCのCComboBoxのSetItemDataPtr()のようなメソッドです。
474デフォルトの名無しさん:2009/09/22(火) 22:41:58
そういうのは"バインディング"といって,メソッドとかそんなレベルじゃなくてちゃんとした仕組みがあります
475デフォルトの名無しさん:2009/09/22(火) 22:42:12
Dictionary<DataRow, T>辺りで別管理した方が楽じゃね?
476473:2009/09/22(火) 22:57:02
ありがとう。
今はSQLの結果のDataTableをDataGridViewのDataSourceに設定してから、
その1行のデータの一部からバイナリデータやArrayListを作ってDataTableに付加してたが
付加してからBindするようにしてみる。
Dictionaryもちょっと検索してみます。ありがとう
477468:2009/09/22(火) 23:09:02
ありがとうございます。
COM参照が(自分の中で)一番わかりやすいです。
Excel Web Serviceとやらは初めて聞きました。勉強してみます。
478デフォルトの名無しさん:2009/09/22(火) 23:11:25
COM参照は正直お勧めできない
ReleaseComObject&Missing地獄
479デフォルトの名無しさん:2009/09/22(火) 23:42:53
>>469
アーリーバインディングが抜けてると思う。
Excelのtlbからアセンブリ作って参照に追加。
お手軽だけどExcelのバージョンアップ時には再ビルド。

まあ、余程の事情(Wordのスペルチェックを呼び出して結果を取りたいとか)
じゃなければ俺も3がお勧め。
480デフォルトの名無しさん:2009/09/22(火) 23:52:05
>>479
それって COM 参照と何が違うの?
481デフォルトの名無しさん:2009/09/23(水) 00:56:36
>>480
COM使ってレイトバインディングと同じ事をやる技がある。
その場合は、固定の参照設定は使わない。
しかし、生でCOMを使うわけだから自分でマーシャリングとかCOMオブジェクト
の始末とかをやらないとならない。
482デフォルトの名無しさん:2009/09/23(水) 00:58:58
そんなこと聞いてないんだけど。

> アーリーバインディングが抜けてると思う。
> Excelのtlbからアセンブリ作って参照に追加。

これと、COM 参照の違いは何?
483デフォルトの名無しさん:2009/09/23(水) 01:01:54
「ただExcelファイルを開くだけの」COMを使ったレイトバインディング例
http://d.hatena.ne.jp/zecl/20080128/p1
484デフォルトの名無しさん:2009/09/23(水) 01:03:58
あ、COM参照==アーリーバインディングを意味して書かれてたか。
すまん、読み違えた。
485デフォルトの名無しさん:2009/09/23(水) 01:06:01
>>484=>>479とか>>481でいいの?
486デフォルトの名無しさん:2009/09/23(水) 01:08:08
さすがに違うだろ。
487デフォルトの名無しさん:2009/09/23(水) 01:29:34
まじキチ…ユダヤが人工地震を起こすぞ

【緊急情報カクサンよろしく】

ついに来ました。

大きい動きです。250nT超えてきました。ほぼ間違いありません。もう一度言います。

友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。

四川地震より大きいのが来る可能性があります。
http://g★olde★ntam★atama.b★lo★g84.fc2.c★om/

★★★★★危険度MAX★★★★★
★★★★★★★★★★★★★★★★

★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★

★★★★★★★★★★★★★★★★
★★★★★危険度MAX★★★★★

警告!連休中の21、22、23日が危ない!かも2
http://live24.2ch.net/test/read.cgi/eq/1★253494015/
【大気イオン】e-PISCO Part11【また延長】
http://live24.2ch.net/test/read.cgi/eq/1★252991726/

本当に地震が来たら、犯人は特権階級全員だということ2
488デフォルトの名無しさん:2009/09/23(水) 02:31:32
Windows Form 上に
ラジオボタン、TextBox(MultiLine)にあるとします。

そしてTextBox上の文字列を選択し、その上の部分にあるラジオボタンの選択を
切り替えた場合にも、TextBox上の選択文字(背景色黒)が解除されない様にするには
どうすれば良いでしょうか?

TestWindowsForm

●トマト ○きゅうり ○りんご

AA【AA】AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA

※この【**】の部分を選択した状態で上のラジオボタンの選択を切り替えても
選択状態が解除され無い様にしたいです。
489デフォルトの名無しさん:2009/09/23(水) 02:39:45
しつこいな
490デフォルトの名無しさん:2009/09/23(水) 03:44:11
プロパティが上手く使えないんだが…
どうしてもメソッドでやってしまう。
491デフォルトの名無しさん:2009/09/23(水) 04:30:49
>>488
宿題スレいけ
492デフォルトの名無しさん:2009/09/23(水) 04:34:47
>>488
TextBox.HideSelection = false
でOK
493デフォルトの名無しさん:2009/09/23(水) 10:41:54
>>487
コピペ君って馬鹿だな、まで読んだ。
494デフォルトの名無しさん:2009/09/24(木) 01:37:11
>>492
遅くなったけどありがとうございます。
495デフォルトの名無しさん:2009/09/24(木) 23:57:07
C# ネイティブ化ツールでお勧めはどっち? (処理速度など)
Xenocode Postbuild 2009 for .NET
Salamander .NET
496デフォルトの名無しさん:2009/09/25(金) 00:02:42
なんか期待してるモノと違くね?
497デフォルトの名無しさん:2009/09/25(金) 00:05:17
C#使っている時点で処理速度はあきらめるしかない
498デフォルトの名無しさん:2009/09/25(金) 00:13:12
速度はやっぱりあきらめるしかないですか・・

説明に
Compile .NET to native executables.
eliminating .NET Framework installs
って書いてあるから期待したんだけど
ildasmとかの難読化がメインかな? このツール
499デフォルトの名無しさん:2009/09/25(金) 00:14:50
つーか、それなりのハードなら、それほど遅くない。
500デフォルトの名無しさん:2009/09/25(金) 00:25:26
難読化とインストール時のNgenで十分だろ
501デフォルトの名無しさん:2009/09/25(金) 00:40:18
GCや型システムのようなものをそのまま残している以上
ネイディブにコンパイルできても速度は代わらない。
GC無くし型システムを変更してしまうともうC#ではない。
javaに対するgcjと同じ流れだよね。

.NETはIOが無い部分のコードを局所的に測定すると分かるけど、
ネイティブと比べてほとんど遜色ないスピードが出ている。
起動から終了まで全体測ると遅くなるけどね。
502デフォルトの名無しさん:2009/09/25(金) 01:15:20
言語とライブラリの区別はつけような
503デフォルトの名無しさん:2009/09/25(金) 01:21:28
その突っ込みもズレてね?
504デフォルトの名無しさん:2009/09/25(金) 01:24:11
そういやそんな気がしてきた
505デフォルトの名無しさん:2009/09/25(金) 01:33:54
C#ってCなんかに比べてメソッドコール遅くない?
506デフォルトの名無しさん:2009/09/25(金) 01:57:40
気になるならアセンブリ言語にしとけば?
507デフォルトの名無しさん:2009/09/25(金) 02:37:39
気になるならC言語にしとけば?
508デフォルトの名無しさん:2009/09/25(金) 02:53:22
.Netで作ったアプリを Adobe の Flash8 みたくアクティベーション形式にするには

どうすれば良いでしょうか?

コピーして作ったソフトを使われるのを防ぎたいです。
509デフォルトの名無しさん:2009/09/25(金) 02:58:40
スレ違い
510デフォルトの名無しさん:2009/09/25(金) 03:03:53
>>505
Cって・・・当たり前やんけ。
何が言いたいの?
511デフォルトの名無しさん:2009/09/25(金) 06:47:31
>>508
そういう風に作れば良い
512デフォルトの名無しさん:2009/09/25(金) 10:44:23
メソッドコールは条件によってだいぶ変わるな。
だが特に遅いことはない。

むしろCとかと比べて遅いのはstatic変数へのアクセスとか、特に参照型メンバなんかへの書き込み。
513デフォルトの名無しさん:2009/09/25(金) 16:36:14
Directory.GetFilesで得られるstring[]の中に入るファイル名は、
ちゃんと昇順で並んでいるっぽいんですけれど、保障はあるんですかね?
自分でソートする必要があるんでしょうか?
514デフォルトの名無しさん:2009/09/25(金) 16:43:18
>>513
ドキュメント読めよ。
「返されるファイル名の順序は保証されません。」って書いてある。
515デフォルトの名無しさん:2009/09/25(金) 16:44:05
なんの保証もないって明記されてなかったか?
ファイル作りなおしたりして見てみろ
516デフォルトの名無しさん:2009/09/25(金) 17:02:02
ううぅ、MSDN見たつもりだったんですが‥‥。
書いてありましたか、どうもすみませんでした。
517デフォルトの名無しさん:2009/09/25(金) 17:13:33
ファイル名順になっている理由は、NTFSのMFTにはファイル名順で
格納されているからじゃなかったかな?
518デフォルトの名無しさん:2009/09/25(金) 19:16:38
トライアル版でネイティブにコンパイルにしたら
.NET Framework入れてない環境でも動いたよ。

欲しいけど高い...
519デフォルトの名無しさん:2009/09/25(金) 23:23:08
WinPEで動くexeをC#で作りたいけど・・・高い。
htaでいいや。と感じてしまう。
520デフォルトの名無しさん:2009/09/26(土) 01:41:32
>>511
アプリの起動時にどこかの鯖にアクセスするイメージで大丈夫?
私が思いついたのはそれ位です。
521デフォルトの名無しさん:2009/09/26(土) 02:50:56
ネットがつながらないと起動もできないアプリ
522デフォルトの名無しさん:2009/09/26(土) 03:30:41
質問です、すいませんがお願いいたします。
C#については、最近使い始めたところで、正直なところ理解が浅いレベルです。


1.やりたいこと
プログラムを実行するとWindowsフォームが起動して、自動的に処理を開始。
処理に問題が無ければ、自動的にWindowsフォームを終了させたいです。

2.問題現象
「ObjectDisposedExceptionはハンドルされませんでした。破棄されたオブジェクトに
アクセスできません。オブジェクト名'Form1'です。」というエラーが発生します。

3.やってみたこと
切り分けというか、試行錯誤として下記のことを試してみました。
・Windowsフォームにボタンを追加し、ボタンが押された場合にCloseメソッドを呼び出し。
  ⇒正常に終了できるが、ただ、ボタンをクリックする必要があるため要件を満たさず。
・this.Close()の代わりにthis.Dispose()を使用
  ⇒エラー内容の変化なし。
・Main関数の中で、Application.Exitを実行。
  ⇒Application.Run以降の行が実行されない。
・Main関数の中で、例外処理を入れ、try-finallyで終了処理を入れてみた。
  ⇒エラー内容の変化なし。finally節まで行かない。

4.分からない点/お聞きしたい点
・エラーを出さずに、自動的にWindowsフォームを終了させる方法が分かりません。
・サンプルコード等、例になるようなサイトはありますか?「どぼん!の .NET Tips」の
 サイトを参考に、Closeメソッド等を試してみてました。
・自動的に処理を実施させたかったので、コンストラクタ内に処理を書いたのですが、
 あまり良い書き方ではないのでしょうか?作法などありますか?
523522:2009/09/26(土) 03:33:04
5.環境
OS: Windows XP SP3
Visual C# 2008 Express Edition 9.0.2
.NET Framework 3.5 SP1


6.コード
static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1()); ←★ここでエラーが出ます。
}



namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
      
      //ここに将来的に自動化処理を入れたい
      
      this.Close();
    }
  }
}
524デフォルトの名無しさん:2009/09/26(土) 03:47:21
Environment.Exitなら一応終了できる
しかしコンストラクタでやったらフォーム表示される前に終わるんだが

Shownイベントでやってみたら?
最後呼ぶのはCloseでおk
525デフォルトの名無しさん:2009/09/26(土) 04:44:28
>>522
フォーム起動後に処理を行うのでフォームのロード後に処理を始める必要がある。
フォームのロード完了時に処理を行う方法は以下の 3 通り。
1. Form1 で OnLoad をオーバーライドする
 public Form1() {
  InitializeComponent();
 }
 protected override void OnLoad(EventArgs e) {
  base.OnLoad(e);
  // 自動化処理
  this.Close();
 }
2. Form1 のコンストラクタで Load イベントにイベントハンドラを追加する
 public Form1() {
  InitializeComponent();
  this.Load += new EventHandler(Form1_Load);
 }
 private void Form1_Load(object sender, EventArgs e) {
  // 自動化処理
  this.Close();
 }
3. Form1 のインスタンスの Load イベントにイベントハンドラを追加する
 static void Main() {
  Form1 form = new Form1();
  form.Load += new EventHandler(form_Load);
  Application.Run(form);
 }
 private static void form_Load(object sender, EventArgs e) {
  // 自動化処理
  ((Form1)sender).Close();
 }
526デフォルトの名無しさん:2009/09/26(土) 07:26:01
>>522
実行中にフォームを表示させておきたいなら、
Loadイベントでタイマーで1回だけキックかけるのが一番楽かな。
フォームにキャンセルボタンを付けたいならスレッドがスマート。
527デフォルトの名無しさん:2009/09/26(土) 08:05:13
表示は最初にApplication.DoEventsでいいよ
528デフォルトの名無しさん:2009/09/26(土) 08:06:58
それはないわ。
529デフォルトの名無しさん:2009/09/26(土) 08:19:30
あーごめんLoadでやったら無理だったわ、忘れて
530522:2009/09/26(土) 08:38:49
皆さんレスありがとうございます。非常に助かりました。
幾つか解法を頂きましたが、スキル不足のため、どれが一番
合っているか判断がつけづらいため、頂いたレスを参考にして、
少し色々と試してみることにします。


>>524
Shownイベント、ぐぐって見ました。なるほど楽に実装できるかも
しれませんね。

>>525
ソースコードまで書いていただきありがとうございます。
正直なところ、イベントハンドラやオーバーロード自体の扱いに
あまり慣れていないので、これを機に、頂いたソースを元にして
色々と試してみたいと思います。

>>526
すいません、526さん=529さんですか?そうであれば、実際に
試していただくところまでやっていただきありがとうございました。

>>527
Application.DoEventsというのは、イベントが溜まった際に、意識的に
実行させたい時に使うことくらいしか出来ないかと思っていました。
ちょっとどうやって処理するか分からないので参考にさせていただきたいと
思います。
531デフォルトの名無しさん:2009/09/26(土) 09:59:44
つうかよ、そもそもそれForm作成表示する必要あんのか?
コンソールアプリにするかか、
Windowsアプリで単にMainで必要な処理書くだけでいいんじゃないのか?
532デフォルトの名無しさん:2009/09/26(土) 10:02:03
もし表示する必要あるなら、
BackgroundWorkerを貼り付けてForm_Loadで実行開始
完了イベントでClose
533デフォルトの名無しさん:2009/09/26(土) 10:02:45
これならキャンセルにも対応させられる
534デフォルトの名無しさん:2009/09/26(土) 10:10:52
Form1が必要無いように思える
Main内で処理してApplication.Runを使わずに自動的に終わることもできる
535デフォルトの名無しさん:2009/09/26(土) 10:50:34
>>531、534
正直おっしゃるとおりと思います。実は、作成開始時点で、コンソールアプリにすることも考えました。
ただ、下記の様な理由で、コンソールアプリではなくGUIアプリとして作成することにしました。
開発動機が自身の勉強目的でGUIアプリが作りたい!というところから来ているのかもしれません。

・C#/Windows GUIプログラムの勉強ができる。
・ユーザ毎に入力すべきパラメータが異なり、その部分はGUIにしてユービリティを向上したかった。
・既にコーディング済みのソースを再利用したい。

また、冗長になり、焦点がぼけてしまうかとかと思い、>>522では省いたのですが以下の様な
完成品を目指しています。「下記3の項目以外」は既にコーディング/動作確認も完了しているため、
>>522では下記3の項目のみ質問させて頂きました。省かずに記述した方が良かったですかね・・・。

1.アプリを起動するとWEBページに自動的にアクセス
2.ID/パスワードなど幾つかの設定済みパラメータを自動送信し、処理を行う(実行状況をフォーム上で表示)
3.処理が正常に完了した場合はユーザがOKボタンを押すことなく自動的に終了する
4.パラメータが間違っているなど異常な場合のみ、フォーム上でパラメータ設定変更/保存をユーザにさせる
5.2を手動で実行することも可能


皆さんのレスを頂いてから、Main内の処理(特にフォームの扱い)について勉強が必要かなと思いました。
完了イベントを自動で行う機能追加をプラスすると>>532さんの実装が一番理想に近いのかもしれません。
こうした方が、よりよい実装じゃないかとアドバイス頂けるのは正直参考になり有りがたいです。
536デフォルトの名無しさん:2009/09/26(土) 10:52:14
Shown でやればいいだけだな。
537デフォルトの名無しさん:2009/09/26(土) 11:00:16
もしくはロードでControl.BeginInvokeとかな
538デフォルトの名無しさん:2009/09/26(土) 11:02:40
設定用のとプロセス分けることを考える
539522:2009/09/26(土) 11:08:52
結局幾つか試してみて下記のようにShownイベントを追加する事にしました。
みなさん、レスありがとうございました、本当に助かりました。

static void Main()
{
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new Form1());
}


namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
 {
  public Form1()
  {
    InitializeComponent();
  }

  private void Form1_Shown(object sender, EventArgs e)
  {
    // 自動化処理を記述

    if(//自動化処理結果がOK){
      this.Close();
    }
  }
 }
}
540デフォルトの名無しさん:2009/09/26(土) 14:00:42
ListViewを2つ用意して、同じContextMenuStripを起動していろいろ処理をしたいのですが、

1)listView1.ContextMenuStrip = contextMenuStrip1;
listView2.ContextMenuStrip = contextMenuStrip1;

2)contextMenuStrip1にはtoolStripMenuItem1があり

3)toolStripMenuItem1_Click()で
ListView parentListView = (ListView)((ContextMenuStrip)(((ToolStripMenuItem)sender).Owner)).SourceControl;
としてメニューがクリックされたときのListViewを識別します。

4)普通にtoolStripMenuItem1をクリックすると3)のparentListViewはlistView1またはlistView2が正しくセットされていますが
5)listView1、listView2のダブルクリックイベントでtoolStripMenuItem1.PerformClick()をすると
 3)ではparentListViewはNULLになってしまいます。
 デバッグするとcontextMenuStrip1_Openingイベントも通らないので当然の気がしますが、
 なんとかダブルクリックしたListViewを知る方法は無いでしょうか?
541デフォルトの名無しさん:2009/09/26(土) 14:06:14
Click か DoubleClick イベントでどこかに設定しとけばいいんじゃね?
542デフォルトの名無しさん:2009/09/26(土) 14:06:48
最近初心者級の質問が増えたな
543デフォルトの名無しさん:2009/09/26(土) 15:09:35
>>541
さんくす
ダブルクリック時にprivate変数に退避しておくことにしました。
せっかくSourceControlなんていうプロパティがあるのでなんとかだませないかなと思ったのですが。
544デフォルトの名無しさん:2009/09/26(土) 16:37:07
今更ながらPropertyGridって便利だねする
初期処理の重いアプリの外観の細かいところを見ながら調節したり
プロパティがどういう動作するのか試したいときに
なんでもアプリ起動させなくていいから助かる
545デフォルトの名無しさん:2009/09/26(土) 17:02:23
>>544
???
546デフォルトの名無しさん:2009/09/27(日) 05:08:55
Shownイベントで記述する人が多いんだな。
通常はLoadイベントでやってたよ。
547デフォルトの名無しさん:2009/09/27(日) 09:49:48
プログレスバーとかラベル表示出すために Shown 使ってる。
Load では出せないと思い込んでいるが、試したことないな。
548デフォルトの名無しさん:2009/09/27(日) 10:56:12
表示前と表示後で使い分けるだけでしょ
普通はこっちとかじゃなくて処理に応じて考える
549デフォルトの名無しさん:2009/09/27(日) 11:02:55
だね
550デフォルトの名無しさん:2009/09/27(日) 15:56:18
コンストラクタとLoadの使い分けがよくわからない
551デフォルトの名無しさん:2009/09/27(日) 16:07:32
コントロールを触るようなコードはLoadに書くのが確実
他は全部コンストラクタ
552デフォルトの名無しさん:2009/09/27(日) 16:31:33
WindowsForm上で右クリックをした時に
メニューを表示させるにはどういうコントロールを使った方がいいのでしょうか?
553デフォルトの名無しさん:2009/09/27(日) 16:34:55
ContextMenuStrip
554デフォルトの名無しさん:2009/09/27(日) 16:36:12
ContextMenuStrip クラス
555デフォルトの名無しさん:2009/09/27(日) 16:47:20
ちょっと調べりゃわかるようなことを聞く奴って精神分析の対象にしか思えん。
ひょっとしてMって奴?
叩かれたいのかな。
556デフォルトの名無しさん:2009/09/27(日) 16:54:03
ちょっと調べれば分かるようなことだから聞かれるんでそ
557デフォルトの名無しさん:2009/09/27(日) 17:03:27
え?
558デフォルトの名無しさん:2009/09/27(日) 17:17:40
ちょっと調べる=2chで聞く
559デフォルトの名無しさん:2009/09/27(日) 17:41:34
調べずに聞くw
560デフォルトの名無しさん:2009/09/27(日) 18:02:03
ネットで情報収集=2chで聞く
561デフォルトの名無しさん:2009/09/27(日) 18:02:23
職場とかでコミュニケーションの一環としてどうでもいいこと軽く聞いただけで
キレる人っているよね。

そうだね、俺嫌われてるね。
562デフォルトの名無しさん:2009/09/27(日) 18:27:06
そーかそーか、1+1は?とコーヒーブレイクにでも聞いてみろ。
ついに頭イッたかと病院行くことを薦められることうけあい。
563デフォルトの名無しさん:2009/09/27(日) 18:29:19
ちょっと調べれば分かるだろうが
調べなければ分からない奴はそもそも来ない
564デフォルトの名無しさん:2009/09/27(日) 18:30:56
お前ら、マ板でやれ
565デフォルトの名無しさん:2009/09/27(日) 21:15:22
「明日晴れるかねぇ〜?」
「ググれカス」
566デフォルトの名無しさん:2009/09/27(日) 21:16:55
>>553 >>554
ありがとうございます。
567デフォルトの名無しさん:2009/09/27(日) 23:42:02
>>562
それはどーでも良いことですらない
568デフォルトの名無しさん:2009/09/28(月) 08:20:56
ググレかすとか自分で調べろとか言う奴はそもそも何でこのスレをみているの?
569デフォルトの名無しさん:2009/09/28(月) 08:30:04
知識の劣る者を見下すためでしょう
570デフォルトの名無しさん:2009/09/28(月) 10:40:49
リアルで怒鳴られる前にそれぐらいのマナーは知っとけ
571デフォルトの名無しさん:2009/09/28(月) 11:11:31
ググったらすぐ分かるようなものを掲示板を使って質問することに合理性を見出せない。
誰かがレスしてくれるまでその問題はお預けになるじゃない。
っていうかそのくらい調べられないでプログラムの道を進んでいくことに不安を覚えてしまう。
そういった優しさからググレカスと言ってるのではないだろうか。
572デフォルトの名無しさん:2009/09/28(月) 12:07:09
どういう質問をしたらウザがられるかとか、そういう周辺知識を学ぶのもプログラミングの勉強のうちだよ。
一番最初はね。
コードが書けるだけじゃプログラマーにはなれない。対人コミュニケーションが重要。
573デフォルトの名無しさん:2009/09/28(月) 12:28:28
あんたがウザいよ
人の事を言う前に自分をどうにかしろ
574デフォルトの名無しさん:2009/09/28(月) 12:50:34
しかし伸びないな
575デフォルトの名無しさん:2009/09/28(月) 13:27:03
ググれカスって書きこむとアドレナリンが出るんだよな
576デフォルトの名無しさん:2009/09/28(月) 16:20:34
例外処理で
catch(AException){
A();
B();
}
catch(BException){
A();
C();
}
catch(CException){
A();
D();
}

例外時に(DExceptionが加わったとしても)Aは必ず実行するのですが全ての例外にAを書くしかないんですか?
577デフォルトの名無しさん:2009/09/28(月) 16:21:46
ちなみに例外が無い場合Aは実行しません
578デフォルトの名無しさん:2009/09/28(月) 16:30:13
全てに書くしかありません
ILレベルでは何らかの例外が発生した場合に実行されるfaultブロックというのがありますが
C#ではサポートされていません
ちなみに,いくら面倒だからって一つのException型を受け取るcatchで受けて
その中で型で振り分けたりするのはガイドライン違反になるのでダメです
579デフォルトの名無しさん:2009/09/28(月) 16:36:01
一つ下のブロックに落として再スローした例外をキャッチしたところでA()を呼ぶとか。
try {
try {
} catch (AException ex) {
B();
throw new Exception(ex);
} catch (BException ex) {
C();
throw new Exception(ex);
}
} catch (Exception) {
A();
}
580デフォルトの名無しさん:2009/09/28(月) 16:44:08
なんだそのデタラメコードは。
せめて内側でExceptionでうけてA実行した後
throw;
だろ
581デフォルトの名無しさん:2009/09/28(月) 20:18:48
それもおかしい。
582デフォルトの名無しさん:2009/09/28(月) 21:34:22
CCRって.NET4.0で統合されるんだったよね?
ググってもうまく見つけられん・・・
.NETとか検索しずらいよ(´д`)ママン…
583デフォルトの名無しさん:2009/09/28(月) 21:37:55
>>576
AとBCDが順不同なら、

try {
  // do something
  return;
} catch(AException) {
  B();
}
A();

そうでなければ、

Actoin handler = A;
try {
  // do something
} catch(AException) {
  handler += B;
}
handler();

ただし、前者はともかfく、後者はお勧めしない
584デフォルトの名無しさん:2009/09/28(月) 21:45:55
後者にするくらいなら>>578の禁じ手の方が遥かにマシ
585デフォルトの名無しさん:2009/09/28(月) 22:37:34
ひとつのExceptionにして何が悪い。
困ることなんてないだろう。
586デフォルトの名無しさん:2009/09/28(月) 22:46:00
困らない人はそりゃ困らないだろうね
587デフォルトの名無しさん:2009/09/28(月) 22:54:35
catch(Exception ex) {
A();
if (ex is AException) { … }
else if (ex is BException) { … }
else throw ex;
}
ありそうだけど,これは再スローにならん
スタックトレースがクリアされてしまう
588デフォルトの名無しさん:2009/09/28(月) 22:59:24
throw ex; → throw;

589デフォルトの名無しさん:2009/09/28(月) 23:40:18
>>581
いいかどうかは別としておかしくはないんじゃないの?
Exceptionでホントにいいかにはよるけれども
もともと>>579に対して書いてるんだし。

try
{
try
{
}
catch(Exception)
{
A();
throw;
}
}
catch(AException)
{
B();
}
catch(BException)
{
C();
}
catch(CException)
{
D();
}
な感じだろ。
590デフォルトの名無しさん:2009/09/28(月) 23:41:52
って思ったけどやっぱりおかしいなってか>>579を読み違えてたわ。
591デフォルトの名無しさん:2009/09/28(月) 23:49:23
C#のコンソールのほうで質問です。
名前、年齢を入力して
20歳以上なら〜以下なら〜で作ったのですが
入力が両方から文字の場合エラーを報告するにはどうしたらいいのでしょうか

今はif(name == "" && toshi == "")
{ Console.W〜えらーだよ
}
な感じなんですが
空文字で進めるとコンソールのほうからエラーをだしてきます
どのように対処したらいいでしょうか・・・
592デフォルトの名無しさん:2009/09/28(月) 23:52:23
日本語でおk
593デフォルトの名無しさん:2009/09/28(月) 23:52:40
何のエラーか書け
594デフォルトの名無しさん:2009/09/28(月) 23:56:23
コンソール「のほう」って何だよ
コンソールじゃねえのかよ
595デフォルトの名無しさん:2009/09/28(月) 23:57:51
消防署のほうから来ました
596デフォルトの名無しさん:2009/09/28(月) 23:59:16
消防署の方から来ました
597デフォルトの名無しさん:2009/09/29(火) 00:00:14
ご結婚おめでとうございます。
598デフォルトの名無しさん:2009/09/29(火) 00:32:25
末永くよろしく
599デフォルトの名無しさん:2009/09/29(火) 01:34:50
ttp://xy.yu.to/
寂しい人向け
混む時間帯は人気ありすぎて定員オーバーで入れん

24時間荒れ放題の超カオスな絵チャット
本当の本当に完全無法地帯の絵チャット
(2ちゃんとは比較にならない)

荒しとプログラマーと防衛プログラマーの攻防戦
防衛側が強し、求む強力荒しプログラマー
しかも外国サーバー(イギリス)で管理人は荒し容認
殺人予告すらOKっぽい。ログなんて当然取ってないし
600デフォルトの名無しさん:2009/09/29(火) 03:08:28
見てないけど絵チャット関係なくね
601デフォルトの名無しさん:2009/09/29(火) 03:12:03
>>599
ウィルス仕込まれた
602601:2009/09/29(火) 06:33:25
ウイルス仕込まれた
ってそれ>>509の犯罪じゃねーか?
603デフォルトの名無しさん:2009/09/29(火) 07:12:30
はいはい、コピペ乙っと
604デフォルトの名無しさん:2009/09/29(火) 10:58:23
自作アプリ起動時にlog.txtの作成日時を確認して、当日で無い場合は
その古くなったlog.txtを作成日時にリネームして退避し、
新たにlog.txtを生成してそこにログを書きこみたいと思いました。

起動時しか確認しない理由は、処理コストを考えて。
一般的なファイルの更新日時を確認するやり方で無く、作成日時で行うのは、
24時間以上、アプリが再起動されなかった場合を考慮してです。

さて、本題ですが、例えば作成日時が25日のlog.txtをlog_25.txtにリネームして、
新たにlog.txtを作成した場合に、新しいlog.txtの作成日時も25日のままです。
File.GetCreationTime(filePath).Dateで取得しています。

ファイルのタイムスタンプってファイルじゃ無くファイル名に紐付くという
そういう性質のものなんでしょうか?
605デフォルトの名無しさん:2009/09/29(火) 11:06:29
>>604
はじめからlogyyyymmdd.txtってファイル名じゃだめな理由は?
あとlog4netでぐぐると幸せになれるかもしれない。
606デフォルトの名無しさん:2009/09/29(火) 11:11:46
>>605
ログファイルは、別の運用監視ツールで状況をチェックされる可能性があるので、
一般的にアクティブログのファイル名は一定にするのです。

CF3.5で作っているので、log4netは古すぎてちょっと怖いのです。
CF1.0になんとなく対応しているサンプルは入っていましたが。

log4netは毎回日時をチェックするタイプで、更新日付でチェックするタイプですよね。
今の.NETってDiagnostics.Traceがリリースビルドでも使えるように出来るので、
これをうまく使うと、良い感じでログクラスが使えるかと思ったんですが。

どうやらファイルシステムによっても違うのかも。VistaのNTFSなんですけれど。
607デフォルトの名無しさん:2009/09/29(火) 11:36:46
毎日0:00にlog.txtが存在するかを確認する。
log.txtがあればリネーム退避する。
ファイルを作る時にlog.txtがあれば書き込み、なければ新規作成して書き込む。

これでいけそうだが。
24時間に1回の処理をコスト高というなら何も言わない。
608デフォルトの名無しさん:2009/09/29(火) 11:53:10
log4net嫌い。
NLOGだったか、忘れたけどそっちの方がまだいい。

でまあ俺も最初から日付で作りゃいいと思うぞ。
609デフォルトの名無しさん:2009/09/29(火) 11:55:12
あ悪い読んでなかったわ
610デフォルトの名無しさん:2009/09/29(火) 11:57:49
う〜ん、でも毎日0:00にアプリが起動しているか分からないし、
0時1分に起動することだってあり得るし。
タスクスケジューラで別処理するほどのことじゃないし。

まぁ、作成日時では無く最終更新日時では上手くいくみたいなので、
最終更新日時でお茶を濁してみます。
毎日、0時をまたいで起動されていたら、ローテーションしなくなっちゃいますけれど。

ログ自体に各行に日付が入っているので、
先頭行を読んで処理したりしても良いんですけれど‥‥
611デフォルトの名無しさん:2009/09/29(火) 12:03:40
レジストリなど他媒体を使うってのもあり。
612デフォルトの名無しさん:2009/09/29(火) 12:41:20
ヘッダ行付けるか1行目のログの日付読むのがまあ無難ちゃ無難なんじゃない?
613デフォルトの名無しさん:2009/09/29(火) 12:42:44
ファイル作る時にヘッダにその日時かいておけば?
614デフォルトの名無しさん:2009/09/29(火) 12:48:23
みなさん、有難うございます。
レジストリは盲点でした。
他でレジストリ使うなら、ちょこっとローテ履歴を書いちゃいますか。

そうですよね、やっぱりログファイルの中身を読めば済むことですよね。
>>604のようなファイル生成日時の怪異が疑問だったのです。
まぁ、ファイル本体とジャーナル情報が別だと考えれば、
>>604も起こりそうですよね。
615デフォルトの名無しさん:2009/09/29(火) 13:01:08
syshup とばしたらログ切りかえとか
基本日付で作って現在のファイルに対して ln -s logyyyymmdd.txt log.txt とか
616デフォルトの名無しさん:2009/09/29(火) 13:48:41
>>604
http://msdn.microsoft.com/ja-jp/library/cc429198.aspx

Windows NT/2000:ファイルの名前変更または削除を行い、その後短時間のうちに復元を行うと、システムは復元対象のファイルの情報をキャッシュ内で検索します。キャッシュに置かれている情報として、短い名前と長い名前のペア、および作成日時が挙げられます。
617デフォルトの名無しさん:2009/09/30(水) 09:10:36
はじめまして

エラーorz

内容:
イントーラの下のほうに、ダウンロードが完了しました。インターネットを切断できます。
って表示されてから数秒後・・・

セットアップ中にエラーが発生しました。

セットアップは以下のコンポーネントをインストールできませんでした:
×Microsoft Visual C# 2008 Express Edition with SP1 - JPN
□これらのコンポーネントを後でインストールするために、セットアップへのショートカットをデスクトップに追加します。

と表示されます。
何回も試しましたが、まったく同じ結果です。。。

visual studio c# は前(今より空き容量が少なかったとき)インストールに成功したことが
あるので(その後誤ってアンインストール・・・)空き容量の問題ではないと思います。
現在の空き容量は2.8GB

どうか解決策などあればお願いします。
618デフォルトの名無しさん:2009/09/30(水) 09:26:23
OS再インストール
619デフォルトの名無しさん:2009/09/30(水) 19:56:03
using System;
using System.Drawing;
using System.Windows.Forms;
class MyClass : Form
{
public static void Main()
{
MyClass mf = new MyClass();
Application.Run(mf);
}
MyClass(){
ListBox lb = new ListBox();
lb.Parent = this;
lb.Location = new Point(10,10);
lb.AllowDrop = true;
}
}
ドラッグ&ドロップ可能なリストボックスを作ろうとしてます。
これだと実行した直後に、「DragDrop登録は成功しませんでした」と
例外エラーが表示されてうまくいきません。
AllowDropをtrueにする以外に何か必要なのでしょうか?
どなたか助けてください 初歩的な質問ですみません
620デフォルトの名無しさん:2009/09/30(水) 20:34:13
プログラムを実行した時
他のプロセスの窓を隠したい(this.Hide())のですが
どのように書けばいいんでしょう。調べるにもワードが分からなくて・・・。
他のプロセスに介入するのは始めてです。基本だけでもいいので教えて下さい。
よろしくお願いします。
621デフォルトの名無しさん:2009/09/30(水) 20:37:20
>>620
ShowWindow() API とかだな。
622デフォルトの名無しさん:2009/09/30(水) 20:38:55
>>619
STAThread
623デフォルトの名無しさん:2009/09/30(水) 20:49:11
>>621
調べてみます。ありがとうございました。
624デフォルトの名無しさん:2009/09/30(水) 21:41:44
>>622
見事に解決しました
ありがとうございます
625デフォルトの名無しさん:2009/09/30(水) 22:14:15
どういたしまして
626デフォルトの名無しさん:2009/10/01(木) 19:21:48
C#初心者だけど、コンパイルしたらEXEファイルが出てきました。

EXEってWindowsネイティブでしょ?
これでマルチプラットフォームが実現できてるの?
627デフォルトの名無しさん:2009/10/01(木) 19:33:36
初級レベルのコードならLinux&Monoでもそのままコンパイルできると思うが
628デフォルトの名無しさん:2009/10/01(木) 19:38:09
Javaなんかjarとかそんなファイルなのにマルチプラットフォームできてるぜ?
629デフォルトの名無しさん:2009/10/01(木) 19:46:09
Windowsネイティブじゃないよ
630デフォルトの名無しさん:2009/10/01(木) 19:46:59
その.exeをLinuxに持っていってMonoで動かしてごらん
631デフォルトの名無しさん:2009/10/01(木) 19:55:09
EXE だけど実体は IL なのよ。
で、実行時にコンパイルされる。
632デフォルトの名無しさん:2009/10/01(木) 21:49:10
Silverlightなんかdllなどをzipで固めただけのパッケージがmacで動くぜ
633デフォルトの名無しさん:2009/10/01(木) 22:06:14
そもそも.NETをそういうこともできるように設計しましたってだけで
MS自身はクロスプラットフォームなんて目指してねぇぞ。
アセンブリがexeやdllになってるのもWindows上での利便性を考慮してのことだし。
634デフォルトの名無しさん:2009/10/01(木) 22:15:59
ハードの環境に応じた対応ができるし,
そのうち今と全く構造の違うWindowsが出るかもしれないし
635デフォルトの名無しさん:2009/10/01(木) 23:56:32
windowsで動けば何の問題もないし
636626:2009/10/01(木) 23:57:09
レス感謝です。

環境がWinしか無くて他は試せませんが、多分動くんですよね。

気になっているのが>>631の[EXEだけどIL]ってフレーズ。
EXEはWinが直接開いちゃうからIL読めないはず。
だからEXEを叩いた時、何らかの仕組みによって先にCLRを起動しEXEを読ませるんですよね。
それがどんな仕組み(関連付け?)なのか知りたいんです。

あと、クロスプラットフォームは建前だから
どっか設定変えなきゃWinネイティブなEXEになっちゃうのかな〜と思ったんです。
まぁさすがにそれは無いですよね
637デフォルトの名無しさん:2009/10/02(金) 00:00:57
ネイティブになれるもんならなってほしいなあ
638デフォルトの名無しさん:2009/10/02(金) 00:18:18
639デフォルトの名無しさん:2009/10/02(金) 00:26:09
>>636
.NET Frameworkの初期化処理を呼び出すだけのネイティブコードがEXEに入っていた。
それで、WindowsではEXEファイルとして実行できた。

もっとも、それは過去の話。
そのネイティブコード部分を書き換えるウィルスが流行ったせいで、
(あるいはそれ以前から計画されていたのかも)
今では、Winodwsローダに手が加えられていて、EXEのヘッダを見て.NETアセンブリなら
EXE内のコードを実行せずに直接.NET Frameworkの初期化処理を実行するようになっている。

ちなみに、.NET Frameworkの初期化処理 = mscoree.dllの_CorExeMain。
http://msdn.microsoft.com/ja-jp/library/xh0859k0.aspx
640デフォルトの名無しさん:2009/10/02(金) 00:42:26
>あるいはそれ以前から計画されていたのかも
そのはず。
win2000などでは今でもCLRのブートコードが使用されるが、
XP以降は実行されない。
/platform:x64などでコンパイルするとブートコード自体生成されない。
641626:2009/10/02(金) 01:58:44
ありがとうございます!
まさにこんなのが知りたかったんです!

いや〜MS製品って難しいですね。
ちょっとした便利機能の一つ一つが魔法に見えます。

自分でももうちょっと調べてみます。
642デフォルトの名無しさん:2009/10/02(金) 10:32:56
IEquatable<T>を実装したクラスを==で比較しても
Equals(T other)メソッドを実行してくれません。
CodeとNameが同じでもfalseとなってしまいます。
何がおかしいのでしょうか・・・?

public override bool Equals(object obj)
{
  if (obj == null)
  {
    return false;
  }
  return this.Equals(obj as Foo);
}
public bool Equals(Foo other)
{
  if (other == null) //ここにブレイク張っても止まらない。
  {
    return false;
  }
  return this.Code == other.Code && this.Name == other.Name;
}
643デフォルトの名無しさん:2009/10/02(金) 10:34:59
>>642
object で比較してるところ。
644デフォルトの名無しさん:2009/10/02(金) 10:53:12
>>643
すみませんが、なぜおかしいのか教えていただけませんか?
645デフォルトの名無しさん:2009/10/02(金) 11:46:40
いや==演算子オーバーロードしないと自動でそんなことしてくれないから。
646デフォルトの名無しさん:2009/10/02(金) 12:19:54
>>645
今まで作成したクラスではブレイク張るときちんと止まってくれてました。==はオーバーライドしてません。今も別のプロジェクトのクラスはブレイクします。
647デフォルトの名無しさん:2009/10/02(金) 12:27:12
まったく同じソースで別のマシンでは止まりました。よくわからなくなってきた。
既にリリース済のプロジェクトも複数ありますがなぜ動いているんでしょ…
648デフォルトの名無しさん:2009/10/02(金) 17:12:14
EqualsをoverrideするならGetHashCodeもoverrideしよう。
詳細はコードスニペットのequalsで。
649デフォルトの名無しさん:2009/10/02(金) 20:17:21
動いてるは引数がFooクラスじゃないんだろ。
誰かがMSにバグだって報告してたな。
結果は仕様どおりだったけど。
650デフォルトの名無しさん:2009/10/02(金) 22:15:14
ありえない。ブレークするのがおかしい。
==とIEquatable<T>は全く関係ない。
==演算子をオーバーライドしないと呼ばれるはずがない。どこかで勘違いしてる。
651デフォルトの名無しさん:2009/10/02(金) 22:27:19
再現可能な状態のシンプルなソースを貼った方がはやそう
652デフォルトの名無しさん:2009/10/02(金) 22:37:26
不変でないクラスでEqualsやGetHashCodeを実装するのはお勧めしない
辻褄が合わなくなって正しく動かない場合がある
653デフォルトの名無しさん:2009/10/02(金) 22:42:49
以下のサンプルを見ながら画像を返すWCFサービスを作っています。
http://msdn.microsoft.com/ja-jp/library/cc681221.aspx

画像を返すには戻り値をStreamにするのですが、このStreamは
Closeはしなくても大丈夫なんでしょうか?

クライアントでStreamをCloseしたらサーバ側でもCloseされる?
そもそもMemoryStreamだからCloseしなくても大丈夫?

APIを繰り返し呼んでみてもメモリリークしている様子はないので大丈夫そうなんですが、
いまいち確証が得られず心配です。
654デフォルトの名無しさん:2009/10/02(金) 22:50:55
ファイルIOなのだからdispose()しなくてはならない。
655デフォルトの名無しさん:2009/10/02(金) 22:50:58
実際MemoryStreamのDisposeって何もしてないからなw
656デフォルトの名無しさん:2009/10/02(金) 22:58:47
>>650
演算子はオーバーロードなー
657デフォルトの名無しさん:2009/10/02(金) 23:38:40
>>653
すいません、解決しました。

・OperationContractのOperationBehaviorAttributeのAutoDisposeParametersがtrueならば
 Streamの終端に達すると自動的にDisposeされる。
 デフォルトはtrue
・↑をfalseに設定した場合はOperationCompletedで自分でCloseする

http://msdn.microsoft.com/ja-jp/library/system.servicemodel.operationcontext.operationcompleted.aspx
ttp://devdump.wordpress.com/2008/12/07/disposing-return-values/
658デフォルトの名無しさん:2009/10/02(金) 23:52:05
>>653
動きを勘違いしてるんじゃないか?
これは明らかに、バインディングがビヘイビアか知らんがストリームをバイト列として送信する機能が入ってる。
クライアント側がどうしようが関係ない。
サーバ側では受け取ったストリームを読みだして最後にCloseしてることだろう。
気になるならStreamのラッパー作って返すようにしてブレイクさせてみりゃ多分分かる。
659デフォルトの名無しさん:2009/10/02(金) 23:54:29
って遅かった
660デフォルトの名無しさん:2009/10/03(土) 02:01:01
ところでおまえら、スレタイの最初と三番目はシャープじゃ無いのは知ってたかい?
661デフォルトの名無しさん:2009/10/03(土) 02:05:02
何度繰り返せば気が済むの?その話題
662デフォルトの名無しさん:2009/10/03(土) 02:08:30
59回
663デフォルトの名無しさん:2009/10/03(土) 13:40:56
しってるよ
あなたがバカなこともしってるよ
664デフォルトの名無しさん:2009/10/03(土) 22:22:51
Window Formのデザイナって、何を目印にコンテナコントロールをコンテナコントロールと
認識しているの?

聞きたいことは、要するにControlから派生してコンテナを作るには
どうしたらいいのかということなんですが。

MSDNのGroupBoxの項を読んでも、特別な属性がついてるわけでも
特別なインターフェイスを実装しているわけでもないようだけど。
665デフォルトの名無しさん:2009/10/03(土) 22:56:34
ControlStyles.ContainerControl 辺りじゃね
666デフォルトの名無しさん:2009/10/03(土) 23:26:24
>>665
なるほど、気がつかなかった。
ありがとう。
667デフォルトの名無しさん:2009/10/04(日) 04:47:00
拡張メソッドの引数で、this T @thisというのが指定してあったのですが、この@thisは
何を表すのでしょうか? @について調べたいのですが検索できない状態です。
668デフォルトの名無しさん:2009/10/04(日) 04:59:25
>>667
キーワードをエスケープするための表現。
"this"という名前の変数を使いたいときは@thisと書く。
669デフォルトの名無しさん:2009/10/04(日) 05:03:34
670デフォルトの名無しさん:2009/10/05(月) 02:20:31
質問なのですが
AとBと言う2つのComboBoxを作って
Aにアイテム1とアイテム2を入れる、Bにグループ1とグループ2を入れる
Aでアイテム1が選択された時は、Bにグループ1だけが表示される様にする
同様にアイテム2が選択された時は、Bにグループ2だけが表示される様にする
としたい場合、どうしたらいいのでしょうか?
671デフォルトの名無しさん:2009/10/05(月) 02:41:11
>>670
データソースはなに?
672デフォルトの名無しさん:2009/10/05(月) 02:49:09
VC#です、すみません
673デフォルトの名無しさん:2009/10/05(月) 02:55:34
全く理解できてないな
674デフォルトの名無しさん:2009/10/05(月) 03:01:38
>>670
むしろそこまで具体的なのに何がどう行えないのかわからない
675デフォルトの名無しさん:2009/10/05(月) 04:30:00
解決しました、意味不明ですみませんでした
676デフォルトの名無しさん:2009/10/05(月) 17:36:09
.NETはそんな仕組みになってたのか。知らんかった
677デフォルトの名無しさん:2009/10/06(火) 00:50:53
.asfファイルのプロパティをC#で取得できないでしょうか?
エクスプローラで.asfファイルのプロパティを見て概要タブをクリックすると
タイトルや画像サイズ等が表示されます。この情報です。

Java等、別の言語でも良いので何か良い方法があれば教えてください。
678デフォルトの名無しさん:2009/10/06(火) 01:02:22
.asfってなんだっけ
679デフォルトの名無しさん:2009/10/06(火) 01:21:45
動画
680デフォルトの名無しさん:2009/10/06(火) 01:32:33
Shell32.dll使えばFolder::DetailsOfで色々取れる
681デフォルトの名無しさん:2009/10/06(火) 11:30:47
>>677
http://www.microsoft.com/japan/windows/windowsmedia/format/asfspec.aspx
仕様見て自分でBinaryReaderで読めばいい
ヘッダだけなら全然難しくなさそう
682デフォルトの名無しさん:2009/10/06(火) 11:32:04
683デフォルトの名無しさん:2009/10/06(火) 22:46:13
MEFのrecompositionってどういう風にして動いてるの?
684デフォルトの名無しさん:2009/10/06(火) 22:46:49
お世話になってます。
少し前に質問したものです。

いまだに分からないものがあり質問させてください。
@RC2CryptoServiceProvider

AICryptoTransform
っていうのは何をしているものなのでしょうか・・・・

調べても正直わからないのです。
// データ ストリームを暗号変換にリンクするストリームを生成
                      変数名  変数名   ストリームのモード(書き込み)
CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
これも分からずリンクするというのはどういうことなんでしょうか。
685デフォルトの名無しさん:2009/10/06(火) 23:09:24
ICryptoTransform ったら、暗号変換を実行するためのインタフェースで、
xxCryptoServiceProvider は、それぞれの ICryptoTransform を得るファクトリ。
ってところまではヘルプ読めるなら分かるとおもうが、読み込みが足りていないんじゃない?
んでCryptoStreamのコンストラクタだけど、

暗号化の対象とするストリーム、実行する変換、およびストリームのモードを指定して、
CryptoStream クラスの新しいインスタンスを初期化します。
public CryptoStream(
Stream stream,
ICryptoTransform transform,
CryptoStreamMode mode
)

つまりencryptorが暗号変換のオブジェクトで、これを使ってストリームをラップしているだけ。
人様のコメント頼っちゃだめよ。
686デフォルトの名無しさん:2009/10/06(火) 23:21:27
ファイナライザ内でインスタンスメンバがGCの対象になっているかどうかを知る安全な方法はありますか?
class Hoge {
object member;
~Hoge() { /* ここでmemberがGC対象になっているかどうかを知りたい */
}
687デフォルトの名無しさん:2009/10/06(火) 23:29:12
>>686
ない
688デフォルトの名無しさん:2009/10/06(火) 23:40:55
memberを弱参照に入れてmember自身はnull突っ込んで、
GC.WaitForPendingFinalizers してから解放されたか調べる。
というのは駄目かなぁ?
689デフォルトの名無しさん:2009/10/07(水) 00:24:26
それをファイナライザでやるの?
690デフォルトの名無しさん:2009/10/07(水) 00:29:07
というか普通にファイナライザで他のオブジェクト触っちゃ駄目
691686:2009/10/07(水) 00:30:16
static List<WeakReference> weakRefList;
class Hoge {
public object member;
public WeakReference weakRef;
~Hoge() { Console.WriteLine(weakRef.IsAlive); weakRefList.Remove(weakRef); }
}
static void Test(){
var hoge = new Hoge();
hoge.member = new object();
hoge.weakRef = new WeakReference(hoge.member);
weakRefList.Add(hoge.weakRef);
}
正しいのかはわかりませんが,それっぽい動作にはなりました。
weakRefはどこかで強参照を確保しておかないとそれ自身がGC対象になってしまってうまくいかないようです。
692デフォルトの名無しさん:2009/10/07(水) 07:44:10
GCHandleを使うのはどうなの?
693686:2009/10/07(水) 12:58:30
GCHandleを割り当てると強参照のrootができて常にGCの対象外になってしまう
694686:2009/10/07(水) 13:06:19
訂正
GCHandleって弱参照にもできたんですね。知りませんでした。
GCHandleなら>>691のように参照を確保しておく必要はなさそうです。ありがとうございます。
695デフォルトの名無しさん:2009/10/07(水) 14:09:39
つかウィーク〜もGCHandleのラッパーだよ。
696デフォルトの名無しさん:2009/10/07(水) 20:33:15
ようやくユーザーコントロール貼り付けられた    MSDNに書いてないことが大杉www
697デフォルトの名無しさん:2009/10/07(水) 22:48:48
今までC# expressを使っていたんですが、先日C++ expressも入れてみたところ
何故かC#とC++の関数, メソッドのヒントが英語で表示されるようになってしまいました
ツール→オプション→国際対応の設定は日本語に設定してあります
元に戻す方法を教えて下さい
698デフォルトの名無しさん:2009/10/07(水) 22:50:49
それはまずい
OSを再インストールするしかない
早く窓から投げ捨てろ
699デフォルトの名無しさん:2009/10/07(水) 22:53:27
>>697
名前忘れたけどパッチが出てるから探すヨロし
700デフォルトの名無しさん:2009/10/07(水) 22:54:28
701デフォルトの名無しさん:2009/10/07(水) 22:59:16
>>699-700
これバグなんですか?
パッチ当ててみます
702デフォルトの名無しさん:2009/10/07(水) 23:07:46
戻りました
迅速なレスありがとうございました
703デフォルトの名無しさん:2009/10/08(木) 01:01:36
>>702
一応。バグっつーかたぶん翻訳が終わる前に SP を出した
のだと思う。
実際このパッチが出るまで結構かかったからこの判断は
ありがたかったとは思う
704デフォルトの名無しさん:2009/10/08(木) 02:09:10
指定した列挙型のToStringをoverrideするにはどうしたらよいのでしょうか?

目的は
public enum test {test1,test2}
test.test1.ToString()
とした場合、結果をTEST1という風にしたいのです

(最初からTEST1,TEST2にしておけといわれればそれまでなんですが
コードの書式のポリシーに反するからオーバーライドで解決したいのです)
705デフォルトの名無しさん:2009/10/08(木) 02:12:55
>>704
無理。
属性を使うとかして、全く別のものを定義してやる必要がある。
706デフォルトの名無しさん:2009/10/08(木) 02:27:49
>>705
ありがとうございます
むむむ、やはり無理ですか…

属性について色々みてみたのですが
新しいメソッドやクラスの属性化は何となくわかったのですが
既存のクラス、System.Enum.ToStringの属性化が今ひとつわからず…

規約破って実装するかswitch等で判別して一つ一つ置き換えるしかなさそうですね…
707デフォルトの名無しさん:2009/10/08(木) 05:32:24
カスタムアトリビュート
http://neue.cc/2009/08/25_194.html
拡張メソッド+switch
http://d.hatena.ne.jp/siokoshou/20080124#p1

他になんかもっと面白いのないかな
708デフォルトの名無しさん:2009/10/08(木) 07:18:23
ILで無理やりToStringのoverrideを突っ込もうとしたが、
Enumにメソッドは駄目とILレベルでエラーにされた。
709デフォルトの名無しさん:2009/10/08(木) 15:38:07
たとえば以下のようなクラスがあったとして、

class Person { public string Name; public Person[] Children; }
person.Children[i].Children[j].Children[k] …

一番最初の Name == "太郎" な Person を
Linq で検索するにはどうしたらよいでしょうか?

世代が一段であれば
person.Children.Where(p => p.Name == "太郎").FirstOrDefault()
でよいのですが、無限に世代が続く場合がわかりません。

そもそも Linq では無理でしょうか・・
710デフォルトの名無しさん:2009/10/08(木) 15:48:06
Linqじゃ無理だな
素直に探索メソッド作った方がいいんじゃないの?
711デフォルトの名無しさん:2009/10/08(木) 15:56:43
まあ再帰的に検索する拡張メソッドを用意すればいいだけだ
712デフォルトの名無しさん:2009/10/08(木) 15:58:54
自分自身と子孫を連結して返す拡張メソッドを作って、
その結果に対してFirstOrDefaultするしかないな
713デフォルトの名無しさん:2009/10/08(木) 16:10:18
全子孫のEnumerator返すメソッドでいいんじゃね
714デフォルトの名無しさん:2009/10/08(木) 18:54:07
俺ならこうするかな

IEnumerable<T> TraverseDepthFirst<T>(T node, Func<T, IEnumerable<T>> childrenSelector)
IEnumerable<T> TraverseBreadthFirst<T>(T node, Func<T, IEnumerable<T>> childrenSelector)

ライセンス気にしなくてもいいなら、探せば見つかるからコピペでも
あと、TraverseじゃなくてSelectDescendentsとかでもいいかも
715デフォルトの名無しさん:2009/10/08(木) 20:16:56
TreeViewの兄弟ノードと子ノードの区別、追加のサンプルありませんか?
ググってみても子ノード追加のみでどこにもみあたりません・・・
716デフォルトの名無しさん:2009/10/08(木) 20:21:02
何を言いたいのか分からん
兄弟なら親ノードのNodesを参照すればいいだけだろ
717デフォルトの名無しさん:2009/10/08(木) 20:22:20
>>716
言葉足らずですみせん
正確にはDragAndDropでの区別、追加のサンプルです
718デフォルトの名無しさん:2009/10/08(木) 20:38:37
区別、追加の意味がわからんのだが
719デフォルトの名無しさん:2009/10/08(木) 20:43:38
>>718
区別は兄弟ノードの上下又は孫ノードの区別になります
追加(又は移動)はノードをDragAndDropして何処に追加又は移動するかになります

http://dobon.net/vb/dotnet/control/tvdraganddrop.html
例えばここのサンプルは区別をせず孫ノードへの移動(又は追加)のみとなり
これに加えて兄弟ノードへのノードの移動(又は追加)をしたいのです
720デフォルトの名無しさん:2009/10/09(金) 01:17:27
いろいろ書いてくれてるけど、全然わかんねーよ。
「何」の「何」が知りたいの?

>区別は兄弟ノードの上下

上下の区別って何?位置が知りたいのじゃなくて?

>孫ノードの区別になります

意味不明

721デフォルトの名無しさん:2009/10/09(金) 03:03:38
意訳) ちょっと図解しろよ
722デフォルトの名無しさん:2009/10/09(金) 03:09:52
>>720-721
んー書き方が悪いのかな
DragAndDropでノードを移動させたい
やりたいのはこれです

>>719のサンプルだと移動先が常に子ノードになるから目的にはそわない

http://www.devcomponents.com/dotnetbar/img/AdvTree2.png
この海外の有料コンポのようにDrop先の子ノードじゃなく兄弟ノードに移動させたい
ついでにいうとこのようにラインも引きたい

と言うような事をやりたいのです
723デフォルトの名無しさん:2009/10/09(金) 04:19:33
そのノードに子ノードがあるかどうかでで判断すればいいんじゃね?
724デフォルトの名無しさん:2009/10/09(金) 04:41:10
>>723
ユーザにはDrag先のノードの子にするか兄弟にするか選択させたいのです
兄弟のみ子のみなのであれば簡単に実装できるのですが
両方となると判定方法がよくわかりません
725デフォルトの名無しさん:2009/10/09(金) 04:42:38
- 間もなくVCが新種のDarkBASICに追い抜かれますが

確かにC言語の衰退は避けられない事実です。

- それはどうしてですか

趣味でC言語を体得しようとするプログラマがいないからでしょうね。

- 会社で使ってるのに趣味で使いたくない?

そうでしょうね。
そもそもC言語は生産効率向上には寄与しなかったと言う事実があります。
仕様書を噛み砕くだけの、馬耳東風な感覚では愛着が湧かないでしょう。

- 将来的にCプログラマは切り捨てられる?

すでに旧来のCプログラマは他の言語に移管してると思います。
職業的にもCでは使えない状況ですし。

- 加速するIT化に対応できないと言うことですか。

他の言語群がCを包括的に上回っています。

- BASIC言語の台頭の可能性はあると思いますか。

あるでしょうね。
言語仕様が簡素化されて生産効率が上がれば可能性はあると思います。

- かつてCはBASICより速い実行コードを生成すると自慢していましたが。

それは過去の幻想でしょうね。
726デフォルトの名無しさん:2009/10/09(金) 05:40:40
>>724
それってつまり、自分がどういうUIをデザインしたいか分からない
ってことでは?
727デフォルトの名無しさん:2009/10/09(金) 06:53:46
TreeViewの処理は難しいよ
C#でも簡単じゃない
その手の処理は海外のコントロールを使用した方が無難
TreeViewとGridのコントロールは金になるからね
ググっても出てこないのはその為
728デフォルトの名無しさん:2009/10/09(金) 08:08:46
うむ、自前フレームワークでTreeViewとGrid作ったがかなり手こずった。
リファクタも2,3回やってやっときれいでまともなものになったな。
729デフォルトの名無しさん:2009/10/09(金) 10:44:52
くれくれ
730デフォルトの名無しさん:2009/10/09(金) 11:37:45
>>722
CodeProjectでダウンロードできるぞ。
731デフォルトの名無しさん:2009/10/09(金) 11:45:33
>>726


>>727
なる程…
そう言った理由があるんですね…

>>730
たしかVBでかかれてるものですよね?
昨日、ダウンロードしてみましたが望みの物と違いました
732デフォルトの名無しさん:2009/10/09(金) 12:42:29
C#で、自分でクラスをつくり、その中にスレッドを走らせます。
そのクラスのなかにイベントを作り、スレッドのなかからそのイベントを発生させるようにしました。
メインフォームからこのクラスのインスタンスを作り、メインフォームの中に、
イベントハンドラを書き、登録、そしれスレッドを走らせます。
このときスレッドのなかからイベントが起こり、メインフォームのイベントハンドラに
きて、スレッドで計算したものをメインフォームで表示させています。
このとき、イベントハンドラの処理が重くて、イベントハンドラ中の処理が終わる前に、
スレッドからまたイベントが起きた場合どうなるのでしょうか?
ハンドラの処理がおわっていなくてもスレッドがとまるとか、そういうことはありますか?
初歩的質問で申し訳ありませんが、よろしくご教授おねがいいたします。
733デフォルトの名無しさん:2009/10/09(金) 12:48:48
Control.Invoke/BeginInvokeしたりしない限り、
イベントハンドラが走るスレッドはイベントを起こしたスレッドと同じ。
734デフォルトの名無しさん:2009/10/09(金) 12:52:07
735デフォルトの名無しさん:2009/10/09(金) 13:40:05
>>734
おお!目的の物はこれだ〜
わざわざありがとうございます
助かりました
736デフォルトの名無しさん:2009/10/09(金) 15:21:33
csc.exe をコマンドラインから使っています。
このとき、ライブラリパスを指定するオプションは何になりますか?(Javaの -classpath 相当です)
やりたいのはライブラリの検索パスにカレントディレクトリを追加することです。
csc /lib:. hello.cs を試したのですが、効果がなさそうでした。
737デフォルトの名無しさん:2009/10/09(金) 15:26:16
cscはデフォルトでカレントディレクトリのアセンブリも探す
つか肝心の参照アセンブリ未指定じゃんかそのコマンドライン
738デフォルトの名無しさん:2009/10/09(金) 16:04:28
自己レスです。
>>736
csc /r:FooBar.dll helo.cs
でいけました。おさわがせしました。
まあコマンドラインから使うほうが頭どうかしてると言われるとその通りなんですが。
739デフォルトの名無しさん:2009/10/09(金) 19:05:38
>>733さん
ということは、そのスレッドがイベントを発生した場合、
そのイベントハンドラ中の処理がおわるまで、スレッドは進まないということですね・・・
勉強不測ですいません。ありがとうございます。

実はそのスレッドは、他アプリケーションが出すデータを取得しつづけていて、
あるデータが取得したときにイベントを起こしていたわけですが、
イベントハンドラの処理が重い場合、次のデータと取りこぼしてしまう可能性があるわけですねぇ・・

ということはスレッド内では目的のデータを取得したらQueにつめるとかして、
別スレッドでQueからみていたほうがいいのかな・・・
740デフォルトの名無しさん:2009/10/09(金) 20:12:03
一般にはキューを使うかな。
イベントを非同期で発行する方法もあるけど、
まあ止めといた方が無難だね。
741デフォルトの名無しさん:2009/10/09(金) 20:24:31
timerを使わず特定のプロセス開始を知ることは出来ませんか?
742デフォルトの名無しさん:2009/10/09(金) 22:08:42
なんでタイマーを使わないの?
743デフォルトの名無しさん:2009/10/09(金) 22:13:21
それより
timerを使って特定のプロセス開始を知る
というのがどういうことか理解できる人間はエスパーだと思うよ。
744デフォルトの名無しさん:2009/10/09(金) 22:13:52
そちらさんから俺様のプログラムに知らせるのが筋ってもんでしょう?
745デフォルトの名無しさん:2009/10/09(金) 22:43:53
>>743
10秒も待てば始まってるんじゃないの?ってことでは?
746デフォルトの名無しさん:2009/10/10(土) 00:47:06
>732
ぶっちゃけいうと、スレッドを使ったプログラムを作れる段階にいません。
もう少し精進してから本番に取りかからないと死ねます。
747デフォルトの名無しさん:2009/10/10(土) 01:27:38
>等の文字を>等に変換する関数はありませんか?
748747:2009/10/10(土) 01:29:10
変換されてしましました
&gt;を>に変換する関数を探してます
749デフォルトの名無しさん:2009/10/10(土) 01:33:37
えいちてぃーてぃーぴーゆーてぃりてぃ
750デフォルトの名無しさん:2009/10/10(土) 01:37:05
>>749
sannkusu
751デフォルトの名無しさん:2009/10/10(土) 06:36:43
delphiからこしてきて不思議に思ったのですが
抽象クラスからしか抽象メソッドは作れないのでしょうか?
継承元Formで抽象メソッドを定義したいのですがコンパイラに怒られてしまいます
752デフォルトの名無しさん:2009/10/10(土) 06:41:58
>>751
隠蔽ならできるよ。
753デフォルトの名無しさん:2009/10/10(土) 06:48:29
>>752
隠蔽というとprivateかな?
以前の作り方として継承元Formを作って
それを継承したFormで実装し忘れ等を無くす為にabstractを使用してました
メソッドの定義を忘れるとコンパイラが教えてくれるので重宝していたのですが…

継承元のメソッドをvirtualで定義するとなると実装し忘れが防げないですよね…
かといって継承元Formを抽象化する事も出来ないし
うーむ…
754デフォルトの名無しさん:2009/10/10(土) 06:58:50
やりたいことが良く見えないけど。
継承元のフォームは単独でnew出来るようにしたい。
継承先のフォームでは特定のメソッドのoverrideを強制したい。
つうこと??
755デフォルトの名無しさん:2009/10/10(土) 07:12:13
>>754
> 継承先のフォームでは特定のメソッドのoverrideを強制したい。
そうです
ただ最初の”継承元のフォームは単独でnew出来るようにしたい。”はちょっと違います

上手く説明出来るかわかりませんがこのようにしたいのです

継承先のFormのコントロールのデータが更新されてれば
継承元のFormにあるbtnApply.Enabledを変更するようにします
継承元Form
    protected abstract bool isChangeData(); //これを必ず継承先で定義させたい
    protected void updateApplyButton(){
      btnApply.Enabled = isChangeData();
    }
継承先Form
    protected abstract bool isChangeData(){
      return (data1 != tbxData1.Text 〜)//データ更新の判定処理
    }

このやり方のメリットは不必要にコントロールをprotectedにしないくてもいい点
実装し忘れを防げる点
この2点です

しかしisChangeDataが抽象化出来ないのでvirtualで代用すると実装し忘れが防げませんし
btnApplyをprotectedにして継承先Formで触ると設計上変更に弱いのでそれはやめたいのです
756デフォルトの名無しさん:2009/10/10(土) 07:14:31
>>755の修正

継承先Form
×protected abstract bool isChangeData(){
○protected override bool isChangeData(){
757デフォルトの名無しさん:2009/10/10(土) 07:17:59
継承元クラスをabstractにすればabstactなメソッドを作れるはずだけど。
それを避けたい理由が分からない。

abstract public partial class Form2 : Form
{
 public abstract void Hoge();
758デフォルトの名無しさん:2009/10/10(土) 07:21:00
>>757
あら…、勘違いしてました
partialをアクセス識別子と思ってましたw

仰るとおり、クラスを抽象化して実装できました
ありがとうございます助かりました
759デフォルトの名無しさん:2009/10/10(土) 07:26:31
それするとデザイナが…
760デフォルトの名無しさん:2009/10/10(土) 07:27:07
>>757
デザイナが…

>>759
Yeswww
ビルドしたらなったwwww
761デフォルトの名無しさん:2009/10/10(土) 09:52:46
まあ「設計を見直せ」といえばそれまでだな
フォームに直接データの処理を書くのが間違い
762デフォルトの名無しさん:2009/10/10(土) 10:07:29
というかそもそも、.NET 的にはイベントハンドラーは継承&overrideじゃなくて、
デリゲートで Click += hoge でやるのが普通な気が。
763デフォルトの名無しさん:2009/10/10(土) 10:19:19
デリゲートの+=って使いにくい。

特にデリゲートを取り消すために-=使うのが面倒。
764デフォルトの名無しさん:2009/10/10(土) 10:21:32
-= は邪悪だと思うけどもなぁ、
取り消す場面ってそんなに多い?
765デフォルトの名無しさん:2009/10/10(土) 10:25:40
自分より寿命の長いオブジェクトに+=したら
使い終わったら-=しないかぎりメモリリークするよ
766デフォルトの名無しさん:2009/10/10(土) 10:28:15
寿命が違うケースがそんなに多い?、って話でしょ
767デフォルトの名無しさん:2009/10/10(土) 10:30:04
むしろ寿命の違わないケースがそんなにあるのか?
768デフォルトの名無しさん:2009/10/10(土) 10:34:29
フォーム間で共通のイベントのソースがある場合なんか。

フォーム閉じるときにデリゲート切らないとリソース開放できないし。
769デフォルトの名無しさん:2009/10/10(土) 10:34:34
デザイナで追加したLoadとかClickとかのイベントを
いちいち手動で解除してるの?
770デフォルトの名無しさん:2009/10/10(土) 10:35:14
>>761
>>755の処理ってFormのビューの部分だからデータ処理じゃなくね?
>>757みたいにしてエラー出なければベストだと思う
771デフォルトの名無しさん:2009/10/10(土) 10:36:02
コントロールの寿命はたいてい親と一致する(親に依存する)から放置して問題ない
でも自分より寿命の長いオブジェクトに登録することが全く無いかというとそういうわけでもない
そのときは必ず-=しないとメモリリーク
772デフォルトの名無しさん:2009/10/10(土) 10:36:56
>>768
フォーム間で共通のイベント?
773デフォルトの名無しさん:2009/10/10(土) 10:41:00
世の中のFlashアプリがメモリリークしまくりな理由がそれだからなぁ<イベントリスナーのremoveし忘れ。

-= を自動でしてもらう仕組みがあった方がいいのかな。
Reaction Framework ではどうなってるんだろう。
774デフォルトの名無しさん:2009/10/10(土) 10:43:23
まあstaticイベントとか使いまくったらメモリリークの温床になるだろうな
WPFには呼び出し対象への参照をWeakReferenceで保持することでGCの対象から外れないようにする
WeakEventパターンというのがある
775デフォルトの名無しさん:2009/10/10(土) 10:44:22
Shownイベントがなかった.net1.1のころは
Application.Idleで対応してたな。
あれは-=をこまめにしないといけなかったから面倒だった。
でもまあ、そういうケースは多くはないと思うけど。
776デフォルトの名無しさん:2009/10/10(土) 10:47:41
>>772
データソースへのバインディングとか
777デフォルトの名無しさん:2009/10/10(土) 10:54:49
>>776
なるほど、理解した
ん?ってことはここの人はみんな-=してんの?
WeakEventパターン使うにしてもコスト高くね?
778デフォルトの名無しさん:2009/10/10(土) 11:08:43
デリゲートでWeakReferenceを使えればいいんだけどな。
779デフォルトの名無しさん:2009/10/10(土) 11:12:01
おまえらの言ってる事が1%も理解出来ないのは俺だけでいい
780デフォルトの名無しさん:2009/10/10(土) 11:30:14
初心者なんだけど教えて!
MVCの理念でいくと
TextBox1.Text = "hoge";
TextBox2.Text = "foo";
TextBox3.Text = "bar";
ってどうやって実装するの?

dataはデータを保持するクラスとして
TextBox1.Text = data.hoge;
TextBox2.Text = data.foo;
TextBox3.Text = data.bar;
とFormに書いたら邪道なのかな?

間に何か挟むクラスを作らないと駄目?
ワケワカメ><
781デフォルトの名無しさん:2009/10/10(土) 11:33:28
AがBのイベントにイベントハンドラを登録するとBはAへの参照を持つことになる
だからBが生きてる限りはAはGCに回収されない
構造上自然で必要なことなんだけどしばしば問題になる
782デフォルトの名無しさん:2009/10/10(土) 11:38:13
baka
783デフォルトの名無しさん:2009/10/10(土) 11:50:55
>>780
バインディング使うのがいいんじゃね?
784デフォルトの名無しさん:2009/10/10(土) 12:02:08
WeakEventって考え方が最初から用意されてりゃ良かったんだがな。
まあそんな頻繁に困ることはないけど。
785デフォルトの名無しさん:2009/10/10(土) 18:44:31
ここには天才がいるときいてまいりました
早速質問なんですがソースありきのサードパーティ製のコントロールをdll参照無しに取り込む事は出来ますか?
配布時、単一(.Netの時点で単一はないけれど…)のexeで配布したいと思っています
786デフォルトの名無しさん:2009/10/10(土) 18:50:24
「取り込む」っていうのは俺様用語じゃないの?
それを理解しろというのは天才じゃなくエスパーマターでは
787デフォルトの名無しさん:2009/10/10(土) 18:53:37
>>785
書き直してみますた!

通常、サードパーティ製のコントロールはdllも配布しないと配布先でアプリが起動できない
でもdll配布したくないよー
サードパーティ製のコントロールのソースあるからプロジェクトに取り込んでdll配布無しでも行ける気がするぞ・・・
よし、ここで聞いてみよう

こうです・・・
788デフォルトの名無しさん:2009/10/10(土) 18:55:50
ソースあるんだったらプロジェクトにそのソースを全部突っ込めばいける
ライセンス違反にならないかどうかちゃんと確認しろよ
789デフォルトの名無しさん:2009/10/10(土) 18:58:50
>>788
おーさっそくやってみますだー
ありがとー
790デフォルトの名無しさん:2009/10/10(土) 19:05:30
あ、そだ、もう一つ
リソースにdllぶちこんで実行時にアプリフォルダに展開
エセ単一アプリ><って出来る?
起動すら出来ないからdllをリソースから取り出してアプリフォルダに置く事が出来ないっぽいけど・・・
791デフォルトの名無しさん:2009/10/10(土) 19:08:04
直接参照せずに動的ロードすればいい
設計に工夫が必要だけどできないことはないはず
792デフォルトの名無しさん:2009/10/10(土) 19:10:06
>>791
えーと、、つまりdll使用してるフォームを使う前にdllを取り出して動的参照するって事かのぉ
どうやるんだろ?
どっかにサンプルないかな?
あっしのヘタレ脳みそじゃどうググればいいのかワケワカメ・・・
793デフォルトの名無しさん:2009/10/10(土) 19:11:06
ILMerge使えばいいんじゃね?
おれは使ったことないからよくわかんないけど
794デフォルトの名無しさん:2009/10/10(土) 19:13:31
>>793
すごーーーーーーーーーい!!!!!!
チュウしたいぐらい感動した
これよこれ!
これならdll展開しなくてもよさそうじゃん!
やばい、かっこいい、惚れた><
795デフォルトの名無しさん:2009/10/10(土) 20:00:30
なんかライセンス違反してそうだな、この人w
796デフォルトの名無しさん:2009/10/10(土) 20:46:54
絶対にしてると思う。
797デフォルトの名無しさん:2009/10/10(土) 21:14:51
人間としてすでにライセンス違反
798デフォルトの名無しさん:2009/10/10(土) 21:15:31
つまんないよ
799デフォルトの名無しさん:2009/10/10(土) 21:15:35
例に海外のコントロールをあげただけで
実際に使っうのは自社のdllじゃーーーーー

配布の時、めんどくさいじゃん
頻繁にupdateするならdllで分けた方がいいけどそうじゃないし

つかいいすぎだろ、おまえらw
なんでdllをexeに取り込んだら人間失格みたいになるんだよw
800デフォルトの名無しさん:2009/10/10(土) 21:16:49
何がめんどくさいのか全く分からんから
VB6と違ってexeの隣に置くだけだし
801デフォルトの名無しさん:2009/10/10(土) 21:17:57
>>800
かっこわるいじゃん
dllはモジュール名ついてるし
それをばらばらーってexeのあるフォルダに100個も並べるとかキチガイでしょー
802デフォルトの名無しさん:2009/10/10(土) 21:20:07
おや? めんどくさい がいつの間にか かっこわるい に変わったぞ?
803デフォルトの名無しさん:2009/10/10(土) 21:21:43
>>802
マウスでびろろーんって選択して右クリックして圧縮を選ぶのがめんど、、、

いや、コマンドラインでやるから面倒じゃないんだけどね
なんていうか単にかっこわるいから単一で配布したいだけです、ハイ
804デフォルトの名無しさん:2009/10/10(土) 21:24:11
好きにしろ
805デフォルトの名無しさん:2009/10/10(土) 21:26:04
.NET出てきたときからSxSは言われ続けてますのでそんなもんです
GACにブチこんでもそんなもんです
806デフォルトの名無しさん:2009/10/10(土) 21:26:31
ILMergeでパックしたら自社ライブラリが外に漏れないっていう恩恵もあるんじゃね?
807デフォルトの名無しさん:2009/10/10(土) 21:28:08
>>806
別に無い
exeの参照だって可能だし
808デフォルトの名無しさん:2009/10/10(土) 21:29:13
ILMergeしてできたDLLをさらにILMergeってできるのかな?
809デフォルトの名無しさん:2009/10/10(土) 21:30:17
ILMergeした後にupxかませば少しは・・・
810デフォルトの名無しさん:2009/10/10(土) 21:31:57
>>809
upxも簡単に解凍できるはずがな
811デフォルトの名無しさん:2009/10/10(土) 21:36:06
バイナリ埋め込んでワケワカメになるよりだったら
ソースレベルで取り込んだ方がまし
812デフォルトの名無しさん:2009/10/10(土) 21:37:37
こいつの気持ちは分かるなぁ
単一で配布するのはなんか気持ちいいし
.NETにも静的リンクが欲しくなる
813デフォルトの名無しさん:2009/10/10(土) 21:37:48
ソースレベルで統合したらコンパイルが遅くなってデバッグに支障が出るような気もする
814デフォルトの名無しさん:2009/10/10(土) 21:38:32
実際ほとんど変わらないけどね
815デフォルトの名無しさん:2009/10/10(土) 21:41:41
納品先に納品物のexeに付随するアセンブリを勝手に再利用して販売してる人がいて
ちょっと困惑してるから笑えないな。

アイコンとかも勝手に再利用。
ああいう物にはコピーライトがないとでも思ってるのか
816デフォルトの名無しさん:2009/10/10(土) 21:46:04
どこにでもそういう奴はいるな
自アプリからしか使えないようにシリアル設定するとか
色んなパッカーの重ねがけぐらいしか防ぐ手立てがない
ハックしてまで使おうとは思わないだろうしな
817デフォルトの名無しさん:2009/10/10(土) 21:46:27
>>815
それは単に契約違反か契約がいい加減すぎたかのどっちかだろ
818デフォルトの名無しさん:2009/10/10(土) 21:55:54
>>817
まあそうなんだけど、中小企業同士だとお互いに面倒だからきっちり契約書かわすなんて
しないのが世の中の実態じゃない?
819デフォルトの名無しさん:2009/10/10(土) 23:17:49
タイマーって1000個ぐらい同時に使っても大丈夫?
もしかしてスレッドだからOSによっては制限かかってむりかな?
820デフォルトの名無しさん:2009/10/10(土) 23:22:36
なんという、もう罵倒してくださいといわんばかりの質問……
821デフォルトの名無しさん:2009/10/10(土) 23:25:49
せんこどころかまんこつかってもだいじょうぶ
822デフォルトの名無しさん:2009/10/10(土) 23:25:59
スレッドプールが使われるから大丈夫かもしれないけど気持ち悪すぎる
1000個も必要になる意味が分からない
823デフォルトの名無しさん:2009/10/10(土) 23:27:03
>>819
あなたは一体何を作ろうとしているんだ
824デフォルトの名無しさん:2009/10/10(土) 23:28:15
そっか!大丈夫なら安心した
Cのソースだけど
これhttp://d.hatena.ne.jp/kkkos/20090509/1241853767
みたいに使い回さないとだめなのかなーとか思ってました

>>823
えっと、各オブジェクト毎にタイマー持たせて定期的にイベントを起こそうかと…
825デフォルトの名無しさん:2009/10/10(土) 23:32:54
>>824
そのオブジェクトは何をするオブジェクトですか?
826デフォルトの名無しさん:2009/10/10(土) 23:33:55
使い回すべき
1000個もあるなら1000個がバラバラに動くわけじゃないだろ?
827デフォルトの名無しさん:2009/10/10(土) 23:35:46
>>825
えと、定期的にイベントを起こすオブジェクト…おや?

>>826
いわれてみればそうかも
たしかに使い回すのがいい気がしてきた
828デフォルトの名無しさん:2009/10/10(土) 23:36:18
もうさーバカにはタイマーとかスレッドとか使わすなよ。
829デフォルトの名無しさん:2009/10/10(土) 23:36:38
Timer1000個って今からなにがおこるんです?
830デフォルトの名無しさん:2009/10/10(土) 23:38:08
>>827
答えになってないよ…
831デフォルトの名無しさん:2009/10/10(土) 23:39:56
あんなに多くのオブジェクトがあるときは一つの管理用のオブジェクトを作って、
タイマー一個でそこから定期的に各オブジェクトを呼び出すのが普通だと思う。
832デフォルトの名無しさん:2009/10/10(土) 23:42:47
>>831
そんな気がしてきた
あやうく恐ろしい物を作る所だった…
ふぅ…
833デフォルトの名無しさん:2009/10/10(土) 23:43:52
どうせ内部じゃ広い意味でイベント一個でやってんだろ?どうでもいいじゃん
834デフォルトの名無しさん:2009/10/10(土) 23:51:20
インストーラーって物を知らんのか
835デフォルトの名無しさん:2009/10/11(日) 00:18:40
ILMerge は万能じゃないけどな
数十KBぐらいのものをくっつけるのは楽勝だけど
数百KBの、しかもいろんな参照もってるのをいくつもくっつけるのはたいへん
どうせスタートメニューに登録しなきゃらないしインストーラのほうが楽
836デフォルトの名無しさん:2009/10/11(日) 00:46:09
>>835の言いたいことがよく理解できんのは俺だけだろうか・・・
837デフォルトの名無しさん:2009/10/11(日) 00:55:16
んー?
835 じゃないが ILMerge は「やっちゃ駄目」な例外条件が
そこそこある。

量が多いとその辺していないか調べる量も増えるし、その
バグが発生して認識するまでも遅れるだろうから、835 の
いうことは分かるが。
838デフォルトの名無しさん:2009/10/11(日) 05:42:34
みんなDotfuscator Professionalとか使ってる?
839デフォルトの名無しさん:2009/10/11(日) 05:45:20
>>838
オープンソースだから使う意味ない
840デフォルトの名無しさん:2009/10/11(日) 05:48:14
>838
つかった。他の難読化ツールも試したがさっくりいけたのはこれだけだった。
841デフォルトの名無しさん:2009/10/11(日) 06:41:16
pinvoke.NET(http://www.pinvoke.net/index.aspx)の中の各コードのライセンスってどうやって調べられますか?
842デフォルトの名無しさん:2009/10/11(日) 06:58:43
>>841
関数などの定義のことならおそらく自動的に作成されたものだから
ライセンスはかかっていない。

っていうか、かかってたらサイトの意味なくならね?
843デフォルトの名無しさん:2009/10/11(日) 07:01:34
>>842
あ、そういうものなんですか、じゃあパブリックドメインってことで自由に使えるんですね
どうもありがとうございます
844デフォルトの名無しさん:2009/10/11(日) 11:16:30
一応ライセンスはあるよ
左下のTerms of UseのSection4
845デフォルトの名無しさん:2009/10/11(日) 12:30:09
PInvokeでコピペできるようなコードの断片にまでライセンス主張されたら
コードなんかなーんにも書けなくなっちまうよw
846デフォルトの名無しさん:2009/10/11(日) 13:11:47
PInvoke、結構適当だから、きちんと自分で書き下ろした方がいいよ。
847デフォルトの名無しさん:2009/10/11(日) 13:39:09
>>844
あ、こんなところにあったんですね、どうもです
非商用ならって言っているからFlexWikiLicenseなコードを
一部利用してますみたいなことはちゃんと書いといたほうがよさそうですね
まあ自分の公開するようなものを商用に利用しようなんて人はいないでしょうけども。
↓のリンクが切れてるので詳しい内容がなんともですが・・・
http://www.flexwiki.com/default.aspx/FlexWiki/FlexWikiLicense.html

>>846
とりあえず動けばそれでいいのでよしとしてます
848デフォルトの名無しさん:2009/10/11(日) 21:21:54
書き下ろせとまでは言わんが、ちゃんとMSDN英語版の宣言は確認して正しく変換されてるかのチェックは必要だな
849デフォルトの名無しさん:2009/10/11(日) 22:38:24
宣言は既存のAPIを見て作成されたものだから「作品」になってないので、
著作権はかかってないはず。著作権がかかってない限りサイレンスなどは
無視してもいい。
850デフォルトの名無しさん:2009/10/11(日) 23:18:42
runasコマンドをc#上から呼ぶときに
パスワードを自動で入力したいのですが、
どのように実装したらよいでしょうか?

ユーザがパスワードを知らなくても
admin権限でインストールされたアプリケーションを
ログオンスクリプトで自動でアンインストールしたいのです。
851デフォルトの名無しさん:2009/10/11(日) 23:23:22
>>850
runasで経由しないで、Process.Start(ProcessStartInfo)で
実行したほうがいいんじゃない?
ProcessStartInfoを使えばユーザ名とパスワードは簡単に指定できる。
852デフォルトの名無しさん:2009/10/11(日) 23:33:23
ちょっと知識があるユーザなら即座に管理権限のパスワードがバレそうだな
853デフォルトの名無しさん:2009/10/11(日) 23:51:21
>>852
だな…
854デフォルトの名無しさん:2009/10/12(月) 01:54:51
ルナスってなに?
855デフォルトの名無しさん:2009/10/12(月) 02:14:51
C#のホットキーの実装方法を教えてください
ググったけど出来なくて・・・
856デフォルトの名無しさん:2009/10/12(月) 02:16:21
どういう意味?
キーイベント拾いたいだけ?
857デフォルトの名無しさん:2009/10/12(月) 02:55:24
別ウィンドウにフォーカスがある場合でも、
例えばF1キーが押された時などに特定の処理を呼びたいのですが
どうすればいいんでしょう?
858デフォルトの名無しさん:2009/10/12(月) 03:02:30
別ウィンドウも自アプリならできるがそうじゃないなら無理じゃないかな。
859デフォルトの名無しさん:2009/10/12(月) 03:08:40
デザイナでホットキーコンポーネントはりつけれ
860デフォルトの名無しさん:2009/10/12(月) 03:35:58
OSレベルのフックを使えばできるはず
.NETのライブラリでかじゃ無理な気がする
861デフォルトの名無しさん:2009/10/12(月) 04:51:50
簡単なキーフックとかならできるらしい
862デフォルトの名無しさん:2009/10/12(月) 06:14:58
Win32APIを呼べばなんだってできるけど、C#だとコードが汚くなるんだよなあ。
863デフォルトの名無しさん:2009/10/12(月) 08:25:38
そんなの、キーフックする部分だけカプセル化すればいいんだから好きにすればヨロし
864デフォルトの名無しさん:2009/10/12(月) 10:16:40
クラスの参照ってどうやって宣言したらいい?

やりたいことは
<クラス参照用の型> RefMyClass;
RefMyClass = MyClass; //こんな感じでclassその物を入れたい
MyClass = new RefMyClass();

こんな事って出来るのかな?
865デフォルトの名無しさん:2009/10/12(月) 10:19:33
Type 型で宣言しておいて、Activator.CreateInstance() かね。
866デフォルトの名無しさん:2009/10/12(月) 10:19:34
>>864
実行時に型を切り替えたいって言うんならそれは無理。
素直に Factory パターンとか使って。

コンパイル時にクラス名にエイリアス付けたいだけなら、
using RefMyClass = MyClass;
867デフォルトの名無しさん:2009/10/12(月) 10:32:49
>>865
今からヘルプみてみます

>>866
Factoryパターンって実体生成の委譲だったっけ?

んと親クラスで子のクラスを知りたくて参照あれば便利だなと思いました
というのもオブジェクトのデシリアライズで型のキャストが必要で
これを親に任せて子は自分のクラスを親に通知と言うような事がしたかったんです

//MyOwnerClass
protected abstruct MyClass RefMyClass();
public void LoadMyClass() {
//省略
(RefMyClass)serializer.Deserialize(fs)//こんな感じでキャストしたい
}
//MyChildClass
protected override RefMyClass(){
return MyChildClass; //ここで自分のクラスを親に通知
}
868デフォルトの名無しさん:2009/10/12(月) 10:49:26
それはジェネリックでやることじゃねーかなー
869デフォルトの名無しさん:2009/10/12(月) 10:55:58
>>868
ジェネリックで出来るのかな?
ジェネリックのイメージとしては型の明示的な宣言、だから使う方はキャストしなくていいよぐらいにしか思ってなかったり…
うーん、ちなみにこの場合はどのようにかけばいいのでしょう?

クラス参照が出来ないとなると
子のオブジェクト全てにpublic void LoadMyClass()を実装しないといけなくなるのでちょっとアレかなぁなんて思ってます
代替案があれば知りたいです…
870デフォルトの名無しさん:2009/10/12(月) 10:56:34
いや、親クラス側に手動で登録用コード書くか、
どうしても自分でコード書きたくないならリフレクション使うのがいいんじゃないかなぁ。
871デフォルトの名無しさん:2009/10/12(月) 11:06:03
>>870
>いや、親クラス側に手動で登録用コード書くか、
親クラスでこうすると言う事ですか?
public void LoadMyClass() {
  if (this is MyChildClass) {
    (MyChildClass)serializer.Deserialize(fs)
  } else if {this is MyChildClass2} {
    (MyChildClass2)serializer.Deserialize(fs)
 }
}

すみません
もう少し詳しくお願いします
872デフォルトの名無しさん:2009/10/12(月) 11:07:33
>>871
まあ、そんなの。
あんまりお勧めしないけど。
リフレクション使えば?
873デフォルトの名無しさん:2009/10/12(月) 11:11:51
>>872
んーこれだと継承されるたびに親を弄らないといけなくなりますね…
付け忘れてもコンパイラは教えてくれないしちょっと困るかなぁ

リフレクション読んでみました
これでどうやって実装すればいいのでしょう?
ざっと読んでクラスに動的にメソッドを付け加えると理解しました
でもこの理解じゃどう打破するかイメージがわかないです…
874デフォルトの名無しさん:2009/10/12(月) 11:18:35
デシリアライズ用のメソッドを持つインターフェイスを用意して、
その実装クラスを引数にすればいいんじゃね?
875デフォルトの名無しさん:2009/10/12(月) 11:23:42
>>874
どういう事でしょう?
ちょっとイメージが沸かないです…
876デフォルトの名無しさん:2009/10/12(月) 11:26:23
子クラスはstaticでもない自分自身をロードするメソッドを持つの?
なんかそもそもが変に感じるんだが
877デフォルトの名無しさん:2009/10/12(月) 11:30:48
>>876
どこがおかしいのでしょう?
シリアライズ/デシリアライズを親にまかせて
子はそれに必要な情報(この場合はクラス)を教えるだけという設計イメージが変ですか?
878デフォルトの名無しさん:2009/10/12(月) 11:36:27
>>877
シリアライズの方は簡単なんだけどねぇ。
[Serializable] public class Shape
{
public void Save(Stream stream)
{
var type = this.GetType();
var xs = new XmlSerializer(type);
xs.Serialize(stream, this);
}
}

public class Circle : Shape
{
public double CenterX, CenterY, Radius;
}

デシリアライズ時、型の判定は誰がやるの?
879デフォルトの名無しさん:2009/10/12(月) 11:48:13
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

2ちゃんねるの有志の皆様へ

ただいまVIPのみんなで例のサイバーテロ集団の本拠地VANKに攻撃をしかける作戦を立てています

VANKとは大韓民国の非政府組織で竹島や日本海を「独島」「東海」などと変更しようとしている基地外団体です。

ただいま人数不足です

下記日時に間に合うように準備し、作戦に参加してくれたら幸いです

作戦決行日時:10月12日正午

→【http://yutori7.2ch.net/test/read.cgi/news4vip/1255301899/
まとめwiki(要編集)http://www20.atwiki.jp/vipvsvank/pages/1.html

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
880デフォルトの名無しさん:2009/10/12(月) 12:28:14
なんでテシリアライズでキャストが要るわけ?
キャストしてどう使おうとしてるの?
登録?用メソッドをジェネリックメソッドとして用意すりゃキャスト自体は出来るけど、
それで何がしたいのかさっぱり分からん。
881デフォルトの名無しさん:2009/10/12(月) 12:34:22
リフレクション一択だろ
どこでどう足掻いてもリフレクションが出てくると思う
882デフォルトの名無しさん:2009/10/12(月) 12:42:27
CRTP
883デフォルトの名無しさん:2009/10/12(月) 12:53:17
CRTP(笑)で派生クラスの型にキャストはできるがキャストしたところで何の意味もない
デシリアライズするときキャストした型でオブジェクトの型が決まると勘違いしてない?
884デフォルトの名無しさん:2009/10/12(月) 13:00:15
CRTPって何じゃらほい?
885デフォルトの名無しさん:2009/10/12(月) 13:04:23
ググレカス
検索結果
CRTP(Curiously Reccursive Template Pattern)
886デフォルトの名無しさん:2009/10/12(月) 13:04:24
class MyClass : MyBase<MyClass>
こういうの
基底クラスの型が分かれてしまうのでもう一段上に基底クラスが必要になったりして無駄に複雑になる
887デフォルトの名無しさん:2009/10/12(月) 13:05:24
質問です。
キャストは重い処理だとよく言われるんですが、
あるインターフェイスを実装したクラスをインターフェイスに暗黙キャストするのと、
オブジェクトやインターフェイスや基底クラス型の参照を実体の型にダウンキャストするのと
どっちが遅いんでしょう?

キャストは重いと言いつつ、インターフェイスや基底クラスへの暗黙キャストは
気にせず使ってるみたいです。
888デフォルトの名無しさん:2009/10/12(月) 13:07:11
試せよ。
889デフォルトの名無しさん:2009/10/12(月) 13:08:15
ダウンキャストの方が高速ですた。
890デフォルトの名無しさん:2009/10/12(月) 13:08:50
参照型→参照型のキャストはほぼノーコスト
値型→参照型や参照型→値型は重い
891デフォルトの名無しさん:2009/10/12(月) 13:10:08
また微妙にずれた話を…
892デフォルトの名無しさん:2009/10/12(月) 13:10:56
>>890
間違ってるぜそれ。
893デフォルトの名無しさん:2009/10/12(月) 13:11:28
小粒でピリリと辛い
894890:2009/10/12(月) 13:13:28
すまん
参照型間のキャストがが大きくパフォーマンスに影響するような状況なんて普通は考えられない
という意味に取ってくれ
895デフォルトの名無しさん:2009/10/12(月) 13:15:31
ちょっと外出してました

>>878
そうなんですよね
シリアライズは簡単に出来るんです
ただデシリアライズに型が必要なので(受け取ったデータを自分自信に流し込む為)クラス参照を使おうと思ったんですがそれにあうものがなくて…
型の判定は>>867のようにクラス参照でまかなおうと思ったわけです

>>880
デシリアライズに限らず単純に親に子の型を知らせたいのです
これが出来ればキャストが必要な実装を親が持つ事が出来るので汎用性が高まるというわけなんですが…

>>881
そのリフレクションで親に子の型をどう知らせるのかがよくわからないのです
896デフォルトの名無しさん:2009/10/12(月) 13:15:31
参照型→値型は参照型のダウンキャストと同等、最も高速
参照型→基底やインターフェイスはやや遅、特にインターフェイスは結構遅いこともあり
値型→参照型はボクシングなのでさらにプラスで遅い

こんなとこかな?

897デフォルトの名無しさん:2009/10/12(月) 13:18:07
一体どんなやり方でデシリアライズしようとしてんだ?
898890:2009/10/12(月) 13:18:14
参照型→値型は型変換がオーバーロードされていない限りありえないから問題外
899デフォルトの名無しさん:2009/10/12(月) 13:20:24
ボックス解除の話だろどう考えても
900デフォルトの名無しさん:2009/10/12(月) 13:20:57
>>897
http://dobon.net/vb/dotnet/file/xmlserializer.html
ここのやり方とほぼ同じです
901デフォルトの名無しさん:2009/10/12(月) 13:23:36
デシリアライズに型はいらん
デシリアライズした時点で実際の型は決まってる
少なくともRefMyClassの派生クラスであることが分かっているんだったらRefMyClassにキャストすれば十分
902デフォルトの名無しさん:2009/10/12(月) 13:25:15
>>901
それを親で子の型判定をすると>>871のようにどうしようもないコードになるわけなんですね…
903デフォルトの名無しさん:2009/10/12(月) 13:28:25
デシリアライズしたものはobjectのままあつかったらいいんでないかい。
キャストも要らんし。
904デフォルトの名無しさん:2009/10/12(月) 13:28:55
だからね、キャストするのはその型でその場で何かするためなのさ。
その型で何かする必要ないならキャストなんて必要ない。
905デフォルトの名無しさん:2009/10/12(月) 13:31:01
暗黙のアップキャストは低速。
明示的なダウンキャストは高速。

なんとも直感的でない動作。
906デフォルトの名無しさん:2009/10/12(月) 13:34:24
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

2ちゃんねるの有志の皆様へ

ただいまVIPで例のサイバーテロ集団の本拠地VANKに攻撃をしかける作戦を立てています

ただいま人数不足、不利な戦況となっております。

また、技術者部門の方も募集していますので、是非よろしくお願いします。

下記日時に間に合うように準備し、作戦に参加してくれたら幸いです

作戦決行日時:10月12日 18時00分

現行スレ→【http://yutori7.2ch.net/test/read.cgi/news4vip/1255316576/
まとめwiki(要編集)http://www20.atwiki.jp/vipvsvank/pages/1.html

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
907デフォルトの名無しさん:2009/10/12(月) 13:36:01
ダウンキャストが高速なのは型に互換があることが自明だからで、
コンパイル時に互換性の確認は済んでるから実際には何もしない。
アップキャストの場合は互換性の確認が実行時に行われる。
908デフォルトの名無しさん:2009/10/12(月) 13:37:29
何を言ってるの?
どう考えても逆だろ。
909デフォルトの名無しさん:2009/10/12(月) 13:37:52
その理屈なら逆だろ
ボックス化が絡む場合にダウンキャストの方が速いのは,アップキャストはヒープ確保が入るから
910デフォルトの名無しさん:2009/10/12(月) 13:42:12
ボックス化と関係ない参照型でもアップキャストの方が遅いってのがちょっと不思議な動作なわけ。
911デフォルトの名無しさん:2009/10/12(月) 13:45:16
>>907だがすまん、アップダウン逆にしてた。
アップキャストが派生クラスから基底クラスだね。

912デフォルトの名無しさん:2009/10/12(月) 13:47:46
多分.NETではベリファイアでの検証が絶対ではないために、
どっちにしても実行時にチェックが必要だからだろう。

実体の型そのものとのチェックは比較一発だが、基底クラスだと順に遡ったり、
インターフェイスだとインターフェイスマップとの照合が必要だから。
913デフォルトの名無しさん:2009/10/12(月) 13:49:38
ソースにパスワード認証を組み込む場合
if (textbox1.text == "passwd")
messagebox.show("ok");
else
application.exit

とかだと慣れてる人だとパスワード分かっちゃうのかな?
914デフォルトの名無しさん:2009/10/12(月) 13:51:40
試しに自分で書いてReflectorでも使ってみればいいじゃない
915デフォルトの名無しさん:2009/10/12(月) 13:51:47
測ってみたけど参照型間はアップキャストの方がちょっと速かった
916デフォルトの名無しさん:2009/10/12(月) 13:52:29
ソースに組み込んだりしないんだよ普通は。
917デフォルトの名無しさん:2009/10/12(月) 13:54:45
class Foo {}
class Bar : Foo {}

Foo f = (Foo) new Bar();
object o = (object) f;
Bar b = (Bar) o;

  IL_0000:  newobj     instance void Bar::.ctor()
  IL_0005:  stloc.0
  IL_0006:  ldloc.0
  IL_0007:  stloc.1
  IL_0008:  ldloc.1
  IL_0009:  castclass  Bar
  IL_000e:  pop

アップキャストも明示的にキャストを入れてみたが、
castclass が呼ばれるのはダウンキャストの場合だけだった。
918デフォルトの名無しさん:2009/10/12(月) 13:55:32
>>916
他にどんな方法が・・・?
919デフォルトの名無しさん:2009/10/12(月) 13:57:00
>>918
ハッシュで持つとかどう?
920デフォルトの名無しさん:2009/10/12(月) 13:57:33
>>915
ホントに?
俺が計った時はアップキャストのが遅かったぜ?
念のため、ダウンキャストはオブジェクトの実体の型へのキャストな。

インターフェイスへのキャストは更に遅かった。
まあそんな大差は無いけどな。
クラス階層やインターフェイスの実装数が多いと差が開きそうだった。
まあ当たり前だが。
921デフォルトの名無しさん:2009/10/12(月) 13:59:01
>>917
うぬう、何か条件が違ったかな?
ちょっといま試せる環境にいないんだよね…
922デフォルトの名無しさん:2009/10/12(月) 14:00:11
>>919
ildasmでパスワードを検証してる部分を消してilasmでコンパイルし直せばいいじゃん
923デフォルトの名無しさん:2009/10/12(月) 14:01:52
そもそも何のためのパスワード?
誰のためのパスワード?
924デフォルトの名無しさん:2009/10/12(月) 14:03:57
まあ破る奴はどうやったって破るからな
技術的な手段を講じてもあんまり意味がない
925デフォルトの名無しさん:2009/10/12(月) 14:04:02
ライセンスとかだとあんまりいい方法はないぜ?
アプリ実行に必須のデータを暗号化して持たせて
パスワードで解除するとかな。
926デフォルトの名無しさん:2009/10/12(月) 14:05:50
起動時に、パスワードが合えばソフトウェアを使用出来るようにしたいのです
本格的にやるのならばPCの固有番号をネットワークアクティベーションとかにするのでしょうけど、
もう少し簡単に、後々変更できなくてもいい代わりにプログラムを覗かれて、
パスワード認証を回避されないようにするにはどうすればいいか・・・と考えてました。
927デフォルトの名無しさん:2009/10/12(月) 14:08:54
Dotfuscator Proとか使えばいいじゃん
80万程度でお手軽に隠蔽出来るよ
リバエン防がないでパスワード隠蔽もなにもないでしょ
928デフォルトの名無しさん:2009/10/12(月) 14:09:00
dllをリソースに暗号化して埋め込んで、
パスワードで解除してからバイトでロード。
まあ簡単には出来ないよ。
929デフォルトの名無しさん:2009/10/12(月) 14:09:47
難読化されたところでパスワードを認証してる所を見つけるだけならそんなに難しくない
930デフォルトの名無しさん:2009/10/12(月) 14:10:44
そのソフトにどのくらいの価値があるかによるよね。
スキルのある人間から防御したいなら、
ロードモジュールがユーザーから覗けたり改変できる限り無理だし、
ど素人のちょっとしたいたずら除けにならちょっとした仕掛けで大丈夫かもしれない。
931デフォルトの名無しさん:2009/10/12(月) 14:11:21
だからね、パスワードを隠蔽するって方向では根本的にはダメなんだ。
実行に必須の何かをパスワードがないと復元不可能にしないとね。
932デフォルトの名無しさん:2009/10/12(月) 14:22:15
>>931
パスワード間違えたときの動作が未定義でいいなら確かに有効だね。
933デフォルトの名無しさん:2009/10/12(月) 14:23:54
Webアプリ作ればいいじゃん
不正アクセスも見つけやすいし
対処しやすいし
934デフォルトの名無しさん:2009/10/12(月) 14:31:40
>>932
チェックは、暗号化したデータの中にパスワードを埋め込むとか、まあいろんな方法で組み込める。

これはあくまでパスワードが間違ってた時にエラーで止めるためだけの目的ね。
このチェックは別に不正に抜けられても困らないから。
935デフォルトの名無しさん:2009/10/12(月) 14:35:11
うーむ
言い出しっぺがスキル不足で話について行けない
Dotfuscator Pro・・・良いですけど高いですな・・・
20万くらいまでならこれだけの為にでも投資したんですが;
936デフォルトの名無しさん:2009/10/12(月) 14:35:13
.Netアプリをネイティブにするツールってどこかにあったよな?
あれって何て名前だっけ?
937デフォルトの名無しさん:2009/10/12(月) 14:38:52
>>918
暗号化してconfigファイル
938デフォルトの名無しさん:2009/10/12(月) 14:46:01
>>934
いやパスワードなりCRCなりをチェックするにしても
偶然一致してしまう可能性を否定できないわけで。
まぁそのくらいで訴訟起こす人は日本には居ないだろうけど。
939デフォルトの名無しさん:2009/10/12(月) 14:48:57
パスワード付きでzip作って埋め込んで
入力されたパスワードでzip解答できたら有効にする、とか
940デフォルトの名無しさん:2009/10/12(月) 14:49:30
話ぶった切ってすまない
昨日ホットキーの登録について聞いたものなんだが、
using System.Runtime.InteropServices ; // for DllImport
[DllImport("user32.dll")]
extern static int RegisterHotKey(IntPtr HWnd, int ID, int MOD_KEY, int KEY); // return : error = 0
[DllImport("user32.dll")]
extern static int UnregisterHotKey(IntPtr HWnd, int ID) ; // return : error = 0

private void Form1_Load(object sender, System.EventArgs e)
// Regist Hotkey, ALT+A
RegisterHotKey(this.Handle, HOTKEY_ID, MOD_ALT, (int)Keys.A) ;

private void Form1_Closed(object sender, System.EventArgs e)
UnregisterHotKey(this.Handle, HOTKEY_ID) ; // UnRegist Hotkey,

protected override void WndProc(ref Message m)
base.WndProc(ref m) ;
if (m.Msg == WM_HOTKEY)
{
if ((int)m.WParam == HOTKEY_ID)
{
MessageBox.Show("Press Hotkey");
}
}
こうすれば、Alt+Aキーを押したときにメッセージ出るんだが、
例えば、Aキーのみを押したときにメッセージを出すようにするにはどうすればいいのか分かる人居ません?

941デフォルトの名無しさん:2009/10/12(月) 14:51:11
ローレベルフック使え。
942デフォルトの名無しさん:2009/10/12(月) 14:51:35
暗号化したデータにハッシュを追加するとかの方法で十分。
パスワードそのものでもまあいいけど、パスワードのハッシュのがまだいいかな。
偶然の一致なんて考える必要はない。
943デフォルトの名無しさん:2009/10/12(月) 14:55:21
今時少なくとも128ビット以上のハッシュが簡単に使えるんだから、
偶然の一致など確率的に無視できる。
デジタル署名とかと同レベルの信頼性なんだぜ?
944デフォルトの名無しさん:2009/10/12(月) 15:41:34
アメリカなんかだと被害の事例がなくてもその可能性があるというだけで訴訟起こされるからね。
実際どうなるかはわからないけど怖いから避けたいというのが各社共通の認識かと。
945デフォルトの名無しさん:2009/10/12(月) 15:45:04
1 / 2^128 の可能性でも「可能性がある」なんてことを認めてたら、
現代社会に信用できるものなんてなくなるんだが。
946デフォルトの名無しさん:2009/10/12(月) 15:46:03
940です
>>941さんの言ってる事が分からないのですが、
参考になるサイトとか有りませんでしょうか・・・><;
947デフォルトの名無しさん:2009/10/12(月) 15:52:29
948デフォルトの名無しさん:2009/10/12(月) 15:57:27
銀行の暗証番号でさえ4けた14ビット以下だってのに何言ってんだか。
何も信用出来ないよ。
128ビットだって最低ラインで512ビットまで用意されてるし。
プログラムにバグがある可能性の方がはるかに高いわ。
949デフォルトの名無しさん:2009/10/12(月) 16:03:27
パスワードなんかより明日道歩いてたら上から植木鉢が落ちてきて
頭に当たって死ぬ可能性を心配するべきだな
950デフォルトの名無しさん:2009/10/12(月) 16:10:38
ちなみに今現在というか今後を含めて政府レベルで推奨されてる安全性がだいたい128ビットだな。
これはもちろん攻撃を受ける前提の話だが。
951デフォルトの名無しさん:2009/10/12(月) 16:12:57
多分隕石の直撃うけて死ぬ可能性の方が高い。
952デフォルトの名無しさん:2009/10/12(月) 16:16:59
水を掛けるようなことをいって申し訳ないが、
なんか質問者の意図をそっちのけして回答者同士で勝手に熱くなってない?w
953デフォルトの名無しさん:2009/10/12(月) 16:18:11
お前の暗号化で地球がヤバイ
954デフォルトの名無しさん:2009/10/12(月) 16:18:12
何か問題が?
955デフォルトの名無しさん:2009/10/12(月) 16:19:27
だが、それがいい。
956デフォルトの名無しさん:2009/10/12(月) 18:10:42
シンイチ、それより交通事故に気をつけろ
957デフォルトの名無しさん:2009/10/12(月) 20:07:52
ここまでSecuceStringの話しがないとか
958デフォルトの名無しさん:2009/10/12(月) 20:19:05
SecuceStringの話はどうがんばってもでてこないと思うよ
959デフォルトの名無しさん:2009/10/12(月) 20:32:50
どういう読み方だそれ。せくーすすとりんぐ?
960957:2009/10/12(月) 20:35:17
SecureStringだぜごめんね
961デフォルトの名無しさん:2009/10/12(月) 21:06:14
セキュリストリング

962デフォルトの名無しさん:2009/10/12(月) 21:06:35
>>893
山椒でんがな
963デフォルトの名無しさん:2009/10/12(月) 23:06:43
C#やり始めたんだけどメーリングリストとかある?
あとどこのコミュニティがおすすめ?
ここ以外でお願いします
964デフォルトの名無しさん:2009/10/12(月) 23:21:05
MSDNフォーラム
非公式でそこそこ人がいるのはわんくまくらいしか知らないけどVB系で質問者も回答者もレベルは高くない
965デフォルトの名無しさん:2009/10/13(火) 00:32:18
いやいや「わんくま」は幼稚園みたいな名前と雰囲気は好きになれんけど、
公平にいってそんなに低レベルってことはないでしょ。
966デフォルトの名無しさん:2009/10/13(火) 00:36:05
というか回答者がMSDNフォーラムと大体同じなので
967デフォルトの名無しさん:2009/10/13(火) 00:47:07
MVPいるしな。
968デフォルトの名無しさん:2009/10/13(火) 01:13:13
MVPとかどうでもいい
本当の本当に上手いプログラマはMVPなんかとらない。
時間の無駄なのさ。
969デフォルトの名無しさん:2009/10/13(火) 01:28:01
とれない無能プログラマに限ってそういうんだよな。
MVPの価値を下げてもおまえの価値はあがらねーっつうのw
970デフォルトの名無しさん:2009/10/13(火) 01:29:18
本物のプログラマはそもそも質問掲示板で回答なんかしない。
時間の無駄なんだよ。
971デフォルトの名無しさん:2009/10/13(火) 01:31:51
偽者プログラマは黙ってろや
972デフォルトの名無しさん:2009/10/13(火) 02:39:18
世の中偽者のプログラマだけが本物のプログラムをコーディングしてるんだ
973デフォルトの名無しさん:2009/10/13(火) 03:58:24
で、ここのプログラマはレベル高いわけ?
質問に対してパパッと適切にソース書いてる人間見た事無いけど
974デフォルトの名無しさん:2009/10/13(火) 04:03:32
レベルが高いのとすぐにソースを書くのって別に関係ないじゃん
975デフォルトの名無しさん:2009/10/13(火) 04:04:46
レベル高かったら名を名乗って答える罠
2ちゃんにまともな回答を求める奴が間違い
976デフォルトの名無しさん:2009/10/13(火) 04:51:54
この思いはソースでしか形にできないの・・・
977デフォルトの名無しさん:2009/10/13(火) 07:41:30
君の質問の答えは僕が作るプログラムの中で答えようと思う(´・ω・`)
978デフォルトの名無しさん:2009/10/13(火) 07:57:33
時間の無駄とか言ってる暇があったら
さっと回答しちゃった方が速いのが本物のプログラマ
979デフォルトの名無しさん:2009/10/13(火) 08:02:48
どこでもたいていは調べたらすぐわかる話題ばっかりだからここも含めてそんなに変わらん
980デフォルトの名無しさん:2009/10/13(火) 08:17:29
サクっとコードで即答できるレベルの質問をここですんな。
そんなの検索エンジンに訊いた方が断然速い。
ここは人間に相談する場所だぞ。
981デフォルトの名無しさん:2009/10/13(火) 08:26:30
検索エンジンの達人の方、代わりに検索してください
982デフォルトの名無しさん:2009/10/13(火) 09:10:43
サクッとコードで即答出来ないのは面倒だからとコードかかないくせにw
983デフォルトの名無しさん:2009/10/13(火) 12:51:48


























うんこ
984デフォルトの名無しさん:2009/10/13(火) 20:06:44
次から名前は名前欄に書いてねうんこさん
985デフォルトの名無しさん:2009/10/14(水) 02:22:12
すまそ

ImageButton objButton = new ImageButton();
objButton.ImageUrl = "img/test.gif";
objButton.Attributes["onmouseout"] = "src='img/test.gif'";
objButton.Attributes["onmouseover"] = "src='img/test2.gif'";

この ImageButton オブジェクトを Table に動的に配置したら、OnMouseOver がきくことはきくんだが、
なぜか最初にマウスを持っていった時に、ステータスバーに"localhost に接続しています"と出て、若干時間がかかる。

これって最初にサーバーに test2.gif を取りに行ってるってこと??
test.gif は ImageUrl プロパティで指定してるから最初に取りに行くけど、これと同じタイミングで取りに行かせる方法はないかな〜?
もしお門違いな質問してたらスマソ
986デフォルトの名無しさん:2009/10/14(水) 02:27:09
>>985
こういうマウスオーバーエフェクトはCSSでやるべき。
複数の画像を一つのファイルに組んで、background-positionで
切り替えるのは一番いい方法だと思う。

例えばこんなふうに
http://jsajax.com/CSSSpritesArticle951.aspx
987デフォルトの名無しさん:2009/10/14(水) 04:31:35
App.config に配列を保存する時の方法として
適当な区切り文字を入れてsplit でばらしてるんですが

XMLで推奨されてる標準の手順はありますか?
区切り文字をいちいち設定せずにできたら楽なので
もし知ってる方おられましたら教えてください。
988デフォルトの名無しさん:2009/10/14(水) 07:10:03
本当に配列が必要?
配列の要素一つ一つに意味があるならそれぞれ設定項目にした方がいいと思う
本当に必要なら987の方法でもいいんじゃね
989デフォルトの名無しさん:2009/10/14(水) 07:52:42
OfType<T> すげえええ
TにCOMインタフェースを指定しても期待通りに動く
990デフォルトの名無しさん:2009/10/14(水) 09:13:30
>>987
要素がXMLシリアライズ可能な配列はデフォルトでXMLシリアライズできるはずだが……
991デフォルトの名無しさん:2009/10/14(水) 12:16:41
型を選択するコンボボックスの中に一個だけ長い名前の混じってるじゃん?
992デフォルトの名無しさん:2009/10/14(水) 14:05:22
文字列だけだろ
993デフォルトの名無しさん:2009/10/14(水) 17:23:29
ArrayList.Add でリストの最後ではなく
リストの最初に追加するにはどうすれば良いですか?
994デフォルトの名無しさん:2009/10/14(水) 17:28:58
Insert
995デフォルトの名無しさん:2009/10/14(水) 20:20:40
関係ないけど今更ArrayListなんか使うな
996デフォルトの名無しさん:2009/10/14(水) 20:21:48
関係ないね
997デフォルトの名無しさん:2009/10/14(水) 20:40:21
ArrayListの代わりってなに?
998デフォルトの名無しさん:2009/10/14(水) 20:44:16
998 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
999デフォルトの名無しさん:2009/10/14(水) 20:46:48
-2
1000デフォルトの名無しさん:2009/10/14(水) 20:47:19
List<T>
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。