ふらっとVisual C#,C♯,C#(初心者用) Part105

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part104
http://toro.2ch.net/test/read.cgi/tech/1366503422/
関連スレ
C#, C♯, C#相談室 Part79
http://toro.2ch.net/test/read.cgi/tech/1363632378/

コード貼るなら↓使ってください
http://ideone.com/
2デフォルトの名無しさん:2013/06/23(日) 14:41:51.41
>>1
乙乙
3デフォルトの名無しさん:2013/06/24(月) 20:41:32.83
HttpUtility.UrlEncodeって' 'を'+'に変えないの?
これって結構問題の元だったりする?
4デフォルトの名無しさん:2013/06/25(火) 00:48:44.68
はい?

http://msdn.microsoft.com/ja-jp/library/4fkewx0t.aspx
>UrlEncode メソッドは、各空白文字をプラス記号 (+) に変換します。
5デフォルトの名無しさん:2013/06/26(水) 08:42:53.74
どうやればアドレスを渡してキャストすることができるか分かりません。教えてもらえませんか?

private delegate int EnumWindowsDelegate(IntPtr hWnd, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int EnumWindows(EnumWindowsDelegate lpEnumFunc, int lParam);
----

IntPtr[] ahWnd = new ahWnd[0];  //←これをコールバックに渡したい

EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam)
{
 IntPtr[] ahWndTmp = (IntPtr[])lParam;   //←ここで指定する方法が分からない

 //配列に追加
 Array.Resize(ref ahWndTmp, ahWndTmp.Length + 1);
 ahWndTmp[ahWndTmp.Length - 1] = hWnd;
 }
 return 1;
}), (int) ahWnd);  //←ここで指定する方法が分からない
6デフォルトの名無しさん:2013/06/26(水) 08:55:20.66
質問です。

http://ameblo.jp/vcplusplusnote/entry-10205262635.html
こういう事をやりたいのですが、これだと上層のmenu内全部が対象になります。
これを同一menu内のセパレーターで区切ったブロック毎に行うスマートな方法ありますか?

現在は上記の方法でなく、if文でmenuの数だけ処理する野暮ったい事になってます。

よろしくお願いします。
7デフォルトの名無しさん:2013/06/26(水) 09:00:21.89
EnumWindowsの第2引数はポインタ型だ
ていうか別にわざわざlParam経由させんでも
適当にフィールドなりローカル変数なりにList<IntPtr>置いといてそれにAddしていけばいいだろ

あと渡すデリゲートは一旦ローカル変数に取り出しておいて
EnumWindows終わった後でGC.KeepAliveしとけ
8デフォルトの名無しさん:2013/06/26(水) 09:12:04.75
>>6
var group1 = new ToolStripMenuItem[]{ item11, item12,.. };
var group2 = new ToolStripMenuItem[]{ item21, item22,.. };
...

みたいに配列を持っといて

private void dropDown_ItemClicked( object sender, ToolStripItemClickedEventArgs e )
{
 if( group1.Contains( e.ClickedItem ) )
 {
  ...
 }
 else if( group2.Contains( e.ClickedItem ) )
 {
  ...
 }
}

ってやるとか。
9デフォルトの名無しさん:2013/06/26(水) 09:26:38.63
>>5
var lst = new List<IntPtr>();

EnumWindows( ( hwnd, lParam ) =>
{
 lst.Add( hwnd );
 return 1;
}, IntPtr.Zero );


じゃあかんのか?
ローカルなデリゲートのメモリ上の位置って移動したっけ?
スコープ抜けるまでは有効なんじゃね?
10デフォルトの名無しさん:2013/06/26(水) 09:29:13.02
>>7
>EnumWindows終わった後でGC.KeepAliveしとけ

終わった後にGC.KeepAliveするの?
11デフォルトの名無しさん:2013/06/26(水) 09:40:31.48
>>7,9
ありがとう!まさかローカル変数にアクセスできる(ただしout変数にはアクセス出来ない)とは・・・C#楽すぎる
12デフォルトの名無しさん:2013/06/26(水) 09:59:56.10
>>9
> ローカルなデリゲートのメモリ上の位置って移動したっけ?
移動どころかファイナライズされうる。
マーシャリングでポインタに変換された後はマネージから参照されないからGC対象になる。
アンマネージ実行中にGCが走るとあぼーん。

>>10
GC.KeepAliveは「このオブジェクトはここまで使用中だから勝手に消すなよ」ってマーク。
13デフォルトの名無しさん:2013/06/26(水) 10:16:54.92
>>8
ありがとうございます
そのままだと自分の状態ではエラーが出たので、
イベントハンドラ内に配列を入れて、

private void dropDown_ItemClicked(object sender, EventArgs e)
{
 if( group1.Contains(sender))
 {
  ...
 }
 if( group2.Contains(sender))
 {
  ...
 }
}
としたところ、正常に使えました
まだ何もわかってないので、なんでエラーが出たのか分からないですが、自分の変更が間違ってないならこれで行きつつ、エラーの原因しらべて勉強します。

配列でグループ分けしつつ・・・というのは想像が付いたのですが、実現する方法を理解してませんでした。
勉強になりました。
ありがとうございました。
14デフォルトの名無しさん:2013/06/26(水) 11:10:19.77
EnumWindowsのような同期型のコールバックの場合は
GC.KeepAliveは不要だな。
15デフォルトの名無しさん:2013/06/26(水) 11:43:41.83
GCが完全バックグラウンド処理になるのはいつですか?
今のままじゃC++に勝てない
16デフォルトの名無しさん:2013/06/26(水) 11:52:13.64
並列(バックグランド)GCで無いほうが
スループットは向上するよ。
17デフォルトの名無しさん:2013/06/26(水) 12:21:00.21
というか、誰が勝とうとしてるの?
お前?
18デフォルトの名無しさん:2013/06/26(水) 12:24:57.55
今は広い部屋があるんだから
ゴミの片付けなんかしないで
作業に集中しなさい。
ゴミで部屋がいっぱいになったら
そのときに初めて片付ければ良いでしょ。
19デフォルトの名無しさん:2013/06/26(水) 12:25:36.30
シープラプラ トモダチ コワクナイヨ
20デフォルトの名無しさん:2013/06/26(水) 12:28:20.10
15の理想どおりに動いたとして
並んでも勝ちはしないだろ
生産性のために払った代償でもあるしな
21デフォルトの名無しさん:2013/06/26(水) 12:32:09.01
並んだら生産性の分で勝ちになる
22デフォルトの名無しさん:2013/06/26(水) 12:36:06.18
代償ってのは両方取れないって意味だ
並ぶなら生産性が疎かになるだろう
23デフォルトの名無しさん:2013/06/26(水) 13:28:05.32
IME が ON のとき、Ctrl+F10(デフォルトではIMEメニュー表示)を、
IMEより先に取得して、imeのメニューを出さずに、プログラム側で取得するようにする方法はありますか?
SystemCmdKeyより先にフックされてしまうようで、うまくとれません。
WindowsMessageでできるのかもしれませんが、いまいちやりかたがわかりません・・。
Windows7 標準のIME です。
24デフォルトの名無しさん:2013/06/26(水) 16:20:03.36
23です。
すいません、書き間違いがありました。
× SystemCmdKey
○ ProcessCmdKey
よろしくお願いします。
25デフォルトの名無しさん:2013/06/27(木) 04:51:23.99
System.Xml.XmlReaderを使ってRSSを読もうとしたのですが、System.ServiceModel.Syndication.SyndicationFeedでエラーが出ます

using (System.Xml.XmlReader xdr =
System.Xml.XmlReader.Create("RSSのURL"))
{
System.ServiceModel.Syndication.SyndicationFeed feed =
System.ServiceModel.Syndication.SyndicationFeed.Load(xdr);
}

System.Xml.XmlException はハンドルされませんでした。
Message=名前 'RDF' と名前空間 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' が指定された要素は、フィードの形式を許可されていません。

どうすれば読むことができるのでしょうか。よろしくおねがいします
26デフォルトの名無しさん:2013/06/28(金) 19:56:51.72
簡単に言えば

「RSSの規格が古くて読めねえよ」

ってことです。
RDFが出てくるのはRSS1.0だけど、SyndicationFeedが対応してるのはRSS2.0とAtom1.0だから。
SyndicationFeed使っている限り、世界が滅亡するまで待っても読めないので
他の方法を探しましょう。私は知りません。
2725:2013/06/29(土) 11:35:22.52
>>26
ようやく悩みがとけました。
xmlで処理していくしかなさそうですね
丁寧な解説ありがとうございました。
28デフォルトの名無しさん:2013/06/30(日) 12:14:25.82
HttpWebRequest/HttpWebResponse でファイルをダウンロードする場合、
byte[]をバッファーにしてFileStreamに書き込むわけですが、
今の時代(のPC性能とネットワーク速度)に適切なバッファーサイズってどのくらいなんでしょうか?
29デフォルトの名無しさん:2013/06/30(日) 12:15:17.58
今の時代でもネットワーク速度なんてピンきりなんですから一言では言えないと思いますが
30デフォルトの名無しさん:2013/06/30(日) 12:23:19.03
あとTCPに関しては送受信単位はTCPウィンドウで指定されるので
そこで指定するバッファのサイズと一致しない
31デフォルトの名無しさん:2013/06/30(日) 12:24:42.88
8192がいいよ
32デフォルトの名無しさん:2013/06/30(日) 12:44:38.67
数十KBとっとけよ
33デフォルトの名無しさん:2013/06/30(日) 17:43:52.36
大きいとプログレスバー等に通知する場合ガタガタになるという
34デフォルトの名無しさん:2013/07/02(火) 05:40:45.80
ファイル閉じるときは
CloseするのかDisposeするのか
どちらが正解ですか?
35デフォルトの名無しさん:2013/07/02(火) 06:22:16.15
Streamから派生している場合CloseとDisposeは等価(であるべき)

まあusingを使え
36デフォルトの名無しさん:2013/07/02(火) 08:42:55.51
CloseしてからDispose
37デフォルトの名無しさん:2013/07/02(火) 10:00:41.18
Closeは中でDispose呼ぶだろ
38デフォルトの名無しさん:2013/07/02(火) 10:12:08.71
それはアプリ終了時に〜だからDisposeしなくていいだろって言うようなもの
39デフォルトの名無しさん:2013/07/02(火) 10:32:16.09
全然違うし
using使えでFAですし
40デフォルトの名無しさん:2013/07/02(火) 12:50:54.05
意味論的に正しいのはCloseだと思う
Dispose の本来の目的は、自分自身が責任をもつリソースの処分
41デフォルトの名無しさん:2013/07/02(火) 13:17:14.22
Close=DisposeはMSがマニュアルに明記してる上、
usingを使った方法も説明されているから問題ない
ただ意味的にって話なら、usingなしの単独の場合は
Closeを使ったほうがいいだろうな
42デフォルトの名無しさん:2013/07/02(火) 13:24:49.98
精神衛生上はCloseが良いかと
43デフォルトの名無しさん:2013/07/02(火) 13:41:58.23
IDisposable実装してるクラスはとにかくusingって覚えてるけどマズイの?
44デフォルトの名無しさん:2013/07/02(火) 14:05:59.44
寿命が単一メソッド内に収まらないとか間々ある
45デフォルトの名無しさん:2013/07/02(火) 14:06:19.75
オープンした状態のReaderなりWriterをメンバーとして保持してるクラスは、
そのReaderなりWriterをusingで囲むわけにはいかない
46デフォルトの名無しさん:2013/07/02(火) 14:23:17.18
あたりまえだろハゲ
リソース解放の責任がどこにあるかというだけ
47デフォルトの名無しさん:2013/07/02(火) 14:40:01.01
ファイルとかdisposeしないとファイルが使用中になってたような
48デフォルトの名無しさん:2013/07/02(火) 14:50:24.75
あたりまえだろハゲ
ファイルハンドル握ってんだよ
49デフォルトの名無しさん:2013/07/02(火) 14:55:45.10
ハゲてないよ
50デフォルトの名無しさん:2013/07/02(火) 14:59:49.51
ステータスを外部に依存するメンバ変数ってどうなのよ
51デフォルトの名無しさん:2013/07/02(火) 16:59:17.67
なにいってんだハゲ
そういうリソースをメンバに持ってるクラスこそIDisposableを実装すんだろが
52デフォルトの名無しさん:2013/07/02(火) 18:18:49.50
エクセル操作に関して

double型からRange型への変換方法を知っている方がいたら教えてください
53デフォルトの名無しさん:2013/07/02(火) 18:25:45.18
それは変換するもんじゃなくて設定するもんだと思うが
やりたいことは具体的に
54デフォルトの名無しさん:2013/07/02(火) 18:40:36.62
エクセルの値を読み込み
ある関数で計算する
その計算結果をエクセルに出力させる
というプログラムです。

設定するものなのですか。
調べます、ありがとうございます。
55デフォルトの名無しさん:2013/07/02(火) 19:50:39.01
ICカードを扱う無料の.NETライブラリありますか?
56デフォルトの名無しさん:2013/07/02(火) 20:08:06.77
>>54
少しも具体的ではないよ
57デフォルトの名無しさん:2013/07/02(火) 21:16:18.86
>>56
具体的でなくてすみません
ユーザー設定の仕方がいまいちわからず
別の方法を探していました

CSVで出力すれば良いとわかったので
解決しました

ありがとうございます
58デフォルトの名無しさん:2013/07/02(火) 21:21:05.99
ユーザー設定というキーワードが出てきたけど…
59デフォルトの名無しさん:2013/07/02(火) 21:27:15.76
設定で数値の型を無理やり変えることができる
と思ったのですができませんでした
60デフォルトの名無しさん:2013/07/02(火) 22:37:35.30
VBAの方が早そうな気が
61デフォルトの名無しさん:2013/07/02(火) 23:19:40.39
VBAが良かったのですがC#で作れとの命令だったのでした
あしからずorz

エクセルデータを読み込んで、double型の関数で計算
その計算結果をCSVに出力後、gnuplotでグラフ描いて終わり

プログラムは完成して納期に間に合わせることができます
アドバイスくれた方々に感謝です
62デフォルトの名無しさん:2013/07/03(水) 02:22:08.18
どんなグラフ書いてるか知らんが、EXCELだけで完結する気がするが
わざわざC#で作ってぼったくりか
63デフォルトの名無しさん:2013/07/03(水) 13:20:04.26
なんちゃら理論で3Dのグラフを描くらしいです
頼まれたのはコンソール版でのファイル入出力部分
最終的にはwindowsアプリケーションにしたいと言われています
64デフォルトの名無しさん:2013/07/03(水) 13:34:08.39
話ずれるけどofficeもVBAじゃなくてC#で書けるようにならんかねー
65デフォルトの名無しさん:2013/07/03(水) 13:46:52.99
Cでしかやったことないけど、間接的にC#でも書けると思う
コントロール作って、フォームに貼り付ける形にしたりVBAから呼び出したり、
officeのコントロールを叩いてWindowsフォームアプリからoffice呼び出す形にする
グラフの描画だけしたいならchartコントロールで。ただこのコントロールは非常に使いにくいw
66デフォルトの名無しさん:2013/07/03(水) 14:38:55.19
そして次にお前は Excel が入っていないPCで動かないじゃないか!! と言う
67デフォルトの名無しさん:2013/07/03(水) 15:13:24.92
VBA使わずにC#アプリでOfficeを制御する派
今のVBAってまだVB6なん?
68デフォルトの名無しさん:2013/07/04(木) 02:36:32.00
>>62-63
むしろそれエクセル要らねえな
69デフォルトの名無しさん:2013/07/04(木) 18:50:11.97
>>68
同意
70デフォルトの名無しさん:2013/07/04(木) 20:44:44.86
Form閉じた後に、別スレッド上からInvokeメソッドで呼び出すとObjectDisposedExceptionが投げられます
WebBrowserクラスを派生して非同期でデータをダウンロードするようにしているのですが、どのように対処すればいいですか?
71デフォルトの名無しさん:2013/07/04(木) 20:54:21.27
>>70
根本的に設計が汚い。
この際だから依存関係逆転ぐらい覚えよう。
要するにイベントを使う
72デフォルトの名無しさん:2013/07/04(木) 21:05:11.65
行番号を表示させようとしてます

int lineSpacingPixel = (int)Math.Round(font.GetHeight(g),0);
for (int i = 1; i <= lastLine + 1; i++)
{
g.DrawLine(p,
new Point(myPictureBox.Width - 5, (int)(lineSpacingPixel * (i + 1))),
new Point(myPictureBox.Width, (int)(lineSpacingPixel * (i + 1)))
);
}

これをフォントと重ね合わせると基本的にはうまくいくんですが、
フォントによっては改行するごとにズレが生じる事があります

行間を取得する方法として何かまずいんでしょうか
73デフォルトの名無しさん:2013/07/04(木) 21:47:41.37
>>70
Invokeする前にIsHandleCreatedやIsDisposedプロパティでハンドルが生きてるか確かめる
74デフォルトの名無しさん:2013/07/04(木) 21:50:26.65
で、確かめた後InvokeするまでにFormが閉じられて死ぬ未来が見えました
75デフォルトの名無しさん:2013/07/04(木) 21:52:13.98
try
catch
で握り潰せばいいと思う
76デフォルトの名無しさん:2013/07/04(木) 21:54:17.05
根本的に作りが腐ってると思う
77デフォルトの名無しさん:2013/07/04(木) 21:54:25.40
というか、Invokeでやりたい処理ってなんだよ
握りつぶしていい処理ならそもそもやらんでいいかも知れんぞ
78デフォルトの名無しさん:2013/07/04(木) 22:02:41.83
根本厨つてどこにでもいるなw
7970 忍法帖【Lv=2,xxxP】(3+0:5) :2013/07/04(木) 22:47:44.62
ありがとうございます、間違ってるかもしれませんが、
WebBrowserクラスのDisposedイベントでスレッドが動いてたらAbortすれば動くようになりました

>>77
外部クラスのログをFormのテキストボックスに表示させたかったんです
80デフォルトの名無しさん:2013/07/04(木) 23:04:02.64
よかった、これで解決ですね
81デフォルトの名無しさん:2013/07/05(金) 00:43:32.78
へえC#でExcel扱えるのか
82デフォルトの名無しさん:2013/07/05(金) 00:46:19.87
Windows上ならExcel扱えない言語のほうが珍しい
83デフォルトの名無しさん:2013/07/05(金) 08:35:37.23
人類の夢だからな
84デフォルトの名無しさん:2013/07/05(金) 12:24:30.34
Appication.Exitを呼ぶと
次の項目のどれが、どの順で実行されますか?

A Exitを呼んだスレッドで作られたControlとHandleの破棄
B ほかのスレッドで作られたControlとHandleの破棄
C Exitを読んだスレッドのApplication.Runから抜ける
D ほかのスレッドのApplication.Runから抜ける

>>70ではないのですが、BeginInvokeするためだけに作った
Controlが、終了処理中、HandleDestroyedが呼ばれることなく
いつの間にか死んでます。
85デフォルトの名無しさん:2013/07/05(金) 12:29:16.76
不定
86デフォルトの名無しさん:2013/07/05(金) 13:29:52.07
とりあえず、Application.Exitというのは、ほかのスレッドの
ハンドル破棄やApplication.Run終了もやってくれるという
認識でいいですか?
87デフォルトの名無しさん:2013/07/05(金) 14:01:35.98
ハンドルの破棄はExitが直接やってるわけじゃないだろ
88デフォルトの名無しさん:2013/07/05(金) 15:08:55.36
ts
89デフォルトの名無しさん:2013/07/05(金) 15:15:51.48
C#でKinect for Windows SDKを利用してプログラム開発を進めようと思うのですが
Kinect独自の画面認証や体のジョイント認証と混同して

単純な四角形の描画やdelay関数を用いることは出きるのでしょうか??
90デフォルトの名無しさん:2013/07/05(金) 16:01:07.34
>>81-82
> Windows上ならExcel扱えない言語のほうが珍しい

そう、C からでも使える。
91デフォルトの名無しさん:2013/07/05(金) 19:41:41.08
>>86
マルチGUIスレッド自体がグレーだよ
不定の意味分かる?
92 忍法帖【Lv=2,xxxP】(1+0:5) :2013/07/05(金) 20:13:25.26
WebBrowserを派生して自前のメソッドでDocumentTextにソースを流し込んでいるんですが、
リンクをクリックした場合も、自前のメソッドでDocumentTextにソースを流し込むようにしたいのですが、
クリックされたリンクを取得して自前のメソッドに投げることはできたのですが、
webBrowser自体の?でリンクをクリックしたときに自動でページ移動するみたいです
Navigatingイベントを見てみましたが、これをどこで潰せばいいのかわかりません
どうにかヒントだけでもください。お願いします
93デフォルトの名無しさん:2013/07/05(金) 20:23:28.21
WebBrowserユーザー=糞の図式が成り立ちつつある
94デフォルトの名無しさん:2013/07/05(金) 20:29:09.56
OnBeforeNavigateのことか?
95デフォルトの名無しさん:2013/07/05(金) 20:29:46.00
BeforeNavigate2とかなかったっけ
あればそれでキャンセルできる
なけりゃWebBrowserじゃなくてSHDocVwかなんかから引っ張ってきたらいい
96デフォルトの名無しさん:2013/07/07(日) 20:03:50.55
ノベルゲー的なものを作ろうとしています
そこで画像の表示なのですが、どのように表示させるのがセオリーというか、ベターなのでしょうか?

今はpictureboxを複数重ねて同じ位置に配置し、透過して表示させています(背景、キャラなど)
しかし、これだと後々キャラが動くモーションなどを組む時に困る気がしてきまして・・・
97デフォルトの名無しさん:2013/07/07(日) 20:08:23.01
Paintイベントで全部描く
98デフォルトの名無しさん:2013/07/07(日) 20:27:38.55
ノベルゲーをつくるんじゃないんです
ノベルゲー的なナニカを作りたいんです
99デフォルトの名無しさん:2013/07/07(日) 20:40:10.84
「モーション」はどういうデータ形式(ファイル)で持ってくるつもり?それにあわせればいいだろ
とりあえず静止画のみで作ったら?
100デフォルトの名無しさん:2013/07/07(日) 21:42:46.62
WPFのほうが良さそう(てきとう)
101デフォルトの名無しさん:2013/07/07(日) 23:46:25.34
HTML CSS javascriptだな
102デフォルトの名無しさん:2013/07/08(月) 00:03:24.37
>>96
Windows Form前提なら、GDI+を覚えた方がいいよ。

とりあえず、Pictureboxを昔のゲーム機のスプライトみたいに使うのは
Windows的には正統的な方法じゃないとだけ言っとく。
103デフォルトの名無しさん:2013/07/08(月) 00:12:18.94
WPFなら正当だけどな
104デフォルトの名無しさん:2013/07/08(月) 09:06:08.14
動きゃいいんだよ
105デフォルトの名無しさん:2013/07/08(月) 11:58:55.31 ID:r7Pti5YE!
これからはSilverlightがお勧め。
106デフォルトの名無しさん:2013/07/08(月) 12:18:56.89
Dictionary<TKey,TVal> が順番を保存しないという仕様なのは前提として。

var dic = new Dictionary<int, int>();
dic[0] = 0;
dic[1] = 1;

var arr1 = dic.Values.ToArray(); // { 0, 1 }

dic.Remove( 0 );
dic.Remove( 1 );

if( dic.Count == 0 )
{
 //dic.Clear();
}

dic[0] = 0;
dic[1] = 1;

var arr2 = dic.Values.ToArray(); // { 1, 0 }


////////////

dic.Clear(); のところでコメントを外すとarr2 も{ 0, 1 }になるんだなぁ
キーのハッシュのキャッシュのせいかなぁ
未定義の動作だからこんなこと考えても仕方ないけど。
それは重々承知としても、無意識に順番を想定しちゃうコード書いちゃうことってありませんか……
107デフォルトの名無しさん:2013/07/08(月) 12:24:28.11
SortedDictionaryじゃ駄目なの?
108デフォルトの名無しさん:2013/07/08(月) 12:27:13.51
ありゃSortedDictionary<TKey, TValue>なんてあったのかー!!
お恥ずかしい
こういうところがタコなんだなぁ。
109デフォルトの名無しさん:2013/07/08(月) 12:30:29.56
いや違った
ソートしてほしいんじゃなくて
挿入順を保存してほしいんだった……
110デフォルトの名無しさん:2013/07/08(月) 12:32:50.73
自分で番号を保存すればいいんじゃね
111デフォルトの名無しさん:2013/07/08(月) 12:53:27.65
>>23-24 です。
どなたかわかりませんか・・?
112デフォルトの名無しさん:2013/07/08(月) 12:57:25.18
そういう標準を外れるようなことをするのは嫌いなので
113デフォルトの名無しさん:2013/07/08(月) 14:23:36.31
分かるわ
あとWebBrowserで〜ってやつ
114デフォルトの名無しさん:2013/07/08(月) 17:50:07.69
配列>ArrayList>Listって流れだろ
Listって順番保障してなかったっけ?
115デフォルトの名無しさん:2013/07/08(月) 18:18:10.45
そりゃ保証してるけど今はあんまり関係ないだろう
まあOrderedDictionaryなんての作る場合はお世話になるが
116デフォルトの名無しさん:2013/07/08(月) 20:02:40.07
>>106はDictionary使ってるが、そもそもホントにDictionaryの必要あるのか?
117デフォルトの名無しさん:2013/07/08(月) 23:42:11.48
クイックソート、マージソート、優先度つきキューとヒープソートについて学習したいのなら
ttp://www.ouj.ac.jp/hp/kamoku/H25/kyouyou/B/joho/1570048.html
118デフォルトの名無しさん:2013/07/08(月) 23:45:36.40
バイナリサーチとハッシュ表を挙げないあたり、
理解してないのがわかるな
119デフォルトの名無しさん:2013/07/08(月) 23:49:01.88
表示時だけ挿入順でソートし直して表示したいってことか?

挿入順を記憶しておいて
表示する時にSortedDictionaryに突っ込み直して
先頭から表示するしか
120デフォルトの名無しさん:2013/07/08(月) 23:51:31.41
要素の特定のプロパティをキーにするような場合は
KeyedCollectionというのもあるぞ
121デフォルトの名無しさん:2013/07/08(月) 23:54:16.03
初心者のうちはオーダーとか気にせず全部Listに突っ込んでLINQ使えばいいと思うよ
122デフォルトの名無しさん:2013/07/09(火) 00:25:40.39
>>120
常に追加順で扱うならListかLinkedListでいいだろ
Dictionaryに入れるのであれば
要素の比較でソートはしたいってことじゃないのか
123デフォルトの名無しさん:2013/07/09(火) 00:34:33.02
Dictionaryを使う動機は普通は「キーを使って高速に検索したい」だろう?
どっからソートが出てきた?
124デフォルトの名無しさん:2013/07/09(火) 00:42:10.81
遡るとそんな話じゃない

>無意識に順番を想定しちゃうコード書いちゃうことってありませんか

俺は全く全然さっぱりない
125デフォルトの名無しさん:2013/07/09(火) 07:21:45.95
>>123
ソートではなかったな
ソートの話が多くてつい言ってしまったわ
126デフォルトの名無しさん:2013/07/09(火) 18:41:35.96
>>97-105
ありがとうございます
ちょっといろいろ調べてみます
127デフォルトの名無しさん:2013/07/09(火) 20:12:42.34
C#って感覚でガンガン作れるから設計書っていらなくないですか?
生産性と創造性を阻害するだけに思えます
128デフォルトの名無しさん:2013/07/09(火) 20:25:55.07
お前はなにを言っているんだ
129デフォルトの名無しさん:2013/07/09(火) 20:38:29.75
適当でも気が付くと形になってるC#すげえって事だろ
130デフォルトの名無しさん:2013/07/09(火) 20:56:12.29
>>127
3Ks 辺りまでは、同意

俺のショボい頭では、それ以上はドキュメントなしでは無理
131デフォルトの名無しさん:2013/07/09(火) 21:11:56.74
C#でもクソ言語でも型設計はそれほど変わらんだろ
132デフォルトの名無しさん:2013/07/10(水) 00:34:18.12
外部設計とか言語全く関係ないしなあ
133デフォルトの名無しさん:2013/07/10(水) 03:52:32.73
俺は別にどんな言語でも感覚でガンガン作りますが
134デフォルトの名無しさん:2013/07/10(水) 09:09:53.02
コードがドキュメントです! キリッ!
135デフォルトの名無しさん:2013/07/11(木) 00:15:44.18
もの作ってから設計図書くっておかしくない?
136デフォルトの名無しさん:2013/07/11(木) 00:24:58.06
細けぇ事はいいんだよ
(ヾノ・ω・`)
137デフォルトの名無しさん:2013/07/11(木) 00:35:34.96
設計書は納品が終わって落ち着いてから書くモノだよ
138デフォルトの名無しさん:2013/07/11(木) 07:12:34.82
設計仕様書は、制作前に作り適時更新するもの。
納品仕様書は、完成後に作るもの。
139デフォルトの名無しさん:2013/07/11(木) 18:57:30.82
テキストボックスに改行マークを付けたいと思い、以下のメソッドを作成しました。
改行マークは意図したところについてくれるのですが、テキストボックスを「改行で」スクロールすると
テキストボックスの一番下の空白(テキストボックス扱いじゃない隙間?)に
改行マークの残像のようなものが付き、増えていってしまいます。
なにか防ぐ手はないでしょうか。

public void New_Line_Check(TextBox textBox)
{
//ダブルバッファリング用 「Height+100」は試行錯誤しようとした後です、気にしないでください
Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height+100);
Graphics g1 = Graphics.FromImage(textBox_g);

//Bitmapに改行マークを描写後、textBoxに写す
using (Graphics g2 = textBox.CreateGraphics())
using (Brush brush = new SolidBrush(Color.DarkGreen))
{
// 改行検索
Regex regex = new Regex(Environment.NewLine);
foreach (Match match in regex.Matches(textBox.Text))
{
// 改行位置取得
Point point = textBox.GetPositionFromCharIndex(match.Index);
point.Offset(-2, 2); // 出力位置微調整(お好みに応じて)

// 改行記号(ここでは"↓")描画
g1.DrawString("↓", this.Font, brush, point);
}

g2.DrawImageUnscaled(textBox_g, 0, -2, textBox.Width , textBox.Height + 100);
g1.Dispose();
}
}
140デフォルトの名無しさん:2013/07/11(木) 19:03:23.70
(キーなどの)入力をオーバーライドして、改行が入ったら「↓」文字を挿入しちゃえw
141デフォルトの名無しさん:2013/07/11(木) 19:10:44.71
そしたら↓文字もコピー対象となってテキストエディタとして死んでしまうw
142デフォルトの名無しさん:2013/07/11(木) 19:14:27.84
>>139
あ、更にいじってたら自己解決しました
すみません
Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height+100);

Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height-10);
とちょっと短くしたら何故か綺麗になった

なぜか分かんねえけどもうこれでいいやw
143デフォルトの名無しさん:2013/07/11(木) 22:11:35.37
>>135
設計図は頭の中
設計図を書いてるように見えるが、単にダンプしてるだけ
144デフォルトの名無しさん:2013/07/11(木) 22:18:21.47
ソースから生成して多少手直ししてる
設計書なんてバカバカしいよ
あんなものは高級な言語や開発環境が無かった時代の遺物であって現代にはそぐわない
145デフォルトの名無しさん:2013/07/11(木) 22:27:11.93
設計から開発までするところは適当だな
下請けに来る仕様書の分厚さと細かさはびっくりするぞw
146デフォルトの名無しさん:2013/07/11(木) 22:40:52.52
土方に投げるための懇切丁寧な仕様書ってその人月でプロダクト仕上がる勢い
147デフォルトの名無しさん:2013/07/11(木) 22:42:00.20
>>146
だな
148デフォルトの名無しさん:2013/07/11(木) 23:09:39.47
>>145
まあ、大昔のリスト出力と同じで 価格 = 単価 × 枚数 だしな
149デフォルトの名無しさん:2013/07/15(月) 16:22:20.47
いまc#で2chの専ブラを開発しているのですが分からないことがあるので質問させて下さい
スレッドタイトルの検索はどのように行うのがベターなんですか?
find 2chの検索結果htmlを切り出せばいいのでしょうか?
150デフォルトの名無しさん:2013/07/15(月) 16:32:39.79
それでいいんじゃない?
151デフォルトの名無しさん:2013/07/15(月) 16:49:46.40
スレ一覧をキャッシュしておいて
そこから検索するのが普通じゃないの
152デフォルトの名無しさん:2013/07/15(月) 16:52:18.13
さすがに行ったことのない板のスレ一覧まで取得する構造にはしないだろ

専ブラによって見に行く場所違うね
153デフォルトの名無しさん:2013/07/15(月) 16:54:07.91
板によっちゃ新しいスレが乱立してキャッシュじゃカバーできないからな
>>149が作ろうとしてるのがどういう使われ方を想定してるのかによってベターな方法は変わる
154デフォルトの名無しさん:2013/07/15(月) 16:57:51.26
行った事無い板のスレタイ検索とかしないだろ
155デフォルトの名無しさん:2013/07/15(月) 17:01:19.26
自分がする、しないは関係ない
156デフォルトの名無しさん:2013/07/15(月) 17:02:19.03
専ブラの仕様としてそんなの見た事無いし
何でそんな俺俺仕様まで想定して答えないといけないの
そんなのはエスパーの仕事だよ
157デフォルトの名無しさん:2013/07/15(月) 17:08:04.99
>>149のが実装されてたら便利でいいじゃん
158デフォルトの名無しさん:2013/07/15(月) 17:20:00.32
>>156
質問を読めば今アクセスしてる板のスレ一覧から検索したいのではなく、全板から検索したいというのが分かる。
エスパーである必要はない。

問題はfind 2ch以外で全板検索をかけることができるのかどうか?って点だよ。
どこかから全板のスレ一覧を落とせるか、もしくはhtml以外でのfind 2chへのアクセス方法が用意されているかどうかって点。
おそらくないだろうな。html切り出しがベターだと思う。
159デフォルトの名無しさん:2013/07/15(月) 17:21:17.05
>>154
行ったこと無いからこそ検索が必要なんだけどな。
普段行ってる板ならそこでさがしゃいい
160デフォルトの名無しさん:2013/07/15(月) 17:32:51.18
>>150-157
レスどうもです
取得したスレッド一覧別にスレッドのタイトル検索機能はつける予定です
それとはべつに全板からスレッドのタイトル検索機能をつけたいんです
アプリ内で全板のスレ一覧のデータを維持し続けれません
なので外部のAPIに任せたいのですがそれらしいものは見当たりませんでした
しかしたとえばiOSアプリのTwinkleだったりAndroidアプリの2chMateなどにはそういった機能があります
なので方法はあるはずなんです
その結果私が考えつけたのが>>147の質問になります
161デフォルトの名無しさん:2013/07/15(月) 17:35:25.50
>>160の最後アンカ間違えました正しくは>>149です
>>158-159
おっしゃるとおりです
やはりhtmlきりだしなんでしょうかね
162デフォルトの名無しさん:2013/07/15(月) 17:38:59.32
>>160
本当にある?
全板横断のスレタイ検索って事だよね?

俺の mate では出来ないような…
163デフォルトの名無しさん:2013/07/15(月) 17:41:20.72
JaneStyleだとfind.2ch.netとdomo2.netとttsearch.netからスレタイ検索できるみたい
試してないけど
164デフォルトの名無しさん:2013/07/15(月) 17:57:13.58
>>162
2chMateにはなかったですか?適当なこと言ってすみません
2chMateは使ったことはがありませんのでないかもしれません

>>153
find.2ch以外にもその手のサービスはあるんですね
複数のサイトから検索結果を得られると信頼性があがりますね
165デフォルトの名無しさん:2013/07/15(月) 18:10:30.00
V2CにもWebスレッド検索ってのがあるな
検索サイトに任せてんでしょ
166デフォルトの名無しさん:2013/07/15(月) 18:11:44.00
にちゃんが要求する専ブラの仕様はよくわからんが
普通に板一覧取得してそこから各板のスレ一覧取得してって流れじゃダメなん?
あんまし負荷かけたらダメみたいなルールがあるんか?
167デフォルトの名無しさん:2013/07/15(月) 18:22:27.46
>>166
ダウンロードファイル数が多くて大変
168デフォルトの名無しさん:2013/07/15(月) 18:24:20.89
>>167
それはfind2chでも同じじゃないの?
find2chは内部でどうやってるのかな
169デフォルトの名無しさん:2013/07/15(月) 18:27:01.52
>>168
find.2chって言うぐらいだから運営のだろ?スレが立つたびにローカルに保存してるんじゃない?
170デフォルトの名無しさん:2013/07/16(火) 10:43:30.33
>『2ちゃんねる検索』『2ちゃんねるブラウザp2』は弊社のサービスですが、2ちゃんねるは弊社のサービスではございませんのでご了承ください。

とあるぜ
171デフォルトの名無しさん:2013/07/16(火) 13:40:08.11
すみません。InstallUtil.exeが.net 3.5には無いんでしょうか?
1.1と2.0と4.0のしか入っていないみたいなんですが。
VisualStudio2008はインストールしています。
172デフォルトの名無しさん:2013/07/16(火) 14:03:39.95
3.5=2.0+α
173デフォルトの名無しさん:2013/07/16(火) 14:09:42.36
2.0のでいいのですね!
174デフォルトの名無しさん:2013/07/16(火) 19:54:07.76
テキストボックスで描写の検知をしたかったため、テキストボックスを継承したコントロールを作っています。
サイトを参考に作成して概ね希望する動作はしたのですが、1点わからないことが出たので教えて下さい。
はじめてWndProc(ref Message m)を使ってるのですが、最後の「base.WndProc(ref m);」は何のために呼んでいるのでしょう?
検知を行ったら継承元にMessageを送らないといけない理由がわかりません

//描写等の取得
[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand,
Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
protected override void WndProc(ref Message m)
{
const int WM_PAINT = 0x000F;

switch (m.Msg)
{
case WM_PAINT:
New_Line_Check((TextBox)this);
break;
}

base.WndProc(ref m);
}
175デフォルトの名無しさん:2013/07/16(火) 20:07:48.03
WM_PAINT以外はデフォルトの処理をさせるため
WM_PAINTはbreakしてbase呼ぶから、やっぱりデフォルトの処理を後からさせてる
デフォルトの処理をしないと、メッセージが来ても何もせずに終わる(キー入力処理も描画処理も何もなし)
176デフォルトの名無しさん:2013/07/16(火) 20:19:49.25
WndProcは言ってみれば脳みそに到達した情報をバイパスしてる
WndProcをオーバーライドするとどんな情報が来たか分かるし、ある種の情報を握りつぶしたり改変したりできる
バイパスだからちゃんと元の脳みそに伝えてやる(base.WndProc)ことが必要で、
そうしないとウンコが出そうなのに垂れ流したりする
177デフォルトの名無しさん:2013/07/16(火) 21:42:18.12
その例えはどうなのよ…
178デフォルトの名無しさん:2013/07/16(火) 23:08:02.96
屁だと思ってだしてみたら実だった、とか
179デフォルトの名無しさん:2013/07/17(水) 01:03:24.64
よし 通れ
180デフォルトの名無しさん:2013/07/17(水) 13:50:01.28
>>175
なるほど、分かりました
例外処理以外の時に対応するためなんですね
ありがとうございました

>>176
あ、ありがとうございました・・・
181デフォルトの名無しさん:2013/07/17(水) 19:42:51.67
>>139>>174です
その後、改良してテキストボックスがスクロールした時、マウスホイールした時、文字入力した時など、自分の想定される場面で改行マークを付けることができるようになりました。
しかし以下の処理が実現出来ません。

「ファイルを開く」メニューを用意しており、その中のLoad_File()メソッドで、StreamWriter機能を使ってテキストファイルを読み込んでいます。
この時、ファイル読み込み直後に自動で改行マークを付けたいと考えており、
下記ソースのように処理の最後に改行マークを付けるNew_Line_Check()メソッドを置いてみたり、自動で処理するよう試みているのですが、
処理順が ダイアログ「OK」→改行マーク処理(一瞬読み込んだテキストにあった形で表示されるが消える)→テキスト読み込み
となり、改行マークのないテキストがテキストボックスに表示されてしまいます。

考えられる問題点として、>>139のグラフィックが読み込み処理で破棄されてしまうのかなとusingを検証用に外してみたり、
イベント処理の順番かと下記メソッドを丸々try{}catch{}で括ってfinally内にNew_Line_Check()メソッドを置いてみたりしたのですが、解決出来ません。
>>174のテキストボックスの描写ごとの呼び出しもテキストファイルの読み込みには効果がないようです)
なにか解決の糸口はないでしょうか。

//ファイルを開く
private void Open_File_Menu_Click(object sender, EventArgs e)
{
//ダイアログを表示する
//OKボタンがクリックされたとき
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//パスを保存
File_Name = openFileDialog1.FileName;
//読み込み
Load_File(File_Name);
}
//ダイアログを閉じる
openFileDialog1.Dispose();

TextBox1.New_Line_Check(TextBox1);
}
182デフォルトの名無しさん:2013/07/18(木) 06:57:25.83
WM_PAINTをフックしてるんなら
TextBox1.New_Line_Check(TextBox1);って呼ばないで
TextBox1.Refresh();とかしてやれば再描画されるんじゃねーの?

でも描画のたびに全行スキャンするなんて重そうだね♪ 

あと、ちょっとは命名規則を考慮してみよう!
183デフォルトの名無しさん:2013/07/18(木) 16:58:50.97
デスクトップにテロップのような字幕を表示したいのですが
フォーム内などではなくデスクトップに文字列を表示するのはどういった方法でやっているのでしょうか?
184デフォルトの名無しさん:2013/07/18(木) 17:04:32.80
>>183
GetDesktopWindow()でデスクトップのウィンドウを取得して
draw
185デフォルトの名無しさん:2013/07/18(木) 17:04:58.11
方法は色々あるけど、透明なウインドウ作って全面に配置するのが一番楽そう
186デフォルトの名無しさん:2013/07/18(木) 17:05:03.62
>>182
レス有難うございます
しかし、TextBox1.Refresh();では改行マークのないテキストが再構築されるだけで、改行マークは付けれませんでした
>>181のファイル読み込み時の問題はまだ解決できていません
wordなり、有名なテキストエディタなりでは実現できているので、何かしら方法はあると思うのですが・・・
もし他に妙案があれば教えて下さい

スキャン範囲については何かしらの方法で改善(範囲限定)しようと思っていますが、当面の問題を解決してから考えようと思っています
187デフォルトの名無しさん:2013/07/18(木) 17:32:40.84
レイヤーウィンドウ使った方が簡単なんじゃね?
188デフォルトの名無しさん:2013/07/18(木) 17:35:08.44
透明なウィンドウはマウスイベントの透過が難しいと思われ。
189デフォルトの名無しさん:2013/07/18(木) 17:50:46.22
>>188
うむ。難しそうだな
ttp://www.wisdomsoft.jp/511.html
190デフォルトの名無しさん:2013/07/18(木) 18:02:29.34
よく知らないが、base.WndProcって描画はしてないの?
New_Line_Checkの前にbase.WndProcを呼んだほうがいいような気がするが…
191デフォルトの名無しさん:2013/07/18(木) 18:48:53.36
>>190
ありがとうございます
試しに先にbase.WndProcを呼んでみましたが、解決には至りませんでした

今は>>139でGraphics g2 = textBox.CreateGraphics()とCreateGraphics()で描写をしているから
何か別の処理が挟まると消えてしまうのかなと思っていて、別の方法で描写出来ないか考えています
でもテキストボックスだからペイントイベントはできないぃぃ・・・
192デフォルトの名無しさん:2013/07/18(木) 19:22:47.17
色々いじっていたらFocus()でフォーカスをテキストボックスに当てた時に改行コードが消えていることが分かった
EnterイベントでもNew_Line_Check()呼んでるのになんで・・・

Focus()消したら改行マーク表示されるよ!でも検索機能が死ぬよ!もうだめぽ!
193デフォルトの名無しさん:2013/07/18(木) 19:26:37.14
改行コードじゃない、改行マークだ・・・
194デフォルトの名無しさん:2013/07/18(木) 19:50:28.82
もういっそフラグ制にしてタイマーで回そうかな・・・
でも糞重そう
195デフォルトの名無しさん:2013/07/18(木) 20:45:19.24
あのなー
最初からみんな見てる人は感じてたと思うけど

エディタみたいな機能を追加するのにTextBoxクラスを継承しても無駄無駄無駄
そこには屍しかない

これに尽きる
元になってるコモンコントロールのEditコントロールがそんな拡張に向いた仕様じゃないのねー
早めに撤退して自前のクラス作ることを考えたほうがいいよ
196デフォルトの名無しさん:2013/07/18(木) 20:52:05.67
禿同
作ってみればたいしたことないから作ったほうがいい
197デフォルトの名無しさん:2013/07/18(木) 20:55:53.77
そして作ってみてびっくり
自作エディットコントロールの重さに・・・
198デフォルトの名無しさん:2013/07/18(木) 20:57:13.83
今どき遅くなりようがない
199デフォルトの名無しさん:2013/07/18(木) 21:24:14.34
アホくさいから外部コンポーネント使うわ
200デフォルトの名無しさん:2013/07/19(金) 03:05:06.94
開発環境はVS2012Proです

http://www.atmarkit.co.jp/fdotnet/dotnettips/931uptime/uptime.html
を参考にしてPCの起動時間を取得しようとしましたが、形式が"dd.hh:mm:ss.ms"なので見辛いです

そこでStringBuilderで分割、整形したのはいいのですが1日未満の場合エラーを吐いてしまいます…
場合に応じて"dd日hh時mm分ss秒"や"hh時mm分ss秒"、"mm分ss秒"のような形式で表示させるようにするにはどうしたら良いでしょうか

コードは下記のとおりです‥
PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
upTime.NextValue();
return upTime.NextValue(); //2度呼び出し

string uptime = Convert.ToString(TimeSpan.FromSeconds(GetSystemUpTime()));
StringBuilder sb = new StringBuilder(uptime);
sb.Length -= 8; //小数削除
sb.Replace(".", ":"); //置換
string r1 = sb.ToString();
string[] lines = r1.Split(':'); //":"で区切る
MessageBox.Show(lines[0] + "日" + lines[1] + "時" + lines[2] + "分" + lines[3] + "秒"");
201デフォルトの名無しさん:2013/07/19(金) 03:21:47.29
>>200
TimeSpanクラスのToStringメソッド使え
http://msdn.microsoft.com/ja-jp/library/dd992632.aspx

もしくはTimeSpanクラスのDaysプロパティとかで場合分けする
http://msdn.microsoft.com/ja-jp/library/system.timespan_properties.aspx
202デフォルトの名無しさん:2013/07/19(金) 03:34:47.33
>>201
ありがとうございます
色々試してみます
203デフォルトの名無しさん:2013/07/20(土) 15:44:22.37
IEnumerable<T>をstructで実装した場合
yield returnの自動実装よりnewが少なくなる分パフォーマンスが高くなる可能性はありますかね
204デフォルトの名無しさん:2013/07/20(土) 18:59:09.91
IEnumerable<T> を明示的に実装して、
返値のみstruct を返すようにシグニチャーを変えたメソッドを普通に実装すれば、f
oreach は new 分だけ速くなるだろうね。
とにかく、インターフェースにボクシングされないように
メソッドを呼べば foreach 以外も同様。
ジェネリックメソッドでは where を使用する。
205デフォルトの名無しさん:2013/07/20(土) 19:05:17.87
>>204
なるほどありがとうございます
206デフォルトの名無しさん:2013/07/20(土) 20:42:34.26
いやLINQの拡張メソッド(Whereとか)を呼んだら例外なくボックス化されるよ
ほとんど意味ない
207デフォルトの名無しさん:2013/07/21(日) 17:46:10.82
void Method<T>(T value) where T : IEnumerable<T>
{}

こういう意味で書きました。
208デフォルトの名無しさん:2013/07/21(日) 21:47:47.18
>>207
void Method<S, T>(S source) where S : IEnumerable<T> の間違いだよな?
よく考えてみるとわかるが、意味ないんだよそれ
void PrintAll<S, T>(S source) where S : IEnumerable<T> {
 foreach (T item in source) Console.WriteLine(item);
}
foreachを展開すれば次のコードと等価
IEnumerator<T> e = source.GetEnumerator();
while (e.MoveNext()) { T item = e.Current; Console.WriteLine(item); }
foreachのボックス化を避けるにはIEnumerable<T>.GetEnumeratorを明示的実装して
構造体を返すようにパブリックなGetEnumeratorをオーバーロードするんだけど、
この場合はIEnumerable<T>インターフェイスを通してGetEnumeratorを呼び出すので、
source.GetEnumerator()の戻り値はIEnumerator<T>にボックス化されて返ってくる
209デフォルトの名無しさん:2013/07/22(月) 20:42:04.24
>>208
そういう意味です。申し訳ない。
言われてみればそうかもしれない。
S が class ならそういう挙動になると思う。
struct なら特殊化されそうな気がするけど、どうなんだろう。

void Method<T>(this MyList<T> list, ...) { }
みたいに、IEnumerable<> を実装したクラスを引数に取るように、わざわざ定義してあげるしかないのかな。
new されないように LINQ 使おうとすると、メソッド分だけ struct :IEnumerator<> を実装しないといけなくなりそうだから現実的じゃないね。
210デフォルトの名無しさん:2013/07/22(月) 20:53:05.44
>>209
特殊化されるかどうかとか関係なくて、
問題はIEnumerable<T>.GetEnumeratorの戻り値が結局IEnumerator<T>であること
IEnumerable<T>を通す以上、GetEnumeratorから列挙子が戻る時点で必ずボックス化される
君の言うように個別にメソッドを用意するしかない
211デフォルトの名無しさん:2013/07/22(月) 20:56:30.28
ILよりもJIT結果のが重要だと思うがどうなんだ
212デフォルトの名無しさん:2013/07/22(月) 21:05:56.78
戻り値も受ける側もインターフェイスなのに、さすがにそんな都合のいい最適化はないよ
213デフォルトの名無しさん:2013/07/22(月) 21:07:54.73
IEnumerableよりベタ配列の方が速いのは仕方ないよね
214デフォルトの名無しさん:2013/07/22(月) 21:46:41.92
>>210
本来使えないはずの GetEnumerator() を、where で指定することで使用できるようにしているので、インターフェース側のメソッドのシグニチャで、コンパイル時に型が決定するということですね。

では、インターフェース側で setter を持つメソッドが定義されていて、それを同様にして使用した場合、ボックス化されてしまうのでしょうか。
215デフォルトの名無しさん:2013/07/22(月) 22:07:43.37
>>214
setterを持つメソッドの意味がよくわからないが
そもそもジェネリックとか全く関係なくて、戻り値の型がインターフェイスだから
戻り値はボックス化されるというだけの単純な話だぞ
216デフォルトの名無しさん:2013/07/22(月) 23:56:18.02
>>215
setter を持つプロパティのミスでした。


戻り値の型がインターフェースとありますが、それは IEnumerable<> での話であって、
当然 T : IEnumerable<> で明示的実装により struct な IEnumerator<> の実装を返せば、
戻り値の型は struct ですよね ?

そこで、ジェネリックメソッドで where T : IEnumerable<> としたとき、
var enumerate = list.GetEnumerator();
の var は list の方のシグニチャを優先するのか、IEnumerable<> の方のシグニチャを優先するのか、
という話をしたかったので、無関係ではありません。

せっかくなのでテストをしました。修行中の身ゆえリンクは張れません。堪忍
ideone.com/pzAlhg
217デフォルトの名無しさん:2013/07/22(月) 23:57:28.73
続き

IEnumerable の方はおっしゃる通りの動作となりました。理由は >>214 に書いた通りなのだと思います。

では、setter を持つプロパティについては、どういう動作になっているのでしょうか。
明示的にボックス化をすると、コピーが出来てしまうので当然こういった動作になるのはわかります。
しかし、明示的に書かなかった場合に、
IEnumerable<> の時と同様に ITest.Property が呼ばれているなら、
ボックス化が起き、コピーが作られると思ったのですが。。
218デフォルトの名無しさん:2013/07/23(火) 00:39:10.77
>>217
特殊化されてるから。
MethodA<T>(ref T value) をTestで特殊化したら MethodA(ref Test value) になるから当然ボックス化は発生しない。
同様に、IEnumerator<T> MethodC<T>(IEnumerator<T> e) を特殊化したら
IEnumerator<Test> MethodC(IEnurmerator<Test> e)
戻り値も引数もどう見てもインターフェイスだろ? だから当然引数も戻り値もボックス化される。
219デフォルトの名無しさん:2013/07/23(火) 00:55:01.95
話がごっちゃになってるなあ
Method(T obj) where T : IHoge { obj.Hoge(); }
の形では、Tが値型の場合でも特殊化のおかげでobjのボックス化は発生しない。
x.GetEnumerator()でボックス化されるのは "xではなく、" "GetEnumeratorの戻り値"。
それは単にGetEnumeratorの戻り値がIEnumerator<T>だからであり、上のとはまた別の話。
IEnumerator<T>をいくら特殊化しようがインターフェイスだろ。
220デフォルトの名無しさん:2013/07/23(火) 03:39:06.10
ジェネリックメソッド内で x.GetEnumerator() を呼び出す時、
(x as IEnumerable<>).GetEnumerator() という書き方とは別の方法で、コンパイラは x 自体のボックス化をせずに IEnumerable<>.GetEnumerator() を呼び出すということでしょうか?
その時の GetEnumerator() のシグニチャは IEnumerable<> での定義によると。
221デフォルトの名無しさん:2013/07/23(火) 07:55:50.72
シグニチャは関係ないだろって言われてるのに
222デフォルトの名無しさん:2013/07/23(火) 08:52:16.95
http://dobon.net/vb/dotnet/system/wmiwin32os.html
コンピューターの情報を取得出来ますが、

foreach (System.Management.ManagementObject mo in moc)

で、複数取得出来る可能性があるということだと思いますが、
OSの名前が複数取得出来る場合ってどういう時でしょうか?
223デフォルトの名無しさん:2013/07/23(火) 09:03:24.12
224デフォルトの名無しさん:2013/07/23(火) 09:25:55.75
なんでドボンはIDisposableなオブジェクトを放置する糞コードを晒したままにしてるの?
225デフォルトの名無しさん:2013/07/23(火) 09:30:51.85
いやdobon無いと何も作れないから困る
226デフォルトの名無しさん:2013/07/23(火) 10:18:51.07
>>223
ありがとうございます。
VBSなんかでもコンピューターの情報を取得するサンプルがありますが、
どこを見ても必ずforeachでまわしてるので疑問に思ってました。
デュアルブートだったら2つ取得することもあるかなと思いましたけど、
起動してないOSの情報なんて取得出来るのかなと・・・。
227デフォルトの名無しさん:2013/07/23(火) 17:26:02.45
>>221
System.Collection.Generic.List<T>.GetEnumerator()の戻値の型は IEnumerator<T> ではなく、List<T>.Enumerator なので、シグニチャは関係あると思うのですが。

List<T>.GetEnumerator() を使用しても、新しくヒープにインスタンスが作られないように、IEnumerable<T> をわざわざ明示的に実装しているわけですし、先ほどのテストでもこれが正しいことは確認出来ると思います (コメントアウトを外した時の挙動で)。
228デフォルトの名無しさん:2013/07/23(火) 19:54:21.90
class Form1のクラス以外でtextBox1.Textが操作ができないのですが
他のクラスで操作したい場合はどのように扱うのがいいのでしょうか?
229デフォルトの名無しさん:2013/07/23(火) 20:11:28.87
ほかのクラスにform1を渡してform1.textBox1にアクセス
class hoge
{
 public hoge(Form1 form){ _form1 = form; _form1.text="hoge"; }
 Form1 _form1;
}
class Form1
{
 hoge _hoge = new hoge(this);
}
230デフォルトの名無しさん:2013/07/23(火) 20:12:41.77
>>227
だから実装はどうあれ戻り値はIEnumerator<T>だろって言われてるんじゃねーの
231デフォルトの名無しさん:2013/07/23(火) 20:58:47.87
現在C#で関数型プログラミングの勉強がてらオブジェクト指向な自作アプリを関数型スタイルへと移行しているのですが、クラス構造の移行の考え方?がよくわかりません。
staticメソッド内の副作用がないロジックについてはある程度分かってきたのですが...
たとえば私の作るアプリ(ゲーム)の9割以上の部分が下記の構造で動いているのですが、関数型プログラミングの考えでいくと、この構造はどのように変わっていくのでしょうか?
ideone.com/XUM8kV (URL貼り付けNGくらったのでこれですまそ)
232デフォルトの名無しさん:2013/07/23(火) 20:58:58.88
>>228-229
こういうセンスの人はプログラミング向いてない
233デフォルトの名無しさん:2013/07/23(火) 21:04:33.43
夏休みにしては手の込んだ釣りが横行してるな
ふらっとスレにも来てた
234デフォルトの名無しさん:2013/07/23(火) 21:18:47.10
>>232
センスある人はどうやるのです?
235デフォルトの名無しさん:2013/07/23(火) 21:22:06.36
>>229
レスありがとうございます
動作させてみたのですが、よくわかりませんでした
236デフォルトの名無しさん:2013/07/23(火) 21:23:49.61
釣りとかセンスとか
煽りはなしでお願いします
237デフォルトの名無しさん:2013/07/23(火) 21:28:47.57
>>230
List<T>.Enemerator が IEnumerator<T> を実装しているのは当然です。
現在問題にしているのは、ジェネリックメソッド内で、GetEnumerator() を呼ぶ時に、IEnumerable<T> というインターフェース型に『ボックス化』して呼んでいるのか、という点です。もともとは、新しくヒープにインスタンスが作られないように、という問題でしたし。

シグニチャについては、where で指定したインターフェースの方になることは、先ほどのテストからも理解しました。しかし、これではそのオブジェクト自体がボックス化されるかがわからないため、これを確認するテストも行いました。
その結果、setter のあるプロパティを持つインターフェースについては、ボックス化は起きていないと考えました。

以上から、>>220 のように考えました。
これがあっているのかを確認したいのです。
238デフォルトの名無しさん:2013/07/23(火) 21:30:42.60
>>234
Formが他に参照を握られるのではなく、
Formが他の参照を握るようにする。
239デフォルトの名無しさん:2013/07/23(火) 21:42:24.35
>>232
>>1を読め
ドヤ顔して上から言いがかるようなスレじゃないぞ
240デフォルトの名無しさん:2013/07/23(火) 21:46:29.50
>>237
>>220で合ってるよ
ジェネリックは実行時に特殊化されるが、
メンバのバインドはあくまでコンパイル時に行われる

実行時にはすべてのメソッドはその名前や引数だけでなく
それを定義してる型の型名によって明確に区別されていて、ダックタイピングのような動作は一切しない
241デフォルトの名無しさん:2013/07/23(火) 22:03:08.25
>>239
残念ながらこれはセンスの問題で初心者かどうかはあまり関係がない。

っていうか、こういうのに限っていつもは誰かを罵倒してるご都合主義野郎なんじゃないの。
言っとくけど俺は初心者に上から目線で物を言ったことも罵倒したこともないんで。
242デフォルトの名無しさん:2013/07/23(火) 22:08:12.18
勉強はできるが頭は悪いアスペの典型だな
243デフォルトの名無しさん:2013/07/23(火) 22:09:10.43
>>240
なるほど。

C# でインターフェースのメソッドを呼ぶ時は、
型キャストを行って呼ぶようなコードしか見たことがなかったので、
こういう動作があることを知りませんでした。

ありがとうございます。
244デフォルトの名無しさん:2013/07/23(火) 22:13:17.00
どうでもいいけど値型をasでキャストするのキモい
nullになることはないんだからCスタイルのキャストで書けよ
245デフォルトの名無しさん:2013/07/23(火) 22:17:01.09
デザインとロジックの分離がされていると、とても見やすいコードになります。
マインスイーパーを例に取れば、フィールドを表す変数や、フィールド上のマスを開けるなどの操作 (メソッド) は、ロジック用のクラスで行います。
デザイン、つまり、Form 側ではそのロジック用のクラスをインスタンスとして持ち、その情報通りに表示することを徹底します。ロジック用のクラスでフィールドが更新されたかどうかを得るには、イベントを実装すると良いと思います。

もし、その自作のクラスがデザイン用である場合、>>229 のように関連するオブジェクトがデザイン用であってもインスタンスとして受け取ることは普通です。
ただし、テキストボックスのみを対象にしているならその TextBox のインスタンスのみを渡す方が良いです。これは、その自作クラスからアクセスできるオブジェクトの数が少なくなり、他には変更できない、ということになるのでコードが見やすくなるためです。
また、同様の理由で、TextBox の基底クラス程度で済むものなら、基底クラスのインスタンスを渡す、というようにします。
246デフォルトの名無しさん:2013/07/23(火) 22:24:36.83
>>241
だからさ1読め

>こういうセンスの人はプログラミング向いてない
なんてレスいらねースレなの

>っていうか、こういうのに限っていつもは誰かを罵倒してるご都合主義野郎なんじゃないの
>言っとくけど俺は初心者に上から目線で物を言ったことも罵倒したこともないんで。

妄想癖やばいだろ。
>>239に対してなんで、罵倒やらご都合主義やらが出てくるんだよw
思考が飛躍しすぎて恐いわ
247デフォルトの名無しさん:2013/07/23(火) 22:28:58.08
こっちも精神年齢は大差なさそーだな
248デフォルトの名無しさん:2013/07/23(火) 22:37:22.42
>>244
where で指定されているため、
キャストで例外が飛ぶことがないので、
速い as にしました。

例外を飛ばしたい時は別として、
as の方が括弧の数が少ないので見やすくて好きです。
249デフォルトの名無しさん:2013/07/23(火) 22:39:13.16
>>246
馬鹿だろお前。
250デフォルトの名無しさん:2013/07/23(火) 23:11:04.32
構造体をインターフェイスにキャストしたらボックス化してしまわないか?
251デフォルトの名無しさん:2013/07/23(火) 23:39:19.33
>>248
例外が発生しない限りは速度に差はない
asの方が見やすいのは同意だが、asは失敗する可能性がある場合に使うという住み分けがある以上、
それに従わないのは混乱の元
252デフォルトの名無しさん:2013/07/23(火) 23:43:00.64
普通はForm1にプロバティ作って、間接的にアクセスできる様ににしないか?

public string なんとかText
{
  get{return form1.Text;}
  set{form1.Text = value;}
}
253デフォルトの名無しさん:2013/07/23(火) 23:57:11.11
あ。 form1.Textじゃなくて form1.TextBox.Textだわなw

public string なんとかText
{
  get{return form1.TextBox.Text;}
  set{form1.TextBox.Text= value;}
}
254デフォルトの名無しさん:2013/07/23(火) 23:58:24.03
質問が>>228だから>>229で十分だな
>>235な質問者を置き去りにして、こうした方がいいよ〜ってのがそのほかのレス
誰か>>229の説明してやれよ
255デフォルトの名無しさん:2013/07/23(火) 23:59:59.49
そして誰からもスルーされる>>231
256デフォルトの名無しさん:2013/07/24(水) 00:45:55.49
>>254
つか_form1.text って所がバグっていると思うが
257デフォルトの名無しさん:2013/07/24(水) 00:56:44.38
はじめまして。
floatからintへの変換を行っているのですが、
整数と小数点以下を分けたいと思い以下のコードを書きました。

float version = 1.3f;
float xx = (version * 10.0f);
float xxx = xx % 10f;
int a1 = (int)(xxx);
int a2 = (int)(version / 1f);
Console.WriteLine("{0}.{1}",a2,a1);

しかし、Releaseで実行してみると「1.2」と表示されます。
Debugだと「1.3」と正常に表示されるため、参っています
キャストがおかしいのでしょうか? だとすればどのように記述するべきでしょうか?
258デフォルトの名無しさん:2013/07/24(水) 01:02:28.40
float xxx = ((int)xx) % 10;
259デフォルトの名無しさん:2013/07/24(水) 01:10:25.89
話は少しずれるけど、
version なら float よりも string の方がいいよ。
float だと version 1.1.02 みたいなのに対応できないし。
260デフォルトの名無しさん:2013/07/24(水) 01:31:06.33
>>258
残念ですが変わりませんでした。

>>259
なるほど…文字列での管理も検討してみます
261デフォルトの名無しさん:2013/07/24(水) 01:33:20.95
文字なら
var versions = version.Split('.'); だな
262デフォルトの名無しさん:2013/07/24(水) 02:03:07.12
バージョン表記なら標準でこんなのもある。
msdn.microsoft.com/ja-jp/library/vstudio/system.version.aspx
263デフォルトの名無しさん:2013/07/24(水) 02:25:59.31
結局変えられなかったのでこうなりました。

string moji = version.ToString("F1");
string[] versions = moji.Split('.');
int a1 = int.Parse(versions[1]);
int a2 = int.Parse(versions[0]);
264デフォルトの名無しさん:2013/07/24(水) 02:34:28.30
何のためにバージョンを整数部と小数部で分けてんの?
そのまま使えばいいじゃないのよ
265デフォルトの名無しさん:2013/07/24(水) 03:23:03.88
こういうのはよく見る
int majorVer = 1;
int minorVer = 3;
int version = ((majorVer << 16) & 0xffff0000) | (minor & 0xffff);

// get high-order word.
major = (version >> 16) & 0xffff;
//get low-order word.
minor = version & 0xffff;
266デフォルトの名無しさん:2013/07/24(水) 03:27:28.88
int major = 1;
int minor = 3;
int version = ((major << 16) & 0xffff0000) | (minor & 0xffff);

// get high-order word.
major = (version >> 16) & 0xffff;
//get low-order word.
minor = version & 0xffff;
267デフォルトの名無しさん:2013/07/24(水) 03:29:01.45
int major = 1;
int minor = 3;
int version = ((major << 16) & 0xffff0000) | (minor & 0xffff);

// get high-order word.
major = (version >> 16) & 0xffff;
//get low-order word.
minor = version & 0xffff;



あれ、2chって&書き込めないのか
268デフォルトの名無しさん:2013/07/24(水) 06:11:04.18
バージョン65536以上はどうすんだよ

冗談は置いといてもふつうにVersionクラスでいいだろ
等値演算子もオーバーロードされてるし
なにより分かりやすい
269デフォルトの名無しさん:2013/07/24(水) 06:34:48.31
浮動小数点数の演算誤差だろ。
Debug/Releaseでビルドオプションに差違があるからだろうけど、素直にVersionクラスを使うか、個々の要素をintで持ってUIに見せるときだけ文字列連結するべき。
270デフォルトの名無しさん:2013/07/24(水) 10:06:42.98
俺だったら小数点じゃなくて、整数で管理するな。っていうかしてた
Ver1.05だったら105
数値の大小で新しいバージョンの判別できるし、文字列にも変換しやすい
271 忍法帖【Lv=2,xxxP】(1+0:5) :2013/07/24(水) 12:04:53.16
>>270
俺も最初そうしてた。
そして、バージョンが5.10.0とかになってくると
6.0.0(600)<5.10.0(5100)となって破綻した。
272デフォルトの名無しさん:2013/07/24(水) 12:20:02.16
>>271
6.00.00=60000、5.10.00=51000
お馬鹿な管理方法使うときは仕様限界を考えておかないとw
273デフォルトの名無しさん:2013/07/24(水) 12:24:48.49
誤差がいやなら弟子丸でいいじゃない
274デフォルトの名無しさん:2013/07/24(水) 21:47:51.33
linqをsql serverストアドでも使いたいよ
なんで同じメーカーなのにあんなに使い勝手悪いんだろう
275デフォルトの名無しさん:2013/07/24(水) 21:51:40.34
今時ストアドは無いわ
276デフォルトの名無しさん:2013/07/25(木) 00:51:09.37
CLR統合でストアド書けばLINQつかえるんじゃまいか
277デフォルトの名無しさん:2013/07/25(木) 06:45:31.56
テーブルまるごと持って来てLINQが基本だろ
278デフォルトの名無しさん:2013/07/25(木) 08:58:18.47
1000万行のテーブルから1行だけ読み込みたいのに、1000万行全部取得するの?
テーブルまるごと持ってくるとか、それで出来るならDB使う必要ないじゃん
素直にクライアントサイドでLINQ to SQLが正解なんじゃね
279デフォルトの名無しさん:2013/07/25(木) 09:28:38.02
ストアドとか旧世代の遺物
280デフォルトの名無しさん:2013/07/25(木) 09:34:56.39
旧世代には違いないがDBとのIOが多い処理では今でも選択肢に入るだろう
281デフォルトの名無しさん:2013/07/28(日) 01:20:59.54
C#2010でプログラムして保存する前に電源が落ちたのですが、
どこかに跡形は残っていないでしょうか?
282デフォルトの名無しさん:2013/07/28(日) 02:52:13.86
C:\Users\ユーザー名\AppData\Local\Temporary Projects\ にあるかもね
ないかもね
283デフォルトの名無しさん:2013/07/28(日) 05:04:35.81
もう一回VS立ち上げると「正常に終了しませんでしたテヘ復活させますか?」って言ってくれるかもね
ないかもね
284デフォルトの名無しさん:2013/07/28(日) 12:00:48.26
プロは一分に一回差分バックアップをとる
データ喪失は事故責任だよ
285デフォルトの名無しさん:2013/07/28(日) 12:18:58.04
>>282
にゃい!orz
286デフォルトの名無しさん:2013/07/28(日) 12:37:11.78
まあそういう経験は誰しもあるってことで
287デフォルトの名無しさん:2013/07/28(日) 13:13:45.02
Ctrl+Sを頻繁に実行するのは常識だと思っていたんだが
288デフォルトの名無しさん:2013/07/28(日) 13:40:38.04
VisualStudio2012Expressを使ってますが、
コード画面の横(ツールボックス欄やソリューションエクスプローラー欄など)
に、現在開いているコードのメソッド一覧を表示できないでしょうか?

ソリューションエクスプローラに似たような表示はできますが、
プロパティなども表示され情報が多い、現在開いているコード画面に追随していない、
といった理由で使い勝手はイマイチです。

コード内をアウトラインで折りたたんだ場合は、
コード確認に一手間かかるのでこれもまた使い勝手がイマイチです。
289デフォルトの名無しさん:2013/07/28(日) 13:51:11.12
>>288
エディタの上部の右側のドロップダウンがそう。

本当はオブジェクトブラウザかクラスビューにエディタと同期して表示する機能が
あるといいと思うんだが、おそらくそういう機能は実装されてない
290デフォルトの名無しさん:2013/07/28(日) 13:58:03.82
>>288
Expressだから多分自分で作っているソフトだと思うが
一つのクラスにメソッドやプロバティーを詰め込み過ぎじゃないかな?
今作っているものをやり直せとは言わないけど、次に作るときはクラスの肥大化を意識した方がいいよ
291デフォルトの名無しさん:2013/07/28(日) 14:22:40.87
>>289
ありがとうございます。
こいつもメソッドとプロパティ変数が混在して表示されてるんですね・・・

情報後出しになりますが、元々の目的は、GUIアプリの作成でソリューションエクスプローラだと
Formファイルの情報とデザイナーファイルの情報がまとめて表示されて邪魔だったのでなんとかしたいってのがありまいた。

教えてもらった方法だと、開いているコード以外の情報は灰色で表示されるので若干マシになったという感じです。
自作クラスの情報はそれだけがまとまって表示されるので、ソリューションエクスプローラよりはだいぶマシになりまいた。


>>290
GUI機能と、その他の機能は別クラスに分けて開発しています。
ただ、GUIだけでもかなり入り組んでるので辟易している次第です

開発途中ですが、現在はForm1.Designer.csにプロパティが30個くらいあり、
最終的には倍以上に増える予定です。
その情報と、Form1.csにあるプロパティ、メソッドの情報が混在してしまい、非常に煩雑です。
(Form1.csは現状たかだか300line,メソッドは10個程度ですが、それでも既に('A`)ウヘァです)

GUI機能もさらに複数クラスに細分化すれば解決しそうですが、エディタ側でももうちょっとなんとかしてほしいですね
(メソッド一覧のアウトライン表示は、秀丸とかのエディタには普通についてる機能なのに・・・)
292デフォルトの名無しさん:2013/07/28(日) 14:30:29.46
wpfでGUI編集を使って、トグルボタンのチェックで他のコントロールの表示を制御しようとしたら
「BoolVisibiltyConverer」と言う謎クラスを持ってきやがってXamlのエラーとなるんだが、コンパイルできてしかもちゃんと動いた
ちゃんとしたクラス名の「BooleanToVisibilityConverter」に直すとXamlのエラーもなくなるし動作も問題ない
コレってなんだろうね?

「BoolVisibiltyConverer」は、謎のネームスペース xmlns:Default="clr-namespace:" に存在するらしいが、コレもエラー表示が出るんだわ
293デフォルトの名無しさん:2013/07/28(日) 14:54:05.97
>>281
2012には自動バックアップってオプションがあるな
2010にはない?
294デフォルトの名無しさん:2013/07/28(日) 15:05:29.53
コンパイル通らない状態で勝手に保存されても邪魔
295デフォルトの名無しさん:2013/07/28(日) 16:49:39.77
Express だけど 2010 にもあるね。
変更した覚えないからデフォルトで 5 分間隔でやってくれるっぽい。
その結果が >>283 になるんだと思うけど。
296デフォルトの名無しさん:2013/07/28(日) 17:38:53.28
>>295
最初のWindowsApplication1とかのまま一度も保存していない場合はバックアップはしないみたい
コンパイルするごとにそこまでは残るはずだけどプロジェクトのフォルダごと見当たらないというか
命名していないから探しようがなかったです
297デフォルトの名無しさん:2013/07/28(日) 18:38:51.53
>>296
ヘルプには
>ファイルが新規であり、今まで一度も手動で保存されていない場合は、ランダムに生成されたファイル名で自動的に保存されます
って書いてあるけど
298デフォルトの名無しさん:2013/07/28(日) 18:54:10.41
Vista以降のOSの検索機能はファイルの中身をテキストとして読んで検索する機能がないから
こういう時イラっとくるんだよね
299デフォルトの名無しさん:2013/07/28(日) 19:47:50.93
OSの検索機能は遅いし俺はこれ使ってる

JGREP

http://www.hi-ho.ne.jp/jun_miura/jgrep.htm

さすがに書庫の中までは検索出来ないけど速い
300 忍法帖【Lv=7,xxxP】(1+0:5) :2013/07/29(月) 09:27:12.07
インターフェースについて勉強してるんだけど、IEnumratorインターフェースの使い道がよくわからないです
コレクションを列挙するというのはわかりますけど、どういう場面に使えばいいのでしょうか?
301デフォルトの名無しさん:2013/07/29(月) 09:33:47.71
IEnumeratorはforeachを使うときに知らないうちに使ってる
自分で意識して使うことはまずない
yieldがあるのでIEnumeratorを自分で実装することもない
302デフォルトの名無しさん:2013/07/29(月) 09:35:18.52
自作コレクション(IEnumerable)を作りたいときに使う

IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerable
どういう順番で何を列挙するかとかを細かく自分で決めたいときに使う

逆に言えばあまり自分で実装することは今の時代はあまりないよね
303デフォルトの名無しさん:2013/07/29(月) 09:35:49.03
×IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerable
○IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerator
304デフォルトの名無しさん:2013/07/29(月) 09:39:29.03
細かく自分で制御したいときにyield使わずにIEnumerableをて実装するのはきついぞ
クソ複雑なステートマシンになる
MSですらLINQの実装では低レベルな制御を放棄してyield使いまくってるのに
305デフォルトの名無しさん:2013/07/29(月) 20:24:01.93
そこまで複雑じゃないってw
逆に単純だけど面倒なだけ
306デフォルトの名無しさん:2013/07/29(月) 21:20:57.68
コマンドラインでTYPE A.TXT >PRN(エンター)を打った時と同じことをフォームアプリで実行する方法を教えてください。
307デフォルトの名無しさん:2013/07/29(月) 21:32:03.61
Process.Start( "cmd", "/k type a.txt > pnt" );
308デフォルトの名無しさん:2013/07/29(月) 21:32:43.64
Process.Startでコマンド実行しろ
フォーム関係ない
309デフォルトの名無しさん:2013/07/29(月) 21:34:07.42
/kオプションじゃなくて/cでも

詳細はコマンドプロンプトでcmd /?
310デフォルトの名無しさん:2013/07/30(火) 11:16:06.45
ボタンが右クリックされたときにイベント発生させるのってどうやるんだ
311デフォルトの名無しさん:2013/07/30(火) 11:18:42.72
わざわざ自分で発生させなくてもMouseDown/Upが発生するだろ?
312nanasi:2013/07/30(火) 15:54:28.77 ID:FIRUYqVd!
さくらインターネット上のWEBサーバ上にC#より
ディレクトリを作成しようとしていますが次のエラーが出てしまいます。

レンタル中のスタンダードプラン上の
サーバだと正常に動作していたのですが、プレミアムサーバに対して下記コードを
実行するとなぜかエラーが出てしまいます。

IDやパスはあっているのですが何が問題なのでしょうか?



≪ 実行コード ≫
string id = "id123";
string pass = "pass123";
string createDirectory = "ftp://hoge_user.sakura.ne.jp/www/hoge_data/20130730";

WebRequest req = WebRequest.Create(createDirectory);
req.Credentials = new NetworkCredential(id, pass);
req.Method = WebRequestMethods.Ftp.MakeDirectory;
WebResponse res = req.GetResponse();  ← ここでエラー発生


≪ エラー内容 ≫
The remote server returned an error: (530) Not logged in.
313デフォルトの名無しさん:2013/07/30(火) 17:27:40.15
>>312
エラー内容に書いてあるじゃん。
ログイン失敗でしょ。
サーバーからのレスポンスを見ないと原因は分からないけど、実はFTPSとか?
314312:2013/07/30(火) 18:19:15.54
>>313
そうなんです。ID・PASSがあっているのに
なぜかダメなんですよ。

しかも、さくらのスタンダードプランでは普通に動いていた
プランにも関わらず、プレミアムプランのサーバに向けて
実行すると動かないのでまったく意味不明です。
315デフォルトの名無しさん:2013/07/30(火) 18:22:03.47
ネットワーク関連はまずパケットキャプチャ
普通のFTPクライアントでアクセスした場合との差異を比較
316デフォルトの名無しさん:2013/07/30(火) 18:23:46.47
MSDNみると
WebRequest.CreateでFTPだと、FileWebRequestを返すとなってるぞ
FtpWebRequestの例だとそれをFtpWebRequestにキャストしてる
FileWebRequestはCredentialsもMethodも実装されてないことになってる
317デフォルトの名無しさん:2013/07/30(火) 18:29:23.65
>>316
それはただのドキュメントバグだ
318313:2013/07/30(火) 18:30:45.40
>>314
WebRequestクラスは頭悪いから業務で使うのはおすすめしない。
とりあえず、コマンドプロンプトから「ftp /d」でログインできるか試してみて。
レスポンスが確認できるから。
319デフォルトの名無しさん:2013/07/30(火) 20:34:24.38
どちらかというと問題あるのはさくら側かユーザ側かだろ
320デフォルトの名無しさん:2013/07/30(火) 20:40:43.62
>>319
捜査のプロですか?
321デフォルトの名無しさん:2013/07/30(火) 21:56:48.94
>>318
業務で使うのはおすすめしない?
本当か?
322313:2013/07/30(火) 22:51:18.69
>>321
エラーメッセージからの推測なんだけど、今回のケースだと、USERかPASSのどっちかを投げた段階でエラーが出てるはずなんだ。
でもWebRequestがレスポンスを解釈しないで次のコマンドを投げてるように見える。
そうすると本当の原因が分からなくなるから>>315が言うようにパケット取りながら再現実験するハメになる。

うまく動いてるときはいいんだけど、トラブったときが大変なんだよ。
その辺のバランスを考えて、WebRequestを使うかSocketで自作するか決めればいいんじゃないかな
323313:2013/07/30(火) 23:06:33.83
>>321
あ、FTPの話ね。
HTTPでは使ったことないから知らないよ。
324デフォルトの名無しさん:2013/07/30(火) 23:21:01.63
>>323
FTPの話か
なるほど
325312:2013/07/30(火) 23:27:33.76
>>315
うーんパケキャプしないとダメですか。。。
ちょっと敷居が高いけど頑張ります。

>>319
サクラですね。
サーバ容量増やしても転送量制限は変わらないとか詐欺的な事ばっかりやってるし

>>322
Socket 作ってみます。
326デフォルトの名無しさん:2013/07/30(火) 23:34:01.16
パケキャプの良いソフト教えれ
327デフォルトの名無しさん:2013/07/30(火) 23:36:07.98
>>317
VS2012ではたしかにFtpWebRequest帰ってきてるな
>>322
わざわざキャプチャせんでもトレースログで十分だろ
>WebRequestがレスポンスを解釈しないで次のコマンドを投げてるように見える
WebRequestがって言うか、正確にはFtpWebRequestが、だな
それがほんとなら、もともとステートフルな通信向けじゃないのかもしれん
なんといっても「WEB」リクエストだしな
328312:2013/07/30(火) 23:42:17.92
パスワードの設定が間違えてました><。。。。。。。。。。

無事解決です。
皆さんありがとう。
329デフォルトの名無しさん:2013/07/30(火) 23:44:18.08
>>328
・・・・・・・・・・・・・・・・・・・
330デフォルトの名無しさん:2013/07/31(水) 00:00:34.14
はい、解散〜
331デフォルトの名無しさん:2013/07/31(水) 00:12:29.11
今月のNo1ズコー
332デフォルトの名無しさん:2013/07/31(水) 00:13:56.34
いや、死ぬべきでしょ
遠慮なく死ね
333デフォルトの名無しさん:2013/07/31(水) 00:26:10.93
まあとりあえず >>312 がパケキャプやらおぼえて
一回り成長したことでよしとしよう




成長してなかったら死ぬべき
334デフォルトの名無しさん:2013/07/31(水) 00:35:35.32
パスの設定をまず見直せと
指示できなかった俺らにも落ち度はある
335デフォルトの名無しさん:2013/07/31(水) 06:43:22.07
業務なら解雇だよ
336デフォルトの名無しさん:2013/07/31(水) 06:48:25.94
まことに申し訳ないことと反省しております。
ご容赦の程、深くお願い申し上げます。
337デフォルトの名無しさん:2013/07/31(水) 07:11:37.40
ふらっとスレだから命拾いしたな
338デフォルトの名無しさん:2013/07/31(水) 09:19:42.99
命ってのは落ちてるものなの
339デフォルトの名無しさん:2013/07/31(水) 10:22:29.28
落としかけて拾ったんだろう
340デフォルトの名無しさん:2013/08/02(金) 22:54:09.36
質問です。通常App.configに追加する<DbProviderFactories>を、
別の共有設定ファイルを作って、そこへ追い出したいのですが、<AppSettings>の様に
file属性で読み取ることも出来ないので、どうすれば複数の実行ファイルから、共通設定として
読み取ればいいのかわからない状況です。

やりたいのは、複数の実行ファイルで、同じデータベース設定を利用したい。
実行環境により利用するデータベースを切り替えたい。(DbProviderFactories.GetFactoryでプロバイダに依存しないようにしておきたい)

ADO.NETのスレが見当たらなかったので、こちらに質問してみました。
よろしくお願いします。
341デフォルトの名無しさん:2013/08/04(日) 10:42:54.96
ADO.NETの質問・雑談スレ2
http://toro.2ch.net/test/read.cgi/db/1234077152/

あるけど、もう1年半放置かw
342デフォルトの名無しさん:2013/08/04(日) 11:41:54.05
エクスプローラー上でファイルがダブルクリックされたかどうか、
監視することはできますか?
343デフォルトの名無しさん:2013/08/04(日) 12:43:14.99
外部からやるならShellExecuteHooksかなぁ
Vista以降はデフォではオフだけど
http://eternalwindows.jp/shell/shellex/shellex12.html

内部でやるならシェル拡張としてプロセスに潜り込めばなんとでも
例:QTTabBar
344デフォルトの名無しさん:2013/08/04(日) 12:46:46.16
VS2012でインデントのところに"-"が表示されるようになったんだがどうすれば消せるんだ
345344:2013/08/04(日) 12:48:28.36
解決した
346デフォルトの名無しさん:2013/08/04(日) 16:33:05.01
win7 に Visual C++ インストール出来なかった DVD 目当てに本も買ったがダメ!
xp にはインスト出来た、まぁ仕方ないのでこれで行く!
347デフォルトの名無しさん:2013/08/04(日) 16:45:22.78
おめめがびょうきなの?
348デフォルトの名無しさん:2013/08/04(日) 20:20:56.48
いいえ、おつむがびょうきなの。
349デフォルトの名無しさん:2013/08/05(月) 00:40:35.87
デリゲートわからん
350デフォルトの名無しさん:2013/08/05(月) 00:45:35.70
オブザーバーパターンを勉強しろ
351デフォルトの名無しさん:2013/08/05(月) 01:57:40.62
RaiseEvent PropertyChangedでええやん。むりしてDelegate使わんでもええやん
352デフォルトの名無しさん:2013/08/05(月) 04:12:51.88
デリゲート→ラムダ式→マルチスレッド
で学ぼうと思ったがデリゲートでつまづいてるっていう
353デフォルトの名無しさん:2013/08/05(月) 06:10:55.17
デリケートな問題だからじっくり勉強しなされ
354デフォルトの名無しさん:2013/08/05(月) 06:50:01.22
なにも難しいことあらへん

メソッドをオブジェクトとして認識すればええねん
そのオブジェクトの型は戻り値と引数で決まるねん
戻り値と引数が同じメソッドはおんなし仲間やねんで。

オブジェクトやから同じ型の変数に入れたりできまんねん
();つければ実行されるんでおまんがなー
355デフォルトの名無しさん:2013/08/05(月) 06:51:51.21
普通の変数とちゃうのは
ひとつの変数に+=/-=で複数のデリケートインスタンスを入れたり出したりできるっちゅうことだけや

マルチキャストゆうてな、();で入れた順番に全部実行されるんでおまんがなまんねん
356デフォルトの名無しさん:2013/08/05(月) 11:50:27.74
すっごくわかりやすいかも。
357デフォルトの名無しさん:2013/08/05(月) 12:28:02.46
口調がムカツクのに分かりやすいのがクヤシイ
358デフォルトの名無しさん:2013/08/05(月) 12:40:46.62
関西弁きらいか?まあ慣れたらどうちゅうことあらへん、まあこっちでも京都のはきらいとか姫路のはグロイとかいろいろとありまんねんけど
359デフォルトの名無しさん:2013/08/05(月) 12:43:10.53
invokeがdelegateじゃないとできない意味がわかりません。
360デフォルトの名無しさん:2013/08/05(月) 14:31:28.84
>>358
俺がわからないのは
タイピングにまで関西弁を持ち込んでくることだ
標準語を使った方が打つ文字数も少ないし相手にも伝わりやすい

例)
ええねん→いい
決まるねん→決まる

上記の理由で2chに関西弁を持ち込んでくる奴は嫌いだ
361デフォルトの名無しさん:2013/08/05(月) 14:32:17.12
読んだときの印象が変わる
362デフォルトの名無しさん:2013/08/05(月) 14:34:03.67
ID出るスレなら問答無用でNGだな。死ね
363デフォルトの名無しさん:2013/08/05(月) 14:53:34.24
>>360
せやな→そうですね

文字数増えとるやないか。はい論破してもうたでんがなー
364デフォルトの名無しさん:2013/08/05(月) 15:09:27.11
>>363
関西人はこうやって揚げ足取りばっかするから
ガキ扱いされるんだな
365デフォルトの名無しさん:2013/08/05(月) 15:17:45.20
自覚症状のない基地外ほどタチが悪いものはないからな
相手せずにスルーしろ
366デフォルトの名無しさん:2013/08/05(月) 15:37:52.55
>>364
こんな似非関西弁の人使ってそんな非難されても困る
367デフォルトの名無しさん:2013/08/05(月) 15:53:28.37
>>364
自分も自分の好みでアヤ付けてるだけだってのに気付けよ。
意味がわかる文章なら、ちゃんと答えてるヤツが神で、それ以外はクズだ。
368デフォルトの名無しさん:2013/08/05(月) 16:15:52.01
>>367
好みじゃなくて一般常識だってことに気づけよ。
369デフォルトの名無しさん:2013/08/05(月) 16:43:03.70
それってどこの?
370デフォルトの名無しさん:2013/08/05(月) 17:05:06.12
俺はインターフェースとデリゲートの違いがわからなかったな

でもよく考えると、デリゲートもクラスなんだから、継承の点では
インターフェースもデリゲートもクラスも全部一緒と考えればいい
371デフォルトの名無しさん:2013/08/05(月) 20:29:09.00
ややこしいから、それら全部クラスと表現しませんか?
372デフォルトの名無しさん:2013/08/05(月) 20:34:47.72
デリゲートは継承できません
373デフォルトの名無しさん:2013/08/05(月) 20:38:13.11
クリックイベントはイベントなのかデリゲートなのか
374デフォルトの名無しさん:2013/08/05(月) 20:48:53.62
イベントはデリゲートを使って実装されているというニュアンス
375デフォルトの名無しさん:2013/08/05(月) 20:49:25.68
名前を見ろ
376デフォルトの名無しさん:2013/08/05(月) 22:10:58.09
イベントってデリゲートを使って実装されてるの?
377デフォルトの名無しさん:2013/08/05(月) 22:16:10.27
うん
クラス>デリゲート>イベント

つまり、デリゲートもイベントも不必要ってこと
378デフォルトの名無しさん:2013/08/05(月) 22:20:45.40
イベントとデリゲートは別物だ
イベントはデリゲート専用の特殊なプロパティ
メンバとその値な
379デフォルトの名無しさん:2013/08/05(月) 23:15:51.22
もう!誰が正しいのっ!
380デフォルトの名無しさん:2013/08/05(月) 23:16:48.35
そら、名前が違うんだから全く同じ場合は少ない
381デフォルトの名無しさん:2013/08/06(火) 00:05:23.78
>>379
デリゲート≒イベント

デリゲートとイベントは両者とも糖衣構文
使い方の違いがある。
イベントはイベントを定義したクラスからしか呼び出せないが、デリゲートにその制限はない
要するに、イベントもデリゲートもクラスを基本にした、それ専用に使いやすくしたもの

コールバック自体イベントと言えなくもないから、デリゲートを用いてイベントは実装できる

377はその意味。で、デリゲートの場合、デリゲート>匿名メソッド>ラムダ式というさらに
使いやすくした糖衣構文がある。
デリゲートの特徴はデリゲートはメソッドみたいなものだけど、メソッドと違って変数に代入出来ること。
これは、デリゲートの実態がクラスで出来ているからで、この代入出来ることを利用した
プログラミングが出来ることがデリゲートの特徴となる。

代入出来るということは、色々なデリゲート(メソッド)を置き換えることが出来るわけで、
デリゲートで呼び出されるメソッドの動作を変えられることが特徴

void Method_A(delegate B)
{
 処理1
 B()
 処理3
}
の要に処理1処理2は共通でB()の部分のみ異なる処理の場合に
Method_Aの引数に渡すデリゲート変更すればソースとしての共通化が図れる
382デフォルトの名無しさん:2013/08/06(火) 00:09:35.32
>>381
イベントとデリゲートの違いが理解できてないならこの辺読んでみ
http://msdn.microsoft.com/ja-jp/magazine/cc163533.aspx
383デフォルトの名無しさん:2013/08/06(火) 00:13:42.19
ひょっとして C# には「イベント」に、「 PC 上で発生したなんらかの事象」って以外の意味がある?

イベントは、PC 上で発生したなんらかの事象
デリゲートは、C で言うところの関数ポインタ(違うけど)で、イベントハンドラの管理に使われてる

って認識だった。
「イベントハンドラ」は「イベントが発生した時に呼び出される関数」(ちょっと違うけど)って意味で。
384デフォルトの名無しさん:2013/08/06(火) 00:18:21.48
>>383
何らかの事象を意味するのはもちろんそうだけど、身も蓋もない言い方をすれば
ObserverパターンにおけるaddLister/removeListerのメソッドの組をまとめたのがイベントで
そのメソッドの引数に渡すリスナがデリゲート
プロパティがgetValue/setValueの組なのと同じ
385デフォルトの名無しさん:2013/08/06(火) 00:24:11.78
あと、デリゲートもイベントも同じっちゃ同じだけど

通常のクラスの場合、インスタンス化するには、メソッドの実態(ソース)が
必要なんだけど、イベント(デリゲート)もそのような制限はない。
例えば、>>381でMethod_A内の処理においてB()が呼び出されているけど
これの実態はこのソース中にはないのだけど、コンパイル時にはエラーが出ない。
ただし、Method_Aの呼び出し時にはイベントで実行されるメソッドの実態は必要。
イベントの場合、MSがOnClick等たくさんのイベントが定義しているけど、
ユーザが後付で、その実行内容を変えることができる仕掛けが必要。
それを実現するための仕掛けがイベント(デリゲート)。
386デフォルトの名無しさん:2013/08/06(火) 00:28:33.01
public int Hoge { get; set; }
public int Hoge;
この2つを同じと言うならイベントとデリゲートは同じだ
public event EventHandler Hoge;
このフィールド風のイベント宣言は上の自動プロパティに相当するもので
デリゲートを保持するフィールドとaddアクセサとremoveアクセサが自動生成される
387デフォルトの名無しさん:2013/08/06(火) 00:32:12.85
>>383
>ひょっとして C# には「イベント」に、「 PC 上で発生したなんらかの事象」って以外の意味がある?
通常の意味としては”PC上で発生した”ではなく”アプリ上で発生した”だろうね

その他は意味不明
てか、イベントハンドラはイベントに使用するもの
デリゲートは関数ポインター(コールバック)のような使い方もできるけど、それ以外もある。
388デフォルトの名無しさん:2013/08/06(火) 00:38:39.43
イベントハンドラはイベントに使うデリゲートであってイベントではないだろ
イベントやデリゲートについてはうだうだ言う前に
Observerパターンを学んだ上で>>382を読めば完全に理解できるよ
C#の構文はデリゲートとイベントの扱いを似せてあるのですごくわかりにくい
389デフォルトの名無しさん:2013/08/06(火) 00:44:59.77
ようするに、それぞれがそれぞれの解釈でデリゲートなりの説明をしてるから収拾が付かない、と。
390デフォルトの名無しさん:2013/08/06(火) 00:46:26.65
マルチキャストもデリゲートやイベントを分かりにくくしてる一因だなあ。
イベントハンドラはデリゲートを複数保持するためのコレクションってことにすれば
役割がわかり易かったのに、なんでデリゲート自体をコレクションにしちゃったんだろう。
その上、デリゲートの合体とイベントアクセサの呼び出しに同じ演算子を使っているのが
さらに混乱に拍車をかけてる。
391デフォルトの名無しさん:2013/08/06(火) 00:54:41.03
よし、わかった
392デフォルトの名無しさん:2013/08/06(火) 00:59:53.48
概念的な理解は後回しでいいと思うよw
それはコードを書いてるうちに後から付いてくる。

とりあえずイベントを発生させるクラスと、そのイベントを購読するコードを
自分で書いてみる。

そうすればイベントがどんなものか理解できる。
イベントが理解できれば自然とデリゲートも理解できる(たぶん)。
393デフォルトの名無しさん:2013/08/06(火) 01:05:29.68
delegateを直接publicなフィールドにしてみるといいよ
eventと同じことが出来るが、
困ったことに出来ることが多すぎることに気が付く。
たとえば、イベントハンドラを+=でなく=で代入できたり、
Invokeメソッドが外部から呼び出せたり。
こういうのを制限するための機能がevent
394デフォルトの名無しさん:2013/08/06(火) 01:14:12.20
デリゲートもまともに説明できないくせに初心者スレとな
395デフォルトの名無しさん:2013/08/06(火) 06:13:09.95
デリケートゾーンの有効範囲を教えて
396デフォルトの名無しさん:2013/08/06(火) 11:41:35.97
デリゲートに好きして、デリゲートに
好きして 好きして 好きして


こう言うところに書く前に、自分の用語の認識が一般的なモノであるかの確認はした方がいいと思われ。
それぞれが違う認識だってのがわかった今になってもオレ定義で話すのは混乱の元になるだけだよ。
397デフォルトの名無しさん:2013/08/06(火) 11:50:12.08
そう言えば最近アグリゲートって聞かないね
398デフォルトの名無しさん:2013/08/06(火) 12:33:52.35
Class Sample
{
//メソッド
}

↑最近、上記のように波括弧を新しい行に書く書き方に変えたのですが
どのように打つのが一番効率がいいですか?(IDEはVisualStudio)

今ところ案としては以下の案があります。
@
クラス名 { } を書く→方向キーで { まで戻る → 改行 → 方向キーで } まで移動
→ 改行、改行 → 方向キーで上に戻る → Tab → メソッドを書く
A
クラス名、改行 → { 、改行 → 改行 → } → 方向キーで上に戻ってメソッドを書く

お教え願います。
399デフォルトの名無しさん:2013/08/06(火) 12:37:04.26
書くときにはぐだぐだ気にしない
VSのオートフォーマットに任せる
400デフォルトの名無しさん:2013/08/06(火) 12:44:10.62
>>398
ここまでどうでもいい質問ってなかなかない
401デフォルトの名無しさん:2013/08/06(火) 12:45:15.72
>>400
まじで悩んでるんだよ・・
402デフォルトの名無しさん:2013/08/06(火) 12:54:34.96
ファイル追加するときに名前決めたらそれがクラス名になるから入力する必要ないだろ
403デフォルトの名無しさん:2013/08/06(火) 13:03:47.31
>>401
ツール→オプション→テキストエディター→C#→書式設定

ここにオートフォーマットする場合の設定があるだろ
(上のはExpressだけど)

閉じる}で自動で改行してくれるだろ
404デフォルトの名無しさん:2013/08/06(火) 13:25:47.43
クラスの作成ってウィザードになかったっけ?
405デフォルトの名無しさん:2013/08/06(火) 14:00:16.18
>>398 スニペット
406デフォルトの名無しさん:2013/08/06(火) 14:20:32.57
チュッチュチュ チュッチュッ スニペット〜
407デフォルトの名無しさん:2013/08/06(火) 18:58:20.43
>>398
気持ちはよく分かる。
そもそも{をタイプした時点でカーソルの後ろに}を自動で挿入してくれても良さそうな物だが、
C#のIDEはそういうところ気が利かないよね。
408デフォルトの名無しさん:2013/08/06(火) 22:58:15.67
拡張メソッドって、VS2005でC#2.0だと使えないの?
VS2008でC#3.0だと逝けるみたいだけど。
409デフォルトの名無しさん:2013/08/06(火) 23:12:05.73
拡張メソッドはC#3.0から
仕事ならどのみち拡張メソッドなんて好き勝手に使えるもんじゃないだろうし
趣味ならあえて古いバージョンのVSを使う理由は無いはずだし
一体どういう状況でそんな悩みが出てくるのか理解に苦しむ
410デフォルトの名無しさん:2013/08/07(水) 00:00:42.85
>>409
やっぱり、C#2.0はダメなのね…orz
今まで「VS2010のC#4.0」で作ってたんだけど
「VS2005のC#2.0」に変更して欲しいと、客から通達があったらしい。
客がVS2010のライセンスが用意できなかったみたい、詳しい話は知らん。
上が決定しちゃってるから、開発環境のダウングレードしなきゃならんのよ。
だから、C#2.0で拡張メソッドが使えれば、LINQとかラムダの部分を直すだけでよかったんだけど
拡張メソッドが結構あって面倒なんだYO!
個人的には、Expressエディションでいいじゃんって思うんだけど
インストーラー作れないみたいだし、ダメなんだとさ。
411デフォルトの名無しさん:2013/08/07(水) 00:06:24.75
ライブラリの場合.NETのバージョンの混在って出来ないの?
ずいぶん昔、アセンブリを勉強していた時なんかそんなのを読んだ気がする
412デフォルトの名無しさん:2013/08/07(水) 00:06:53.37
そんなけったいな形態のお仕事があるんだw
世の中いろいろだね
413デフォルトの名無しさん:2013/08/07(水) 00:50:24.36
インプロセス サイドバイサイド
http://msdn.microsoft.com/ja-jp/magazine/ee819091.aspx

の真ん中あたり(動作の概要)見ると、C#2.0と3.0の混在は出来そうだけど
もっと、詳しい人に確認した方がいいだろうね
414デフォルトの名無しさん:2013/08/07(水) 01:11:14.62
.NET2.0と3.5ならサイドバイサイドは必要ないぞ
つか2つの開発環境を混在させることによる作業性低下のコストを容認できるんだったら
そんなことするより全部Express2010で作ってインストーラの作り方を工夫したほうがマシじゃね
まあそういう問題じゃないと思うけど
415デフォルトの名無しさん:2013/08/07(水) 01:26:37.83
1.1, 2.0〜3.5, 4.0〜 の3種類は混在無理だったはず
もちろん、それぞれ独立したアプリとして作って
プロセス間通信で連携して動く分には問題ない
416デフォルトの名無しさん:2013/08/07(水) 07:38:58.44
つか、そのやり直しの経費でVS余裕で買えるよな
客先は何百人でメンテするつもりなんだ
417デフォルトの名無しさん:2013/08/07(水) 08:11:34.04
>>416
大きな組織は稟議書とか大変なのよ

極端な例だけど、5000円の出費のために、時給 2000円クラスの奴等が 4〜5 人半日がかりで資料作成とか、あったりする。
418デフォルトの名無しさん:2013/08/07(水) 10:44:04.76
私は.net compact frameworkという産廃を主に使うのでVSは2008なのであります
419デフォルトの名無しさん:2013/08/07(水) 12:53:55.84
Aという処理を
与えるパラメータだけを変えて
並行に処理したい場合何を使えば実現できますでしょうか?
420デフォルトの名無しさん:2013/08/07(水) 13:02:12.95
すいません。並列でした。
421デフォルトの名無しさん:2013/08/07(水) 13:08:10.74
Parallel.ForEachでもTaskを必要な数だけ作っても
422デフォルトの名無しさん:2013/08/07(水) 13:10:32.40
>>421
ありがとうございます。やってみます。
423デフォルトの名無しさん:2013/08/07(水) 14:37:18.51
こんなとこで質問している人が
並列処理なんて出来るの?

俺にはそっちの方が疑問
424デフォルトの名無しさん:2013/08/07(水) 14:38:20.27
出来ちゃうんだよ
見た目はね
425デフォルトの名無しさん:2013/08/07(水) 19:37:09.87
並列処理ごときで疑問に思うほうがおかしい。
426デフォルトの名無しさん:2013/08/07(水) 21:27:36.35
並列処理はできるでしょ

ちゃんと動かせるかどうかはわからんけど
427デフォルトの名無しさん:2013/08/08(木) 09:17:30.24
&でつなげればいいだけの事に何難しい事を言っているんだよ。
428デフォルトの名無しさん:2013/08/08(木) 09:54:14.87
さすがVB戦士
429デフォルトの名無しさん:2013/08/08(木) 11:27:11.22
それ unix shell の & じゃね

cmd.exeだと start の連投
430デフォルトの名無しさん:2013/08/08(木) 12:54:26.49
&だけじゃ駄目だね。上の方が言うようにstartが必要だね。
start xxx & start yyy
431デフォルトの名無しさん:2013/08/08(木) 21:18:19.52
>>423
出来るけど、結果がどうなるかは知らない。
432デフォルトの名無しさん:2013/08/09(金) 13:23:12.81
>>398
Eclipseだと { を入力して改行すると
自動で } が挿入されるんだね
VSもそうしろよ
433デフォルトの名無しさん:2013/08/09(金) 14:37:29.06
>>398
閉じ括弧を別行に書くとクラス名直後に書いた開き括弧も次行へと整形されるから、
クラス名 → { → 改行 → } → CTRL+Enter
ってのが、いつの間にやら染みついてしまった。
434デフォルトの名無しさん:2013/08/09(金) 17:12:08.05
>>433
そんな方法あったんだ・・・
神だな
435デフォルトの名無しさん:2013/08/09(金) 18:11:04.89
>>433
Ctrl+Enterなんてあったのか
436デフォルトの名無しさん:2013/08/09(金) 20:39:55.21
{ 押したあとタブ押せばいいだろ
437デフォルトの名無しさん:2013/08/09(金) 22:15:27.84
メソッドを持つenumやstructはCOMに出来ないのかな?
アセンブリをレジストリに登録して使ってみたのだがメソッドが無くなっていた
まったくCOMは難しいね
438デフォルトの名無しさん:2013/08/09(金) 23:34:06.65
コム長官
439デフォルトの名無しさん:2013/08/11(日) 08:09:43.97
配列を結合する関数(戻り値が配列)を作って呼び出しをを繰り返す場合
while(/////)
{
foo=配列を返す関数;
処理・・・
}
fooの参照が切れたメモリはすぐGCが解放してくれますか?
440デフォルトの名無しさん:2013/08/11(日) 08:35:56.22
いいえ
メモリ不足になる前には必ず解放されるけど、一時的にCLRヒープをかなり圧迫するはず
441デフォルトの名無しさん:2013/08/11(日) 08:42:57.23
配列の長さ次第ではLOH入りして実質的に解放されないことも
442デフォルトの名無しさん:2013/08/11(日) 08:48:25.55
>>441
それは.NET4.5で直った

配列のサイズが大きいならyieldを使って実装すればメモリ食わないよ
443デフォルトの名無しさん:2013/08/11(日) 09:00:51.31
>>440,>>441,>>442
ありがとうございます
汚い(大きい)データファイルを検索しやすくするために、再整理して保存(キー値付加、その他並び替えいろいろ繰り返し処理が必要)
する処理を書いていたのですがこういう場合は明示的に解放処理を書いたほうがいいのでしょうね
444デフォルトの名無しさん:2013/08/11(日) 09:05:05.33
いやそれよりバッファを再利用することを考えるべきだろ
445デフォルトの名無しさん:2013/08/11(日) 09:07:14.73
それより普通にLINQ to Objects使えばいいと思うが
ToLookupとかOrderByとか組み合わせれば超簡単省メモリだろ
446デフォルトの名無しさん:2013/08/11(日) 09:24:31.55
OrderByって全要素の結果をキャッシュするから、最低でもn要素のリストとディクショナリを使ってるんだと思うが…
447デフォルトの名無しさん:2013/08/11(日) 10:01:57.25
素人の理解なんてそんなもんだよ
448デフォルトの名無しさん:2013/08/11(日) 10:04:10.27
プロの理解を教えてください
449デフォルトの名無しさん:2013/08/11(日) 10:06:37.09
プロの方がそういうの理解してなかったりするよ
プロの仕事なんてボタン貼ってSQL書いてプロパティ弄るだけの単純作業だから
450デフォルトの名無しさん:2013/08/11(日) 10:08:58.52
プロの定義は?

Success is stumbling from failure to failure with no loss of enthusiasm. - Winston Churchill(1874 ? 1965)
451デフォルトの名無しさん:2013/08/11(日) 10:16:22.96
OrderByの存在を知っているだけでプロでもマシな方だよ
仕事でC#書いてる人の結構な割合がVBやJava上がりだから基本文法+αの知識しかないことも多い
452デフォルトの名無しさん:2013/08/11(日) 10:18:48.63
みなさんありがとうございます、バッファを再利用する方法として
今までは配列を返す関数内でbyte[] a=new byte[/////];
として返していたのですが、これを引数としてこいつに放り込む形にしたいと思います
重ねてありがとうございます
453デフォルトの名無しさん:2013/08/11(日) 15:40:12.81
DataGridView の CellFormatting でcellの色を設定しているのですが、
設定の仕方によって、設定後の色の取得ができたりできなかったりします。
できない場合にどうして色が取得できないのか、分かる方いますか?


■色の取得ができる場合
private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
dgv[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Orange;
}

↑実行後に別メソッドで↓

DataGridViewCell cell = (色を変えたセル)
if (cell.Style.BackColor.Equals(Color.Orange)){...} ★trueになる


■色の取得ができない場合
private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
e.CellStyle.BackColor = Color.Orange;
}

↑実行後に別メソッドで↓

DataGridViewCell cell = (色を変えたセル)
if (cell.Style.BackColor.Equals(Color.Orange)){...} ★falseになる

cell.Style.BackColorをデバッガで見ても、何も設定されてない → "{Name=0, ARGB=(0, 0, 0, 0)}"
でもGUI上は確かに色が変わっている
454デフォルトの名無しさん:2013/08/11(日) 19:59:37.18
>>453
e.CellStyleとDataGridViewCell.CellStyleは同一オブジェクトじゃないから
DataGridView.DefaultCellStyleやらいろいろ反映させた上でのスタイルだから
455デフォルトの名無しさん:2013/08/11(日) 20:51:00.25
>>454
じゃ、e.CellStyleで変更した値を再取得するにはどうすればいいの?
456デフォルトの名無しさん:2013/08/11(日) 23:23:42.60
Webのフォームにラジオボックスが数個ついていてボタンを押すことでラジオボックスで選択したファイルをダウンロードできるようなWebシステムがあります。

これをHttpWebRequest/Responseを使ってダウンロードするにはどうすればいいですか?

Webシステムの理論は下記とほぼ同じだと思います。

http://msdn.microsoft.com/ja-jp/library/cc719227.aspx
457デフォルトの名無しさん:2013/08/11(日) 23:30:06.36
まずブラウザの開発者ツールを使って調べろよ
458デフォルトの名無しさん:2013/08/11(日) 23:46:57.84
1.何でもいいから試しにhtmlファイルのダウンロードをしてみる
2.何でもいいから試しにPOSTをしてみる
3.目的のwebフォームからhtmlソースもしくはそのコントロールを取得する
4.そこからradioboxなどのform情報を読みとる
5.2で試したのでPOST
6.完成
459デフォルトの名無しさん:2013/08/12(月) 00:04:09.05
ありがとうございます。
POSTについての理解できてなかったようです。

submitのPOSTを返してなかったのでどうしてもデータが帰ってきてなかったようです
460デフォルトの名無しさん:2013/08/12(月) 01:39:40.52
>>459
submitのPOSTを返すって
どういう意味?????????
461デフォルトの名無しさん:2013/08/12(月) 03:30:35.89
>>460
POSTにsubmit○○=valueを入れてなかったということです

説明下手で申し訳ない
462デフォルトの名無しさん:2013/08/12(月) 08:03:11.28
なんでtoolstripmenuitemってキャストしまくらないと使えない設計なの?
463デフォルトの名無しさん:2013/08/12(月) 08:37:35.64
>>455
できないし普通しない
データと変更した条件は手元にあるんだからわざわざ色を見ずにデータと条件を見ればいい
464デフォルトの名無しさん:2013/08/12(月) 08:58:42.28
InheritedStyle
465デフォルトの名無しさん:2013/08/12(月) 10:41:11.72
>>462
何にキャストしてるのよ
466デフォルトの名無しさん:2013/08/12(月) 20:48:30.73
(夢)セガ ドリームキャスト
467デフォルトの名無しさん:2013/08/13(火) 22:10:52.89
渾身のネタありがとうよ
468デフォルトの名無しさん:2013/08/13(火) 22:42:57.33
人の褌作戦
他人の物を利用して、身を削ったり努力すること無しに自分の利をはかる作戦

渾作戦
ビアク島の 戦いを支援するための作戦で、3次にわたり行われたが、
アメリカ軍のマリアナ諸島襲来 により中止された。
マリアナ沖海戦の前哨戦となる作戦であったものの、
準備していたガソリン、重油など貴重な資源を消費してしまう。
日本軍側の優柔不断とも言える作戦指導から、何も得るところ無く終わった。
469デフォルトの名無しさん:2013/08/14(水) 17:37:08.37
>>462

他のToolStrip系パーツと共通でぶち込むためだろ
470デフォルトの名無しさん:2013/08/14(水) 23:41:09.59
IIS7で公開してるサイトのASPファイルから自作クラスライブラリの
アセンブリを読み込んで使いたいのだけど
どこにdllを配置すればいいでしょうか?
物理パスのルート直下ではダメでした
471デフォルトの名無しさん:2013/08/14(水) 23:46:20.99
IISマネージャで登録するんじゃない?
ここじゃなくてIIS関連スレで聞いたほうがいいと思う
472デフォルトの名無しさん:2013/08/15(木) 06:04:17.52
binだろ
473デフォルトの名無しさん:2013/08/16(金) 15:29:39.81
推薦図書/必読書のためのスレッド 70
http://toro.2ch.net/test/read.cgi/tech/1369350072/

上記のスレで質問したところ、.NETのスレで聞いてみてはどうかと提案を受けました。
該当しそうなスレッドが見つからなかったため、こちらに質問させていただきます。
以下、上記スレに書いた内容の転載です。

今度、Visual C#でWindowsアプリの開発を行うことになりました。
当方C, C++, Visual C++(MFC)はある適度経験がありますが、C#や.netは全く未経験なので、本を買おうと思っています。
文法の本はどれを買うか決めたのですが、GUIプログラミングの本を決めかねています(近くに大きな本屋が無く、内容を
見ることができないのです)。
下記のような条件を満たす本がほしいのですが、お勧めはないでしょうか?

・GUI(.Net Framework)を使ったアプリ開発を扱う
・入門/初心者段階の人が読んで役に立つ(別に入門的内容オンリーでなくてもOK)
・各コントロール(と呼ぶのか?)などの基本的な使い方を、ある程度網羅的・リファレンス的・系統的に分類して、豊富な
サンプルを用いて見やすくまとめてある
・ステップbyステップで大きなアプリを完成させていくのではなく、各項目の説明のための最小限の小さなアプリを都度作る
ようなスタイル
・できれば翻訳書ではない

Visual C++でいうと、林晴比古氏の明快入門Visual C++シリーズのような、ぱらぱらとめくってどこに何が書いてあるのかが
わかるような本が理想的。ペゾルド本のようなじっくり読んでいくタイプの本はNGです。

よろしくお願いします。
474デフォルトの名無しさん:2013/08/16(金) 15:35:45.59
逆引き系を本屋で適当に選べばいいよ
VC++の学習時と同じつもりで身構えてるんだろうけど、VC#は分かりやすいしMSDNも丁寧なので
適当に触って細かいことは都度MSDNに当たればいける
475デフォルトの名無しさん:2013/08/16(金) 15:45:09.72
.NETのMSDNはメンバ一つ一つに長い解説とサンプルコードがあったり
コントロールごとにチュートリアルを用意してくれてたり
日本語訳も昔と比べればずっと改善されてるし
ヘタな参考書よりよっぽど丁寧
476デフォルトの名無しさん:2013/08/16(金) 15:58:28.40
MFCで開発できるだけの腕あがあるなら本なんて要らないでしょ。ぐぐればすぐに情報見つかる
477デフォルトの名無しさん:2013/08/16(金) 17:57:33.32
MFCできるならdobonだけ見ればいいよ
478473:2013/08/16(金) 18:14:42.11
msdnがわかりやすいというのはありがたいですね。
とはいえ、なんとなく本の体裁のものも欲しいので・・・。

>逆引き系を本屋で適当に選べばいいよ

逆引き本を買ってみようかとも思ったのですが、逆引き本だと断片的な内容になりがち(それこそネットで
調べられそうな事柄が多い)ため、ある程度体系的にまとまっているいい本はないかな、と思ったのです。

まあ、あまり悩んでいても仕方ないので、とりあえず適当に買ってみます。
ありがとうございました。
479デフォルトの名無しさん:2013/08/16(金) 19:34:17.71
↓こんな感じのXMLから
http://jk.nicovideo.jp/api/v2_app/getchannels


channel
radio_channel
bs_channel
480デフォルトの名無しさん:2013/08/16(金) 22:03:21.01
オッケーイ
481デフォルトの名無しさん:2013/08/16(金) 22:05:41.22
XLINQでもなんでも使って好きにやって
482デフォルトの名無しさん:2013/08/16(金) 23:42:06.77
>>477
やりたい事と C# でググれば
dobon が出てきて助けてくれる
本当助かるぜあそこは
483デフォルトの名無しさん:2013/08/17(土) 08:59:32.68
msdnは何がどこにあるか探しにくい
484デフォルトの名無しさん:2013/08/17(土) 22:43:50.66
ほぼ初めてのC#を使ったwindwsアプリケーションを作っています
TextBox1+TextBox2をlabe1.textに表示させるさい
TextBox1の数字をxに置き変える方法がわかりません
助けてください><
485デフォルトの名無しさん:2013/08/17(土) 22:57:27.78
C#ド初心者にクラス関数と普通の関数の違いを
短時間で理解できるよう教える方法を教えてくださいorz
486デフォルトの名無しさん:2013/08/17(土) 22:59:43.39
C#におけるクラスメソッドと普通のメソッドの事か?
使い方全く違うじゃん
何が分からんのだ
487デフォルトの名無しさん:2013/08/17(土) 23:04:11.06
違いなんてない
気持ちの持ちようだよ
488デフォルトの名無しさん:2013/08/17(土) 23:16:22.61
>>484
LINQでどう書けるかやってみただけだ
多分見ない方がいい

label1.Text = string.Join("", (textBox1.Text + textBox2.Text)
.Select(v => v >= '0' && v <= '9' ? 'X' : v));

Betweenが欲しいぜ
489デフォルトの名無しさん:2013/08/17(土) 23:16:57.86
普通のメソッドって何?
メソッドって必ずクラスに属しているものと思ってた
490デフォルトの名無しさん:2013/08/17(土) 23:28:55.79
クラスメソッドはクラスをインスタンス化しなくても
呼び出せるメソッドのこと
491デフォルトの名無しさん:2013/08/17(土) 23:29:51.46
クラスメソッドってスタティックなメソッドのことだと思ったが違うのか
492488:2013/08/17(土) 23:39:38.39
違わない
493デフォルトの名無しさん:2013/08/17(土) 23:40:33.54
へぇ知らなかった
C#あたりの教科書だと、静的メソッドとか静的なになにとかしか記憶にない
計算機科学では一般的な言葉なんだ

>>482
性的だけに気持ちいいw
494デフォルトの名無しさん:2013/08/17(土) 23:54:38.47
Delphi(ヘジたんの前作)も「クラスメソッド」
Javaは「スタティックメソッド」
C++から入った人は「スタティック関数」と言うかもしれない
495デフォルトの名無しさん:2013/08/18(日) 00:23:33.60
C++で単に静的関数というとモジュール外に公開しない関数のことだから
静的メンバ関数でしょ
496デフォルトの名無しさん:2013/08/18(日) 00:25:03.98
何を言ってるんだ?
ってprivateみたいな使い方もあるんだっけ?そんな使い方したことないや
497デフォルトの名無しさん:2013/08/18(日) 00:29:58.27
(絶句)
498デフォルトの名無しさん:2013/08/18(日) 00:36:40.51
使い道があるかはわからんが不可能ではない
publicな非staticからprivate staticを呼び出せたり出来る
499デフォルトの名無しさん:2013/08/18(日) 00:42:33.85
>グローバル変数に付けると、他ファイルからアクセスできなくなる
ttp://bituse.info/c/27

これでprivateとして使うんだと
500デフォルトの名無しさん:2013/08/18(日) 00:48:12.72
クラスメソッドと普通のメソッドの違いの前に
クラスフィールドと普通のフィールドの違いを理解した方がいいと思うわ
501デフォルトの名無しさん:2013/08/18(日) 00:59:18.42
>>489
こいつあほすぎだろwww
502デフォルトの名無しさん:2013/08/18(日) 01:08:26.52
>>501
そうか、俺はあほだったんだ
てか、「あほっちゅうやつがあほやねん」って日本のことわざしらんのか?
あほ〜w
503デフォルトの名無しさん:2013/08/18(日) 01:11:30.95
これは基地外だ
504デフォルトの名無しさん:2013/08/18(日) 01:13:42.40
でもまあこんな場所でオレ定義の名称を使う方もどうかと思うけど。
「普通のメソッド」ってなんなんだよと思うのは当然だわ。
505デフォルトの名無しさん:2013/08/18(日) 03:43:22.02
>>504
文書から推測できないのかお前は
アスペ乙wwwwwwwwwwwwwwwwwwwwwwwwwww
506デフォルトの名無しさん:2013/08/18(日) 03:48:59.19
で、結局普通のメソッドは作れるの?試すの面倒だから誰かおしえてくれ
507デフォルトの名無しさん:2013/08/18(日) 07:24:48.99
ああ確かにキチガイだこれ
無知のくせに他人に要求だけする
508デフォルトの名無しさん:2013/08/18(日) 07:41:54.80
class C
{
 public static void StaticMethod(){}

 public void InstanceMethod(){}
}

------------------

C.StaticMethod();

C c = new C();
c.InstanceMethod();
509デフォルトの名無しさん:2013/08/18(日) 07:54:49.77
void hoge1(){}  //普通のメソッド=使えない。 error CS0116: 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません。
namespace hoge
{
 void hoge2(){}  //普通のメソッド=使えない。 error CS0116: 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません。

 class C
 {
  public static void StaticMethod(){}  //普通じゃないメソッド=使える
  public void InstanceMethod(){}  //普通じゃないメソッド=使える
 }
}
510デフォルトの名無しさん:2013/08/18(日) 07:55:52.35
クラスに馴染めなかったメソッド・・・orz
511デフォルトの名無しさん:2013/08/18(日) 07:56:18.11
>>508
クソコード乙
512デフォルトの名無しさん:2013/08/18(日) 08:09:55.14
ところでApplicationExceptionは使ったらいれないの?
513デフォルトの名無しさん:2013/08/18(日) 08:15:35.50
staticメソッドにするやつはクズ
514デフォルトの名無しさん:2013/08/18(日) 09:26:33.10
>>512
ダメ
何をアプリケーションとするかなんて相対的なもので、まったく意味のない分類
グルーピングがしたければHogeアプリならHogeExceptionを継承するのが合理的
515デフォルトの名無しさん:2013/08/18(日) 10:10:18.37
>>513
じゃあ、.NET Framework標準のライブラリ群はクズということになるな。
標準のライブラリ群は絶対に使うなよ!
516デフォルトの名無しさん:2013/08/18(日) 10:13:56.92
cscもラムダ式をstaticメソッドに変換するクズ
517デフォルトの名無しさん:2013/08/18(日) 11:30:17.07
>>505
ふつうに考えて推測を要する時点でダメだと思うが
518デフォルトの名無しさん:2013/08/18(日) 11:50:32.88
拡張メソッドは面白いけどあまり好きにはなれない
519デフォルトの名無しさん:2013/08/18(日) 11:51:33.65
ラムダ式は大失敗。
520デフォルトの名無しさん:2013/08/18(日) 12:14:05.78
staticにしたらクラスライブラリにする時に問題になる
521デフォルトの名無しさん:2013/08/18(日) 13:11:57.84
>>517
煽りとかじゃなく真面目な話し、少しは自分がアスペって自覚しといた方がいいぞ
522デフォルトの名無しさん:2013/08/18(日) 13:56:44.32
>>521
コテ付けて
523デフォルトの名無しさん:2013/08/18(日) 14:04:13.32
アスペに真面目な話とかアホか
いちいちからむなクズ
524デフォルトの名無しさん:2013/08/18(日) 14:25:29.48
相手がアスペと疑う奴は自身がアスペだろ、ふつう。
525デフォルトの名無しさん:2013/08/18(日) 14:28:48.85
うん。
悪口は自身の価値観の裏返し。
526デフォルトの名無しさん:2013/08/18(日) 14:33:47.65
。使うやつは同一人物だと思う。
527デフォルトの名無しさん:2013/08/18(日) 14:47:52.28
よぉーっし。これから全部 。 を付けちゃうぞ。
528デフォルトの名無しさん:2013/08/18(日) 14:51:33.63
日本人ならふつうに句読点使うだろ。使わない奴はよほどの低学歴だろう。
529デフォルトの名無しさん:2013/08/18(日) 14:53:38.21
句読点を無くし、括弧を自然言語に取り入れるべき。
530デフォルトの名無しさん:2013/08/18(日) 14:55:56.24
かんじ も すてて わかちがき に しようぜ。
531デフォルトの名無しさん:2013/08/18(日) 14:58:14.80
。つけてるのは漢字変換のトリガに使ってるんだと思うぜ
532デフォルトの名無しさん:2013/08/18(日) 14:59:31.70
句読点ない馬鹿見ると、
こいつ日頃から文章書いてないし読んでないんだろうなと思う。
533デフォルトの名無しさん:2013/08/18(日) 15:00:25.91
>>528
いやいやw知らないんじゃないよwww
印象を柔らかくする為に省いてるんだよwww

50超えたら知らない人も居るかもだけどね
534デフォルトの名無しさん:2013/08/18(日) 15:21:07.38
>>531
文中と文末で押すキーをわざわざ変えるのか…
535デフォルトの名無しさん:2013/08/18(日) 15:30:26.07
わざわざって、隣だしカンマとピリオド使い分けるのもわざわざって言うか?
536デフォルトの名無しさん:2013/08/18(日) 15:35:34.14
おまえら, くだらないことで言い争うな;
537デフォルトの名無しさん:2013/08/18(日) 15:51:06.99
>>536
おい、職業病やめろ
538デフォルトの名無しさん:2013/08/18(日) 16:47:30.24
>>533
いや、ほんとうに価値観を反映した良い見本でいらっしゃいますね。
539デフォルトの名無しさん:2013/08/18(日) 18:36:06.30
ここは日本語プログラミング言語ひまわりのスレ
540デフォルトの名無しさん:2013/08/18(日) 18:41:03.48
!お前ら.言い争う(くだらないこと)
541デフォルトの名無しさん:2013/08/18(日) 18:46:57.27
>>533
こんなのと一緒にしないで
542デフォルトの名無しさん:2013/08/18(日) 19:04:39.25
>>540
おい、職業病やめろ
543デフォルトの名無しさん:2013/08/18(日) 20:08:48.10
職業病.やめる("おい",force=True)
544デフォルトの名無しさん:2013/08/18(日) 20:10:30.22
[お前ら やめないか: そろそろ];
545デフォルトの名無しさん:2013/08/18(日) 20:51:30.00
ところでリストの中身を
i〜j番目をn〜m番目と入れ替える方法はある?
546デフォルトの名無しさん:2013/08/18(日) 20:53:40.59
リストの置換は遅くないはずだから普通に組めば
547デフォルトの名無しさん:2013/08/18(日) 21:02:05.43
参照型なら好きなやり方でやればいい
値型でもいくらでもやりようはある
548デフォルトの名無しさん:2013/08/19(月) 00:07:08.00
これこそ拡張メソッドに向いた仕事だな
549デフォルトの名無しさん:2013/08/19(月) 01:38:17.26
また出たよ拡張バカ
550デフォルトの名無しさん:2013/08/19(月) 01:58:15.67
拡張は遅い
551デフォルトの名無しさん:2013/08/19(月) 19:46:58.90
拡張バカてw
552デフォルトの名無しさん:2013/08/19(月) 20:44:53.66
てst
553デフォルトの名無しさん:2013/08/19(月) 21:18:59.38
召喚獣
554デフォルトの名無しさん:2013/08/20(火) 04:56:55.74
Tagってつかってもいいの?
555デフォルトの名無しさん:2013/08/20(火) 08:27:27.96
数値やStringみたいな単純な型を入れないと約束できるなら許す
556デフォルトの名無しさん:2013/08/20(火) 09:55:24.44
メニューに1000個の項目作ったら
52秒くらいかかるんだけど?
どうすればいい?
557デフォルトの名無しさん:2013/08/20(火) 09:59:10.45
最初に全部追加するんじゃなくて開くときに必要な分だけメニュー項目追加
558デフォルトの名無しさん:2013/08/20(火) 10:47:24.21
ContextMenuStripとかToolStripDropDownの方なら、追加自体がクソ遅いからある程度数が増えるとどうしようもない。

メニューアイテムが何千個とかになる可能性があるなら仮想リストビューのような機構を考慮してみてはいかがか。
実際に追加するのを256個程度にとどめて、スクロールやキー押下時にアイテムを削除/追加する。

まあ1000個の時点でUIとしては破綻してるけどね……
559デフォルトの名無しさん:2013/08/20(火) 11:09:20.66
実際のUIがどうなってるのか知らないけど、別に1000個でも破綻してるとは思えないな
IEのお気に入りなんかは>>557の方法。何万個お気に入りが記録されてても動作は普通
560デフォルトの名無しさん:2013/08/20(火) 11:44:53.18
いや、1列にならべた1000個の中から必要なものを1つ選べってのが破綻してるだろw
561デフォルトの名無しさん:2013/08/20(火) 11:49:54.82
>1列にならべた
これどっからきたんだ???
562デフォルトの名無しさん:2013/08/20(火) 11:51:52.14
>>556見りゃわかるだろ
563デフォルトの名無しさん:2013/08/20(火) 18:41:10.53
AddRange
564デフォルトの名無しさん:2013/08/20(火) 22:19:44.76
オブジェクトブラウザの内容ってエクスポート出来ないんか?
XMLとかに出来ればありがたいんだが
565デフォルトの名無しさん:2013/08/20(火) 22:22:21.13
doxygenでも使えば?
リフレクション使えば自分でも簡単にやれるけど
566デフォルトの名無しさん:2013/08/22(木) 13:59:53.25
DBにパスワードを暗号化して保存したいんですけど
不可逆のほうがいいと思うのでMD5で保存しようと思うんですけど
それをJavaとC#で認証したいんですけど、これって普通ですか?
567デフォルトの名無しさん:2013/08/22(木) 14:09:38.26
> DBにパスワードを暗号化して保存したいんですけど
うん
> 不可逆のほうがいいと思うのでMD5で保存しようと思うんですけど
今時MD5?とは思うけどまあうん
> それをJavaとC#で認証したいんですけど、これって普通ですか?
どこで何を認証するのか分からないと何とも
568デフォルトの名無しさん:2013/08/22(木) 14:32:51.94
>>567
画面で入力されたパスワードをMD5でハッシュ値を取得して
DBから取得した値と比較というのをJavaとC#でしたいんですが
どちらもMD5のハッシュ値なら同じ値になりますか?
569デフォルトの名無しさん:2013/08/22(木) 14:38:50.96
ならなかったら大変だよ
570デフォルトの名無しさん:2013/08/22(木) 14:39:45.19
>>569
ありがとうございます。ではこれで行きます。
571デフォルトの名無しさん:2013/08/22(木) 16:18:07.47
"00010"っていう文字列リテラルから左の0だけを全部取り除きたいので
string str="00010";
str=(int.Parse(str)).ToString();

ってやってるんですが
本当はどうやったらいいんですか?
572デフォルトの名無しさん:2013/08/22(木) 16:21:41.67
すいませんリテラルじゃないですね
文字列を代入した変数でした
573デフォルトの名無しさん:2013/08/22(木) 16:41:27.82
Trimとか
方法は色々あって唯一の解ってのは特にない
574デフォルトの名無しさん:2013/08/22(木) 16:44:19.94
俺は動けばいいと思うが、どうしてもというなら正規表現で組めばいいんじゃないの?
575573:2013/08/22(木) 16:49:30.33
TrimじゃなくてTrimStartだった
576デフォルトの名無しさん:2013/08/22(木) 16:56:30.65
>>573-575
ありがとうございます!
これで型変換せずに済みそうです
577デフォルトの名無しさん:2013/08/23(金) 13:33:31.20
ウィンドウのシステムメニューってあるじゃないですか。
ウィンドウの左上のアイコンを右クリックしたときに出るやつです。
あれを自分で表示することってできないでしょうか?
systemmenu.show();
みたいな感じで。
578デフォルトの名無しさん:2013/08/23(金) 13:47:55.80
ggrks
C# "システムメニューを表示する”
579デフォルトの名無しさん:2013/08/23(金) 13:51:44.85
alt+[space]をメインウインドウにディパッチしちゃどうだろう?(超適当)
580デフォルトの名無しさん:2013/08/23(金) 14:05:37.29
できた。ぽまいらありがとう。
581デフォルトの名無しさん:2013/08/25(日) 16:22:35.96
クラスAとクラスBがあったとして、クラスAのボタンコントロールを押した際に、クラスB内で処理をしたい場合は以下の2案が考えられると思うのですが、
一般的にはどちらを使えばいいものでしょうか?あるいはこういう時はこっちがいいという考え方はありますか?
今は@で実装してますが、見づらく再利用もしづらい気がしてきたのでAに直すか迷っています
(実際は下記例と異なり、10個以上の引数を与えているので・・・)

@案
//クラスAでクラスBを宣言してコントロールを引数にする
B = new B(button1, textBox1);
//クラスBでラムダ式でメソッドを実装
public B(Button button1,TextBox textBox1)
{
button1.Click += (sender, e) => button1_Click(textBox1);
}
//クラスBで同名のメソッドに処理を記載
void button1_Click(TextBox textBox1)
{
//処理


A案
//クラスAでクラスBを宣言してコントロールをナンバー変数にする
B = new B();
B.button1=button1;B.textBox1=textBox1;
//クラスAでbutton1のクリックイベントを実装し、Bのメソッドを呼ぶ
private void button1_Click(object sender, EventArgs e){ B.button1_Click(); }
//クラスBに同名のメソッドに処理を記載
void button1_Click()
{
//処理
582デフォルトの名無しさん:2013/08/25(日) 16:39:05.74
クラスAとクラスBは独立に生成して
クラスBのコントローラをクラスAのイベントに紐つける
583デフォルトの名無しさん:2013/08/25(日) 16:52:35.66
回りくどいことしてるなって印象のみ受けるね
584デフォルトの名無しさん:2013/08/25(日) 16:54:16.97
C#にfriendに相当する述語がないのが悔やまれる

結局publicにするしかない
585デフォルトの名無しさん:2013/08/25(日) 16:54:38.20
そう。必要ないね
586デフォルトの名無しさん:2013/08/25(日) 16:59:46.14
>>581
クラス設計が悪いからそうなってる
GUIは最も設計が難しい問題の一つだから、
安易にプログラムを組んでるとすぐにグチャグチャな実装になるよ

つまり適当なGUI設計の解説文書に目を通しながらクラス設計を見直せということだ
587デフォルトの名無しさん:2013/08/25(日) 17:15:20.51
GUI関係ないじゃん
588デフォルトの名無しさん:2013/08/25(日) 17:27:05.20
>>587
Model View Controller
http://ja.wikipedia.org/wiki/Model_View_Controller
> 特に構造が複雑となりがちなグラフィカルユーザインターフェース (GUI) をもつソフトウェアにおける有用性から他方面へ広がった。
589デフォルトの名無しさん:2013/08/25(日) 17:36:34.89
>>588
Wikipediaをソースにすんな
クラス設計が複雑なケースはGUI関係なしに問題が起きやすい
590デフォルトの名無しさん:2013/08/25(日) 17:43:47.09
2が普通
回りくどくもないし、変な設計でもない
ただしB.button1_Click();って名前が悪い。関数名の付け方をもう少し考えた方がいいと思う
591デフォルトの名無しさん:2013/08/25(日) 17:51:09.91
というか、Bのメソッドをイベントハンドラにしないのは必要な要件なの?
592デフォルトの名無しさん:2013/08/25(日) 17:53:16.14
引数のためにEventArgs継承するのが嫌なのでは
593デフォルトの名無しさん:2013/08/25(日) 17:56:04.53
senderを生かせばbutton1のようなインスタンスをあらかじめ渡しておく必要もない
594デフォルトの名無しさん:2013/08/25(日) 18:01:51.94
テストしにくそうな設計はやめてください
595デフォルトの名無しさん:2013/08/25(日) 18:05:26.22
フィールドにアクセスしてる方がテストしにくさではよほどだろw
ステートがねえ方がいいに決まってる
596デフォルトの名無しさん:2013/08/25(日) 18:07:52.99
業務なら保守性・テストしやすさ・見やすさ・・・必要だけど
初心者スレで、質問者も見るからに初心者じゃねーかよ
それに対してテストとか解説文書とか言ってるやつは池沼自覚しとけよw
597デフォルトの名無しさん:2013/08/25(日) 18:08:08.86
引数10個もある時点でテストしやすさなんて求められてないのは明白だからOK
598デフォルトの名無しさん:2013/08/25(日) 18:20:13.67
>>589
おれ「GUIはクラス設計が複雑になりがちな領域だよ」

きみ「GUI関係ないだろ!」

おれ「えっ」

きみ「クラス設計が複雑ならGUI関係なく問題が起きやすいだろ!」

おれ「???」
599デフォルトの名無しさん:2013/08/25(日) 18:21:26.61
俺の結論としてはどっちも選ばないってことで一つ
600デフォルトの名無しさん:2013/08/25(日) 18:26:22.83
やったこと無いけど、Bのボタンをパブリックにして、Aのインスタンスに直接飛ばすのは出来たっけ?
601デフォルトの名無しさん:2013/08/25(日) 18:29:28.26
自分だったら >>582 を選ぶかな。

それができない事情があるなら、必要なインターフェイスを Class A 側で定義して、
それを実装した Class B のメソッドを Class A のイベントハンドラ内から呼び出す。
602デフォルトの名無しさん:2013/08/25(日) 18:30:07.36
Bはボタンじゃないですよ
ボタンのイベントを記述しているだけのクラス
603デフォルトの名無しさん:2013/08/25(日) 18:32:58.35
デザインパターンの見地からクラス設計を語ってる奴がいない時点で終わってるな
604デフォルトの名無しさん:2013/08/25(日) 18:34:01.47
>>603
人生終わってるアスペは静かにしとけ
605デフォルトの名無しさん:2013/08/25(日) 18:37:06.56
>>604
GUIのクラス設計をデザインパターンに頼らず独学でこなせる奴がいたら天才だわ
606デフォルトの名無しさん:2013/08/25(日) 18:37:11.37
まったく君たちは、喧嘩ばかりしおって・・・。
http://ideone.com/h2oYGz
607デフォルトの名無しさん:2013/08/25(日) 18:38:16.25
>>605
分かったから静かにしとけ
心の電話にでも喋ってろチンカス
608デフォルトの名無しさん:2013/08/25(日) 18:40:22.73
MVCとかデザパタとか、キーワード喋りたいだけの奴が多いな
そんで肝心の中身はゼロ
609デフォルトの名無しさん:2013/08/25(日) 18:41:04.91
>>606
このコードの断片に何の意味があるんだ?
型安全も確認せずダウンキャストしてるからバグがあったらプログラムごと停止
こんなコードを製品に採用したらその会社は終わりですな
610デフォルトの名無しさん:2013/08/25(日) 18:42:01.50
学校行って知識だけあってプログラミングできないやつが多いからな。
初心者はとくに動けばいんだよ。実装の無駄さ、複雑さなんて気にするな
611デフォルトの名無しさん:2013/08/25(日) 18:42:17.18
>型安全も確認せずダウンキャストしてるからバグがあったらプログラムごと停止

失笑するしかない
ダウンキャストは無条件で危険って耳元で囁かれ続けて育ったんでしょうね
612デフォルトの名無しさん:2013/08/25(日) 18:42:40.95
>>608
>>581こんな短いコードの一部だけ見せられてクラス設計について具体的に指南する奴がいるとしたら
そいつは超能力者か大馬鹿者のどちらかだ
クラス設計について具体的に指摘するのなら全体の情報が必要になるのは当たり前
A, Bなんて局所的なクラスだけじゃ何とも言えねーよ
613デフォルトの名無しさん:2013/08/25(日) 18:44:00.03
まさにメンヘル行けってことですね
614デフォルトの名無しさん:2013/08/25(日) 18:46:59.25
デザインパターンの見地からクラス設計を語りたいだけで>>581なんてどうでもいいんだろ
ぜひ語れや
酒の摘みに位してやるよ
615デフォルトの名無しさん:2013/08/25(日) 18:49:10.75
>>611
実際>>606のコードは動かないぜ?
ダウンキャストを安易に使う奴はこんな短いコードにすらバグを混入させる初心者だと白状してしまいましたな

正解は
((Button)sender).Text = "hogehoge";
616デフォルトの名無しさん:2013/08/25(日) 18:50:17.60
初心者はとにかく動くもの書いてればいいんだよ

だんだんわかってくるよ
617581:2013/08/25(日) 19:00:58.96
結局どうしたらいいんでしょう
618デフォルトの名無しさん:2013/08/25(日) 19:08:47.91
とりあえず 582 でいいんじゃね。
619デフォルトの名無しさん:2013/08/25(日) 21:03:55.41
俺もダウンキャストって実行時に決まるし静的型にとっては基本的には悪だと思うよ
でもこういうのを解決する上手い方法ないのも確か
620デフォルトの名無しさん:2013/08/25(日) 21:06:34.00
キャストOFF!
621デフォルトの名無しさん:2013/08/25(日) 21:14:46.09
自分で設定したイベントハンドラの引数すら信じられないなら好きにしたらいい

Debug.Assert( sender is Button );
とかしとけば
622デフォルトの名無しさん:2013/08/25(日) 21:20:42.51
自分のコードなんて全然信用できないから
その手のチェックはコンパイラがやってほしい
623デフォルトの名無しさん:2013/08/25(日) 21:22:32.68
とりあえずsenderの型をobjectにしたバカを呼んで来い
624デフォルトの名無しさん:2013/08/25(日) 21:31:07.58
>>623
何型なら良かったん?
625デフォルトの名無しさん:2013/08/25(日) 21:32:09.89
イベント飛ばした型にすりゃいいじゃん
626デフォルトの名無しさん:2013/08/25(日) 21:52:19.77
>>625
System.EventHandler()のオーバーロードがすごいことになりそうだ。
627デフォルトの名無しさん:2013/08/25(日) 22:02:34.86
コントロールを自作した場合はどうなんだかね。
628デフォルトの名無しさん:2013/08/25(日) 22:20:05.47
ウィジェット渡すって構造が元凶の気がする
629デフォルトの名無しさん:2013/08/25(日) 22:24:38.18
イベントが基底で定義されてればキャストは絶対にいるだろ
CLRは言語レベルでイベントがあるからObjectが渡されるだけの話
630デフォルトの名無しさん:2013/08/25(日) 22:38:03.45
つかC#は安全にキャストできるんだからobjectで何の問題もないと思うけどな。
631デフォルトの名無しさん:2013/08/25(日) 22:47:22.79
安全と言っても失敗したら実行時にInvalidCastException投げるから
キャストすらせずにコンパイル時に解決する方法がないかなという話
632デフォルトの名無しさん:2013/08/25(日) 22:49:24.46
というかsenderを使わなければいい話
なんのためのデリゲートだよ
関数ポインタじゃねえんだからさ
633デフォルトの名無しさん:2013/08/25(日) 22:51:22.18
どうせsenderを決め打ちでダウンキャストする時点で密結合だしな
634デフォルトの名無しさん:2013/08/25(日) 22:54:29.98
Buttonが発生させたイベントならsenderはButtonに決まってるだろう
そんなことを疑ってたら怖くて一行もコード書けないわ
参照型変数にはnullが入ってるかもしれないから参照型は使ってはいけない
予期せぬ例外が出るかもしれないから外部のメソッドを呼んではいけない
とか言ってんのと一緒
635デフォルトの名無しさん:2013/08/25(日) 22:59:59.80
sender.ev += (s, e) ((X)s).f();
と書かずに
sender.ev += (s, e) sender.f();
と書けばいいだけの話
これが安全じゃないならsenderのクラス設計がおかしいから修正させろ
636デフォルトの名無しさん:2013/08/25(日) 23:03:23.98
デザイナ使わずにクロージャでイベント登録する方が
ダウンキャストよりよっぽど糞コードだと思う
637デフォルトの名無しさん:2013/08/25(日) 23:10:39.36
ボタンのクリックイベントsenderを型チェックしろとか言ってる奴は
eがnullでないことやeが持ってるプロパティの値が正しいことをチェックするのか?
しないと片手落ちだ
638デフォルトの名無しさん:2013/08/25(日) 23:16:41.77
>>636
クロージャではなくメソッドとVSの話になるが
メソッドをイベント登録するとメソッドの呼び出し階層の表示で追えなくなるのが辛いと常々思う
639デフォルトの名無しさん:2013/08/25(日) 23:18:44.97
>>637
やるべきだと言ってるんじゃなくてだな、
せっかく型チェック機構があるんだから
使わないで解決するスマートな方法ないかなと言ってるだけだ
640デフォルトの名無しさん:2013/08/25(日) 23:22:14.98
FxCopのルールでも作れば?
641デフォルトの名無しさん:2013/08/25(日) 23:23:24.55
ボタンのクリックなんかは変な呼び方するやついないからnullチェックしないが、
自作イベントなら必ずチェックするな
642デフォルトの名無しさん:2013/08/25(日) 23:26:20.99
型チェック使ってスマートにやりたいなら自作イベントに登録させるのが一番じゃないかな
object senderやeventargs eに期待しちゃ駄目よ
643デフォルトの名無しさん:2013/08/25(日) 23:27:19.89
しかしどうしてオマエらは本来の質問そっちのけで場外乱闘を始めるんだ。いつもいつも。
644デフォルトの名無しさん:2013/08/25(日) 23:34:09.08
イベントを隠ぺいしないやつが悪い
645デフォルトの名無しさん:2013/08/26(月) 14:29:23.25
>>581です
色々とレスありがとうございました
>>582はクラスBでイベントを作っておいて、クラスAのボタンコントロールを押した際にクラスBのイベントに飛ばせということですね
Aのように考えたのはクラスBの処理はメソッド単位の方が再利用しやすいのかな?と思ったからです
コントロールがボタンに限らない(例えばメニュークリックからも同様の処理をさせたい)場合はAの方がいいですよね?
そこもイベントはBで記載して共通のメソッドに飛ばせば>>582でいいのかな

>>582がよい、>>590でいいというレスを頂けましたので、どちらかで書き直します
やっぱり@は見にくいだけでメリットないですよね・・・
646デフォルトの名無しさん:2013/08/26(月) 18:55:41.53
>>645
昨日は規制中だったから書けなかったけど、あなたの案、本当はどっちも論外なぐらい変だよ。

View(Form)がModel(データやメソッドを持つクラス)の参照を握るのは良いけど、
ModelがView(そのの中のGUI部品を含む)の参照を握るなんて最悪のダメ設計。
647デフォルトの名無しさん:2013/08/26(月) 19:51:31.69
モデルってどこから出てきたのやら。
UIイベントをハンドリングするんだからコントローラかビューロジックと考えるのが普通だろう。
実際>>581がどう考えているのかは知らんが。
648デフォルトの名無しさん:2013/08/26(月) 20:14:23.65
そもそもコントローラを分けて設計する人はこんな質問しません。
っていうか、Windows Formでそんな設計する人っているの?

そんな人はほとんどいないと思うけど、でもモデルだけはきっちり分けなきゃダメ。
649デフォルトの名無しさん:2013/08/27(火) 01:20:11.20
以前に2chのスレッド検索のことで質問したものです
専ブラ開発についてどこで聞けばいいのかわからないのでまたここで質問させてもらいます
書き込んだレスを認識する方法ってなんでしょうか?
書き込んだレスの内容と、差分取得したレスの内容を評価して「たぶんこれっ」て決めるのはおかしいですし...
書き込んだ時間と取得したレスの時間を評価をしようにもPCのローカル時間と比較しても仕方ありません...
650デフォルトの名無しさん:2013/08/27(火) 01:59:16.71
>>649
ソフトはおいといて、おまえは普段どうやって判断してる?レス内容、時間、ID見てたぶんこれ!ってやってるだろ?
ソフトもそれでやればいんだよ
>>649だっておまえの書き込みは投稿失敗してて、実は俺が書き込んだのかもしれないんだぞ。おかしくていんだよ
651デフォルトの名無しさん:2013/08/27(火) 11:13:11.53
>>650
そんなもんでいいんでしょーかねー
むむむ
652デフォルトの名無しさん:2013/08/27(火) 21:46:41.08
8アプリでキャンバスにImageコントロールを50個以上置くとものすごく重いです。

ゲームなんだけど描画ってどうやればいいの?
653デフォルトの名無しさん:2013/08/27(火) 21:56:56.95
formのHWND、DCつかって直接描画
654デフォルトの名無しさん:2013/08/27(火) 22:08:08.66
ストアアプリにそんなのないからw
655デフォルトの名無しさん:2013/08/27(火) 22:19:27.71
8アプリってスマホなの?
656デフォルトの名無しさん:2013/08/27(火) 22:22:14.87
DrawingContextで描画
657デフォルトの名無しさん:2013/08/27(火) 22:24:38.41
directx使えばいいよ
658デフォルトの名無しさん:2013/08/28(水) 01:34:31.44
>>656
それSyztem.Drawingより遅い
659デフォルトの名無しさん:2013/08/28(水) 07:11:13.32
>>658
ほんとに?自分で確認した?誰かの受け売り?
660デフォルトの名無しさん:2013/08/28(水) 07:16:41.28
メニューを開くとDropDownDirection
が勝手にRightになって戻らないんだけど?
661デフォルトの名無しさん:2013/08/28(水) 12:40:38.43
>>660
タッチパネル使ってるだろ?
デフォルトの右利き設定だと、右手でメニューが隠れないように、左に出すようになるらしい。
マウスがメインなら、コンパネで左利きに設定しておけばいい。
662デフォルトの名無しさん:2013/08/28(水) 12:42:42.64
なんだ、Rightか…
663デフォルトの名無しさん:2013/08/28(水) 20:32:02.61
>>659
MSの社員の発言が元だが自分でも試したことあるぞ
マジでゲロ遅い
WPFの典型的な間違った使い方だ
664デフォルトの名無しさん:2013/08/29(木) 12:15:47.73
質問
1..Net2.0で作っておけばWindows XP以降のどのバージョンのOSでもWindows Updateから.Net入れなくても動くと考えていいでしょうか?理由も添えてください
2..Net4.0と.Net4.5は共存できないのでなるべくこれらのバージョンで開発はしないほうがいいと思うのですがこの考えは正しいですか?間違っている場合は理由も添えてください。
665デフォルトの名無しさん:2013/08/29(木) 12:19:53.05
A 好きにしろ。
666デフォルトの名無しさん:2013/08/29(木) 12:33:56.45
1.発売当時の素のXPには.NET入ってないと思うから動かない
2.シラネ
667デフォルトの名無しさん:2013/08/29(木) 14:30:03.11
Z君が4.0でプログラムを作りました
A君のOSには4.0が入ってる
B君のOSには4.5が入ってる
Z君のプログラムを動かせるのはA君のみです
MSは4.0と4.5を共存できるようにするべきだった
3.0と3.5は共存できるのに4.xだけ共存できないなんてマジでキチガイ
668デフォルトの名無しさん:2013/08/29(木) 14:42:37.63
XPのサポート終了を利用してるんじゃないの?
669デフォルトの名無しさん:2013/08/29(木) 14:44:16.06
4.0と4.5両方インストールすればいいじゃん
670デフォルトの名無しさん:2013/08/29(木) 15:08:16.05
4と4.6共存でるんじゃなかった?
ただ一部コンポーネントが共有されてるから、その部分で互換性に問題生じてヤバイ可能性があるだけ、
普通は気にしなくていいと思ってる
671デフォルトの名無しさん:2013/08/29(木) 15:31:11.00
互換性はガンガン切ってくれて構わない
マイグレの仕事が増えておまんま食いっぱぐれないからね
672デフォルトの名無しさん:2013/08/29(木) 16:05:29.72
プロパティでバージョン変えてコンパイルし直すだけのお仕事だからなぁ
VS2012のC++/CLIは、C#と同じ様にプロパティを変えるだけの仕様になった?
673デフォルトの名無しさん:2013/08/29(木) 16:11:14.15
レグレッションテストを端折れるなんて楽なお仕事ですね。
674デフォルトの名無しさん:2013/08/29(木) 17:21:28.85
1.0/1.1/2.0-3.5の各バージョンで作ったexeを4.0/4.5でも動かしたい時は、
*.exe.configに下記の指定をする。
<configuration>
 <startup>
  <supportedRuntime version="v2.0.50727" sku="client"/>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
 </startup>
</configuration>

4.5で作ったexeは*.exe.configがなければ4.0でも動こうとする。
増えた命令やライブラリを使ってなければ4.0でも動作する。
この辺は2.0-3.5の関係に近い。
4.5以降に限定したいなら、以下の指定を忘れずに。
<configuration>
 <startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
 </startup>
</configuration>
675デフォルトの名無しさん:2013/08/29(木) 17:29:04.18
クラスライブラリやcomの場合はどうするんです?
奴らconfig読みませんよ
676デフォルトの名無しさん:2013/08/29(木) 17:30:31.90
俺はおとなしくターゲットバージョンでビルドしなおしてる
677デフォルトの名無しさん:2013/08/29(木) 17:45:51.29
>>675
クラスライブラリのアセンブリ(DLL)の場合読み込むexeやCLRホストに依存するから問題なし。
ただGACに登録するCAS使ってるようなのは、透過セキュリティの4.x系で問題でるかな。

comというのはregasmで登録するようなのを言ってます?
678デフォルトの名無しさん:2013/08/29(木) 18:03:04.00
>>677
はい
679デフォルトの名無しさん:2013/08/29(木) 18:24:04.29
関係ないよ
excel.exe.configってやるだけ
680デフォルトの名無しさん:2013/08/29(木) 19:37:12.46
シリアルポートと通信をするプログラムを作ろうとしています。
しかし、ハードウェアが少し特殊なのですが資料がなく困っています。
C#でシリアルポートと通信する方法は親切にもいくつも転がっているのでなんとかなりそうですが、
見ると文字列かバイト配列でデータを送信するとのこと。
とりあえず、テスト環境としてUSB-シリアルのケーブル2本とリバースの
シリアルケーブルを買って自分自身で送受信する環境を作りました。
C++のソースがあるのですが、C++がほとんどわからないので
大変なのですが、なんとか読んでみてポイントとなる部分を探しました。
で、そのC++のソースが以下の通りです。

int func(char CmdNo, char *Para, int Len){
int i;
char *p = sbuf;

//先頭3バイトは、データ長,0x01,コマンドコードをセットする
sbuf[0] = ( Len == 0 ? strlen( Para ) + 3 : Len + 3 );
sbuf[1] = 0x01;
sbuf[2] = CmdNo;

たぶん、上のコードのsbufはcharの配列を表していると思うのですが、
シリアルポートに送るにはbyteに変換しないとのこと。

これをC#で書こうと思い、これをbyte配列にしたいのですが、
仮にデータ長が3バイト、CmdNoが 
const char num = 0x10;
だとすると、

byte[] buf = {0x03, 0x01, 0x10};

と書いたのですが、これを送ると受け手側はHEX表示で「c0」と表示されます。
何かが間違っているのでしょうが、上のコードをbyte配列で表す方法を教えてください。
681デフォルトの名無しさん:2013/08/29(木) 19:43:15.66
最初から一気に作ろうと思わない
・「バイト」や「整数」の型サイズのことをきちんと把握する(serialは関係なし。メモリ内容などを見てチェック)
・文字をきちんと送信できるようにする
・文字をきちんと受信できるようにする
・任意のバイナリを送信できるようにする
・任意のバイナリを受信できるようにする
最低これを最初にやれ
送受信のテストは最初はテラタームなんかのソフトを相手にやれ
682デフォルトの名無しさん:2013/08/29(木) 20:07:34.54
フォームの右端に近い位置でコンテキストメニューを開くと
チェックボックスとか画像が右側になるんだけど
どうすれば戻る?
683680:2013/08/29(木) 21:19:46.63
>>681
時間がなく焦ってて勉強もそこそこに書き込んでしまいました。
「USB変換ケーブルを2本自分自身に挿す」というのを先週あたりに
思いついていればこんなことには・・・。

で、言われたとおりもう一度最初からテストしてみました。
Teratermで受信したデータをバイナリ表示するやり方がわからなかったので、
別のツールを探してきて、2つのcomに接続し通信しました。
もちろん、その状態でなら任意の文字列・バイナリは送れました。

自分のプログラムでも試すとうまくいかないのですが、
設定が間違っていたことに気がついて、文字列、バイナリそれぞれが送れる
ようになりました。

あとは上のプログラムの解釈が合っていればなんとかなりそうです。
もう少しがんばってみます。
684デフォルトの名無しさん:2013/08/29(木) 23:48:26.89
>>680
c0=11000000
03=00000011
RS232Cってビットのエンディアン既定されてたっけ?
まあ、相手方と自分のエンディアン確認してみたら
685デフォルトの名無しさん:2013/08/30(金) 00:12:16.52
>>684
それはさすがに決まってますw
っていうか、そのレベルの話は解決したって質問者言ってるじゃん
686デフォルトの名無しさん:2013/08/30(金) 00:32:45.72
ビットシリアルなのにエンディアンも糞もあるか。
687デフォルトの名無しさん:2013/08/30(金) 00:38:35.35
つかエンディアンってバイトごとにひっくり返るだけで、ビットごとにひっくり返るものは見たことないわ
688デフォルトの名無しさん:2013/08/30(金) 00:39:29.34
>>686
シリアル転送なんだからエンディアンというかビットオーダーの概念はあるよ。
あんたシリアル転送がどういうものか知らないだろw
689デフォルトの名無しさん:2013/08/30(金) 00:46:58.46
ポート叩いて自分で信号作り出すならビットオーダーは意識しないとダメだけど、
普通にAPI叩いて通信するならそっちが勝手にやってくれるからビットオーダーは意識する必要なし。

int数値みたいに複数バイト単位のデータを送るならエンディアンは意識しないとダメだけど、
1BYTE単位で通信するならエンディアンは意識する必要なし

>>680の場合だと、ビットオーダーもエンディアンも意識する必要なし
690デフォルトの名無しさん:2013/08/30(金) 00:52:51.95
だから、意識するもしないも232CはLSB firstって規格で決まってますw
これはハードウェアレベルで実装されていることだからポート叩いて云々って話もナンセンス。
691デフォルトの名無しさん:2013/08/30(金) 00:57:05.73
普通の相手と232Cで通信するならビットオーダーなんて気にすることはないが
シリアル通信とは書いてあっても、232Cだとは書いてないし、相手が特殊なハードだと書いてあるからなぁ
それ以外で>>680のようにc0表示になる理由が思い浮かばんが
692デフォルトの名無しさん:2013/08/30(金) 00:59:09.88
>>690
>ポート叩いて自分で信号作り出す
そのハードウエアレベルのことをソフトでやるって意味だろjk
例えばワンチップCPUでよく使われてる手法
693デフォルトの名無しさん:2013/08/30(金) 01:01:04.57
いやいやPCでI2CやSPIはありえないし、RS-485とかなら232Cと同じだし
694デフォルトの名無しさん:2013/08/30(金) 01:03:15.62
>>692
そんなのWindowsでは無理。
マイコンでも今時そんなことやる奴はいないよ。
695デフォルトの名無しさん:2013/08/30(金) 01:03:45.52
いやだから、自分がPCで232C規格だとしても、相手がそうだとは限らないわけで
相手は特殊なハードって書いてあるわけですが
696デフォルトの名無しさん:2013/08/30(金) 01:03:54.88
昔はパラレルポート/シリアルポートのピンをGPIO代わりにするのがあったよね
697デフォルトの名無しさん:2013/08/30(金) 01:04:23.51
相手の環境決めるのはアンタじゃないし断定するには至らんがな
ありえない(と思う)の域を出ないだろ
698デフォルトの名無しさん:2013/08/30(金) 01:05:22.05
っていうか質問者シリアルポートって書いてるじゃねえかw
699デフォルトの名無しさん:2013/08/30(金) 01:05:51.22
今もUSB経由でGPIOつけるボードとかあんじゃん
今時やる人がいないなら誰のために売ってるのやら
700デフォルトの名無しさん:2013/08/30(金) 01:06:46.97
>>696
FPGAライターで今も使われてるぞw
701デフォルトの名無しさん:2013/08/30(金) 01:08:12.27
>>688
ネスペもってますが、何か。
702デフォルトの名無しさん:2013/08/30(金) 01:08:14.54
>>699
GPIOって意味分かって言ってる?
703デフォルトの名無しさん:2013/08/30(金) 01:12:15.99
物理層の話はスレチとして、エンディアンは>>680の仕事で要実装。
704デフォルトの名無しさん:2013/08/30(金) 01:12:50.80
>>701
ネスペって信号は扱わないでしょ
705デフォルトの名無しさん:2013/08/30(金) 01:15:55.98
電気通信のセクションあるからあるよん
706デフォルトの名無しさん:2013/08/30(金) 01:17:57.99
ごめん。アスペと空目した。。
707デフォルトの名無しさん:2013/08/30(金) 01:18:25.84
面白いと思った・・・?
708デフォルトの名無しさん:2013/08/30(金) 01:20:15.91
>>704
扱わないわけねーだろ。一層もがっつり。
709デフォルトの名無しさん:2013/08/30(金) 01:21:21.52
つか、それほど特殊な環境だとテラターム動かないだろw
無理矢理考えたとしてもドライバレベルで232Cをエミュレートしていないと成立しないわ
710デフォルトの名無しさん:2013/08/30(金) 01:21:53.03
エンディアンっていうとバイトオーダーの事しかないと思いこんでる人がいるみたいだから
>>684の発言は、以下のように訂正させていただきます

c0=11000000
03=00000011
RS232Cってビットオーダー規定されてたっけ?
相手方と自分(232C)のビットオーダー確認してみたら
711デフォルトの名無しさん:2013/08/30(金) 01:23:33.25
BYTE1 通信長
BYTE2 0x01固定
BYTE3 コマンド種
BYTE4〜通信長 データ

全部文字列じゃなくて、↑みたいな形式を特殊って言ってるとエスパーしてみた
712デフォルトの名無しさん:2013/08/30(金) 01:27:14.07
>>708
昔は知らないが少なくとも今の試験じゃほぼ出ないよ
713デフォルトの名無しさん:2013/08/30(金) 01:27:25.57
>>711
それ、どの"特殊"に対するレスですか?
あいにくこちらはエスパーじゃないので
714デフォルトの名無しさん:2013/08/30(金) 01:37:28.31
じゃあ無理して反応しなくていいよ
必要があった時に声掛けるから
715デフォルトの名無しさん:2013/08/30(金) 01:57:00.77
>>710
232Cが軽く纏まっているから読んでみるといいよ
http://www.contec.co.jp/product/device/serial/basic.html

ビットオーダーなんて設定ないからw
716デフォルトの名無しさん:2013/08/30(金) 02:00:34.90
>>694
デバイスドライバ持ってくるか、作ればwinでもできる。
今でもwin上から直接ポート叩いてチップにコマンド送りつけることもある。
"WDK7600\general\portio\gpdread\Gpdread.c"なんかがそれ。簡単にできるよ。

マイコン=Arudino、PIC、PSoC系なら今でも一般的だよ。
717デフォルトの名無しさん:2013/08/30(金) 02:02:23.42
特殊なハードとはおそらくPICのことだな。
718デフォルトの名無しさん:2013/08/30(金) 03:08:29.72
>>690
>232CはLSB firstって規格で決まってます
どっかそれを明示してあるHPとかないか?
今まで意識したことも無いから決まってるんだろうが、いざ探すとなかなか見つからん

>>715
そこにあるのが232Cの全てだとは思えんが
設定が無いって事は規格が決まってて変えられない事だとして
それが相手方とあってるかどうかが問題なんだが

自分が232Cの規定どおりだとしても、相手もそうである保証なんてないんだよ
だからまず>>680はそれを確認する必要があるんだがな
719デフォルトの名無しさん:2013/08/30(金) 03:29:10.64
>>718
業界標準のシリアル通信チップのスペックシートだ
http://www.ti.com/lit/ds/symlink/pc16550d.pdf
パソコンに繋げる以上コレに出来ない仕様は盛り込めないから穴が空くまで鑑賞してくれ
720デフォルトの名無しさん:2013/08/30(金) 03:43:05.13
721デフォルトの名無しさん:2013/08/30(金) 07:25:41.74
これだからArduino触ったことないやつは訳にたたんのだ
722デフォルトの名無しさん:2013/08/30(金) 07:29:01.47
元質問読んだが今やってるのはPC同士でテスト通信してるだけじゃねーか
特殊なハードのことなんて忘れないと
723デフォルトの名無しさん:2013/08/30(金) 09:10:27.40
元質問の話なんてとうに終わりました!
今はRS232の話をしてんの!
724デフォルトの名無しさん:2013/08/30(金) 10:57:55.23
ここ質問を肴にするスレだっけ?
725デフォルトの名無しさん:2013/08/30(金) 11:39:20.56
質問文を読んでの便乗質問だと思えば
726デフォルトの名無しさん:2013/08/30(金) 11:45:22.69
ビットオーダーで通信できなくなるなんて初心者にしか起きない考えだからこのスレに向いてると言えば向いてる話題
727デフォルトの名無しさん:2013/08/30(金) 16:09:36.31
質問者と関係ない奴が知ったかぶりしてるだけじゃねーか。
あほくさ。
728デフォルトの名無しさん:2013/08/30(金) 18:02:01.19
いつものこと
729デフォルトの名無しさん:2013/08/30(金) 20:55:53.68
>>718
すまん、英語版のwikipedia見ると規格ではビットオーダーは決められてないと書いてあるねw
俺はマイコン関係も扱ってるんで手持ちのデータシートを見てみると、
確かにビットオーダーが設定できるものもある。

ただ、MSBから送信するデバイスは見たことないね。
規格で決まってなくてもLSBから送るのが事実上の標準だと思う。

>>716
無理だって。
1200bpsだって±3%以内の誤差で1/1200秒ごとにポート出力を変調する必要がある。
730デフォルトの名無しさん:2013/08/30(金) 20:58:26.39
今まさに自分の認識がひっくり返ったはずなのにどうしてこう傲慢に慣れるんだ?
頭の致命的な部分が短絡してるのか?
731デフォルトの名無しさん:2013/08/30(金) 21:02:21.68
典型的な経験なし知識だけタイプだね
732デフォルトの名無しさん:2013/08/30(金) 21:17:35.25
>>716
ついでに、マイコンでもソフトでUARTなんて普通はやらない。
理由は>>729に書いた通りタイミングがシビアだから。

ちょっと前はI2CやSPIじゃななくて「俺様シリアル転送」でデータをやり取りする必用がある
ICが結構あって、そういうのはもちろんソフトで実装するが、それがソフトで可能なのは
その手のシリアル通信はクロック付き(UARTじゃない)だから。
733デフォルトの名無しさん:2013/08/30(金) 21:45:48.13
>>732
だから使ってみろって。今でも使ってるから。
自分で実装するんじゃなくて、ソフトシリアルのライブラリ使う形になるけど一般的。
734デフォルトの名無しさん:2013/08/30(金) 21:52:46.77
>>733
馬鹿だろお前。
じゃあ具体的な型番とか製品名とか言ってみろ。

ソフト××(ハードウェアのシミュレート)っていうのは、コストの関係で
資源が限られたマイコンを使って製品を作る場合か、そうでなければ後はホビーストが
腕試しで遊びでやるぐらい。

ライブラリてw
そんなの買うぐらいなら普通にUARTがたくさん内蔵されたマイコン(そんなの今時
いくらでもある)使うよ。

何度も言ってるようにそうでなくても制約が大きいのに。
知ったようなこと言うなよ
735デフォルトの名無しさん:2013/08/30(金) 22:01:47.44
自分が思ってる常識が世の中の全てだと思ってるタイプだな
736デフォルトの名無しさん:2013/08/30(金) 22:03:52.09
>>734
ばーかばーか
737デフォルトの名無しさん:2013/08/30(金) 22:03:57.21
頭の大事な部分が実装されてないんでしょうね
738デフォルトの名無しさん:2013/08/30(金) 22:05:55.97
UARTなんてFIFOが数バイトついてるくらいで基本ソフトだろ
739デフォルトの名無しさん:2013/08/30(金) 22:09:10.89
>>738
FIFOがついていたらその時点でソフトじゃないんだがカス
740デフォルトの名無しさん:2013/08/30(金) 22:18:03.59
え?Arduinoのソフトシリアルなんて普通にあるよ
741デフォルトの名無しさん:2013/08/30(金) 22:18:55.99
>>740
ねーよバカ
742デフォルトの名無しさん:2013/08/30(金) 22:20:18.67
>>739
へっ?
743デフォルトの名無しさん:2013/08/30(金) 22:22:20.49
ゾンビ映画になっちゃったw
744デフォルトの名無しさん:2013/08/30(金) 22:23:19.56
分かった
異世界から書いてんだろ
745デフォルトの名無しさん:2013/08/30(金) 22:26:01.33
746デフォルトの名無しさん:2013/08/30(金) 22:28:50.94
>>734
Arduionoは標準ライブラリ #include "SoftwareSerial.h"
PSoCは標準ライブラリTX8など

何に製品に使われてるかなんて知るかよ。完全にアスペじゃねーかwww
747デフォルトの名無しさん:2013/08/30(金) 22:29:36.21
分かった
これは悪い夢です!
748デフォルトの名無しさん:2013/08/30(金) 22:29:39.56
>>745
だから、それはソフトであってソフトじゃないんだよ。
TeraTermのマクロで出力してるからソフト制御といっているのと同レベル。
749デフォルトの名無しさん:2013/08/30(金) 22:33:38.33
ソフトじゃないのか?マジか
騙された
訴えたら勝てる?
750デフォルトの名無しさん:2013/08/30(金) 22:34:44.50
詐欺師と同レベルの煙に巻いた物言いでなにをおっしゃる
751デフォルトの名無しさん:2013/08/30(金) 22:37:14.06
Arduionoには2byteのFIFOがついてる。
タイミングなんてちょっとくらい適当でも問題ない。
ソフト制御だなんて笑わせるなよw
752デフォルトの名無しさん:2013/08/30(金) 22:40:32.59
俺には何が正しいのやらさっぱりわからんw
753デフォルトの名無しさん:2013/08/30(金) 22:41:01.37
夏休みの宿題か?
レベル的に、仕事じゃないよな?
754デフォルトの名無しさん:2013/08/30(金) 22:41:35.42
それはソフトであってソフトじゃないんだよ。って言われても
さっき事実上の標準とか苦しい言い訳をしゃxべった人に言われてもね〜ww
755デフォルトの名無しさん:2013/08/30(金) 22:42:53.63
>>754
完全論破されたからって見苦しいぞクズ野郎
756デフォルトの名無しさん:2013/08/30(金) 22:43:28.72
ところで、Arduino使ってる奴は全員死ね
お前らのせいでMakerFesから多様性が失われて腐っただろうが
757デフォルトの名無しさん:2013/08/30(金) 22:44:05.29
>>755
事実上の標準だと思うんですぅ〜
758デフォルトの名無しさん:2013/08/30(金) 22:46:28.34
>>746
それは.NETで言ったらSerialPortクラスみたいなもの。
ハードウェアを隠蔽して使いやすくしてるだけ。

当たり前だがシリアル転送そのものをソフトで制御してるんじゃありませんよ。
何度も言うように、今時そんなことをする意味なんかまったくない。
759デフォルトの名無しさん:2013/08/30(金) 22:47:01.55
と思うんです
760デフォルトの名無しさん:2013/08/30(金) 22:48:17.41
>>756
お前半年くらい前にVIPで同じこと言ってなかったか?
761デフォルトの名無しさん:2013/08/30(金) 22:49:55.79
っていうか、>>746はそもそもシリアル転送がどういうものか分かってないだろ。
調歩同期がどういうものかも
762デフォルトの名無しさん:2013/08/30(金) 22:50:01.79
ハードウェアのシリアルは0と1番ピンだけじゃないの?
763デフォルトの名無しさん:2013/08/30(金) 22:50:23.41
>>758
ハードウエアを使うのはこれとは別にあるんだよ。シリアル転送そのものを制御してる
ttp://pastebin.com/rKhasPHu
764デフォルトの名無しさん:2013/08/30(金) 22:51:21.37
>>763
シリアル転送のハードを制御してる
の間違いだな
765デフォルトの名無しさん:2013/08/30(金) 22:52:28.42
>>764
その通り
766デフォルトの名無しさん:2013/08/30(金) 22:53:40.00
>>764
例えばReadだったら↓みたいに、1ビットずつポート呼んでBYTEにしてるんだよ。だからハードのUART扱うのは別にあるって・・・

// confirm that this is a real start bit, not line noise
if (digitalRead(_receivePin) == LOW) {
// frame start indicated by a falling edge and low start bit
// jump to the middle of the low start bit
delayMicroseconds(bitDelay / 2 - clockCyclesToMicroseconds(50));

// offset of the bit in the byte: from 0 (LSB) to 7 (MSB)
for (int offset = 0; offset < 8; offset++) {
// jump to middle of next bit
delayMicroseconds(bitDelay);

// read bit
val |= digitalRead(_receivePin) << offset;
}
767デフォルトの名無しさん:2013/08/30(金) 22:54:39.75
>>766
だからハードから読んでるんだろ?
768デフォルトの名無しさん:2013/08/30(金) 22:54:46.86
Arduinoの周波数なら9600bpsくらいソフトでシリアル通信できるっしょ
769デフォルトの名無しさん:2013/08/30(金) 22:56:04.93
>>763
ホビーストがそういうコードを書くケースはあるよ。
それは否定してない。

否定してるのは>>692が言うほど、よく使われる手法なんかじゃないってこと。

そういうので言ったら、マイコン使ってソフトでNTSC信号を合成してブロック崩しとか
作っちゃう人もいるけど、あれは遊びでやってるんであってよく使われる手法じゃない
770デフォルトの名無しさん:2013/08/30(金) 22:58:38.15
>>769
お前の世界ではホビーなんだろうな。
ならば、世の中ホビーだらけだけどな。
771デフォルトの名無しさん:2013/08/30(金) 23:02:07.40
>>770
だから、じゃあ遊び以外でそれをやる意義はどこにあるんですか?
どこの企業だってコスト意識厳しくなってるのにどこにそんな無駄を許す理由があるんだ。
本当馬鹿だな。馬鹿でなきゃガキだ
772デフォルトの名無しさん:2013/08/30(金) 23:07:03.65
え?結局ソフトウェアてシリアルできるの?
773デフォルトの名無しさん:2013/08/30(金) 23:11:48.00
>>772
もちろんやって出来ないことはないが、リソースを使いまくるから普通はやらない。

ソフトでUSBは遊びでやってる人もっと多いと思うが、こっちもあくまで遊びであって
実用にはなりません。
774デフォルトの名無しさん:2013/08/30(金) 23:12:37.86
いうまでもないけどWindowsではどう頑張っても無理だよw
775デフォルトの名無しさん:2013/08/30(金) 23:12:41.00
なんだよ
できるのかよ
騙された
776デフォルトの名無しさん:2013/08/30(金) 23:15:57.63
Arduinoで赤外線LEDでdelay入れてリモコンとか作ったことあるけど
あれもソフトだよな。あれをハードとか言われたら困るし。
777デフォルトの名無しさん:2013/08/30(金) 23:19:09.76
ハード実装のを優先するのが普通だけど、使えないケースが多くてソフトになること多いな
778デフォルトの名無しさん:2013/08/30(金) 23:20:02.31
>>771
そういうのって一般的な製品に組み込む場合じゃないの?
生産設備とかなら多少リソース食うくらい気にならないし
多少高くなっても余裕があるほうがいいし。
779デフォルトの名無しさん:2013/08/30(金) 23:23:15.32
>多少高くなっても余裕があるほうがいいし。
だから馬鹿馬鹿しくてソフトなんかだやらないんですよ。

UARTが3つも4つもついてる32bitマイコンが300円とかで買える時代に
ソフトでUARTってそれどんな罰ゲームだよって話。
780デフォルトの名無しさん:2013/08/30(金) 23:26:30.65
>>779
なんだ。そういう話か。
UARTがついてない高性能マイコンを想定してたけど
そんなマイコン無いわなw
781デフォルトの名無しさん:2013/08/31(土) 00:16:12.22
今どき50円のマイコンでもUARTついてるよね、って最初の質問なんだったっけ?
782デフォルトの名無しさん:2013/08/31(土) 00:20:51.98
783デフォルトの名無しさん:2013/08/31(土) 00:29:32.98
ハードのことは分からないけど標準ライブラリであるなら使われてるんでしょ
784デフォルトの名無しさん:2013/08/31(土) 00:38:53.24
つか、パソコンと通信している時点で、どんな実装だろうが特殊な仕様じゃないってことだわ
テラタームの設定で送受できるレベルだ
785デフォルトの名無しさん:2013/08/31(土) 00:40:02.90
ここはRS-233C#スレ
786デフォルトの名無しさん:2013/08/31(土) 06:22:44.38
C#erでも少しはハードも知らないとダメだよ
787デフォルトの名無しさん:2013/08/31(土) 06:28:44.53
それより空気の読み方を知った方がいいぞ
788デフォルトの名無しさん:2013/08/31(土) 06:36:27.82
空気より技術だよね
789デフォルトの名無しさん:2013/08/31(土) 09:05:04.97
シリアルとか業務だと割と使うけどね
790デフォルトの名無しさん:2013/08/31(土) 10:51:57.80
申し訳ないが仕事が出来ても他人と衝突しかしない奴はNG
791 ◆QZschizo.ptH :2013/08/31(土) 11:10:19.81
見かけ上衝突していたとしても,そこから新しい価値観が生まれることが多々あるというのに,仲良し阿部ちゃんクラブ,今まともに働いているか?
http://www.amazon.co.jp/dp/4822247570/
792デフォルトの名無しさん:2013/08/31(土) 11:12:08.08
QZは人間として欠陥があるのでBAN
793 ◆QZschizo.ptH :2013/08/31(土) 11:16:14.60
>>792
具体的に
794デフォルトの名無しさん:2013/08/31(土) 11:22:26.68
こういう不毛な罵り合いが続くと変なのを召喚してしまうのはよくあること
795デフォルトの名無しさん:2013/08/31(土) 12:12:09.99
今回に関しては最初から変なのが不毛な罵り合いをしてただけ
796デフォルトの名無しさん:2013/08/31(土) 12:14:08.89
自演ぽいのもあるな
797デフォルトの名無しさん:2013/08/31(土) 12:20:40.37
流出希望
798デフォルトの名無しさん:2013/08/31(土) 12:47:13.40
質問
C++(ネイティブ)のDLLをC#で使うソリューションを作ってます
C++でビルドしたDLLをC#のフォルダに出力するには、C++で出力先をC#のフォルダに設定するしかないですか?

参照の追加 → 今回は.netのDLLでないからこの方法使えない
DLLをC#プロジェクトに追加して出力ディレクトリにコピー設定 → ビルドによるDLL変更が反映されないからこの方法は使えない
799デフォルトの名無しさん:2013/08/31(土) 12:51:38.64
ビルドイベントを活用して古かったらコピーでもするようにしておけばいい
800デフォルトの名無しさん:2013/08/31(土) 12:55:16.22
その方法の方がいいかも
C#のプロジェクト側から何が使われてるかひと目で分かるようにしたいというのが発端です
801デフォルトの名無しさん:2013/08/31(土) 12:59:12.81
ちなみにだがwinのcopyコマンドとxcopyコマンドは日時を比較してコピーできない
robocopyを使うか、MinGWやCygwinについてるcpを使うのが手軽
自前で用意してもいいけどさ
802デフォルトの名無しさん:2013/08/31(土) 13:05:42.17
> DLLをC#プロジェクトに追加して出力ディレクトリにコピー設定
したあと、csproj直接修正してパスにマクロ混ぜれば行けたような
803デフォルトの名無しさん:2013/08/31(土) 13:27:09.83
>>802
linkタグを追加で行けました。ありがとう

<Content Include="../hogehoge.dll">
<Link>hogehoge.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
804デフォルトの名無しさん:2013/08/31(土) 13:28:55.87
昨日から今日にかけて最も輝いていたレス
805デフォルトの名無しさん:2013/08/31(土) 14:30:25.92
>>801
xcopy /D
806デフォルトの名無しさん:2013/08/31(土) 14:36:19.13
二年以内にwindows phoneが流行りだすと聞いたのでアプリを作りたいと思ったのですが
どのAPIを使えばWP用のアセンブリを作れますか?
807デフォルトの名無しさん:2013/08/31(土) 14:50:09.58
ggrks
windows phone 開発環境構築
808デフォルトの名無しさん:2013/08/31(土) 15:04:10.51
二年前にもまるで同じことを聞いた気がする
809デフォルトの名無しさん:2013/08/31(土) 19:42:04.50
これから流行るってところ?
壮大なギャグだねぇ!
810デフォルトの名無しさん:2013/08/31(土) 20:44:32.30
これからはPHPが更に流行る予感

C#はダメだなこれ
811デフォルトの名無しさん:2013/08/31(土) 20:45:35.27
C#の代わりにPHP使ってwindowsアプリ作ろう!
812デフォルトの名無しさん:2013/08/31(土) 21:12:28.34
VB → C# → ?

何に変わると思う?
813デフォルトの名無しさん:2013/08/31(土) 21:16:20.55
GUIで作られたアプリへの入力を自動化するプログラムを作りたい(そのアプリは特にプラグイン機能などはありません)のですが
そういった処理はどうすれば可能なのでしょうか
自分が思いつく限りではウィンドウハンドルを取得してメッセージを送信してGUI操作を真似する事なのですが
定石になってるような、より良い方法はありますか?
814デフォルトの名無しさん:2013/08/31(土) 21:17:22.73
キーボード、マウスイベントでいいじゃん。
815デフォルトの名無しさん:2013/08/31(土) 21:52:51.96
>>813
おれはしらん
816デフォルトの名無しさん:2013/08/31(土) 22:04:12.54
>>814
これのAPI
別にWM系メッセージ送りつけてもいいけど、ダメなアプリもあるから。
817デフォルトの名無しさん:2013/08/31(土) 22:25:49.34
フリーのキーボード/マウスマクロなソフトのスクリプトを書くのが一番楽かも。
818デフォルトの名無しさん:2013/09/01(日) 09:00:59.35
>>813
UIAutomation
819デフォルトの名無しさん:2013/09/01(日) 14:06:29.59
sendkeysでいいんじゃね
820デフォルトの名無しさん:2013/09/01(日) 17:54:50.76
UWSC
821デフォルトの名無しさん:2013/09/02(月) 11:50:33.10
HttpWebRequest myRequest1 = (HttpWebRequest)WebRequest.Create(url);

myRequest1.ContentType = "application/x-www-form-urlencoded";

myRequest1.Method = "POST";
 

byte[] data = Encoding.UTF8.GetBytes("mail=メールアドレス&amp;password=パスワード");



myRequest1.ContentLength = data.Length;
        //ここでエラー    
myRequest1.GetRequestStream().Write(data, 0, data.Length);



myRequest1.GetResponse();

このコードをループで実行したら3回目ぐらいで myRequest1.GetRequestStream().Write(data, 0, data.Length);
ここでタイムアウトしますなんでかわかりますか?
教えてください!よろしくお願いします><
822デフォルトの名無しさん:2013/09/02(月) 11:53:35.28
HttpWebRequest myRequest1 = (HttpWebRequest)WebRequest.Create(url);

myRequest1.ContentType = "application/x-www-form-urlencoded";

myRequest1.Method = "POST";
 

byte[] data = Encoding.UTF8.GetBytes("mail=メールアドレス&amp;password=パスワード");



myRequest1.ContentLength = data.Length;
        //ここでエラー    
myRequest1.GetRequestStream().Write(data, 0, data.Length);



myRequest1.GetResponse();

このコードをループで実行したら3回目ぐらいで myRequest1.GetRequestStream().Write(data, 0, data.Length);
ここでタイムアウトしますなんでかわかりますか?
教えてください!よろしくお願いします><
823デフォルトの名無しさん:2013/09/02(月) 11:56:09.49
エラー内容書け。改行うざい
824デフォルトの名無しさん:2013/09/02(月) 11:58:34.93
ランダムなフルーツの配列をフルーツ名でソートして別々の配列に格納するLINQはどうやって書けばいいですか
リンゴ、リンゴ、バナナ、トマト、リンゴが合った場合
"リンゴ" --> ringo, ringo (サイズ2の配列)
"バナナ" --> banana (サイズ1の配列)
"トマト" --> tomato (サイズ1の配列)

var sortedFruits = from fruit in fruits
          group fruit by fruit.Name into fruitNames

みたいな感じでお願いします。
825デフォルトの名無しさん:2013/09/02(月) 12:06:47.82
宿題は自分でやれ
826デフォルトの名無しさん:2013/09/02(月) 14:03:01.94
自分でわからないから聞いてるんでしょ
ふざけないで下さい
827デフォルトの名無しさん:2013/09/02(月) 14:31:17.33
>>823
タイムアウトって書いてあるじゃん。鯖側の接続MAXに達してるとか?
828デフォルトの名無しさん:2013/09/02(月) 14:41:47.11
>>824
var sortedFruits= fruits.OrderBy( f => f.Name ).GroupBy( f => f.Name ).Select( g => g.ToArray() ).ToArray();

かな
知らんけど
829デフォルトの名無しさん:2013/09/02(月) 15:05:33.11
>>826
マジで宿題じゃねーか。知恵遅れで聞いてろよ
830デフォルトの名無しさん:2013/09/02(月) 20:15:39.22
一応
831デフォルトの名無しさん:2013/09/02(月) 23:19:59.00
>>822
GetRequestStreamで取ってきたStreamをCloseすればどう?
832デフォルトの名無しさん:2013/09/04(水) 10:14:45.15
C#でAndroid用の簡単なアプリ作ろうと思ったらMono使うのが一番でしょうか?
EclipsでJavaをいじってみたのですが、あまりに不安定過ぎて挫折しかかってます。
VSが優秀過ぎるってのもあるのでしょうが。
833デフォルトの名無しさん:2013/09/04(水) 12:01:40.27
ザーメンスタジオ+VSプラグイン
834デフォルトの名無しさん:2013/09/04(水) 15:18:39.10
現在シリアルポートがCOM4になってるとして、デバイスマネージャーから
COM1(使用中でなければ)変更できます。
これをC#でやることはできますか?
835デフォルトの名無しさん:2013/09/04(水) 15:28:17.78
できます!
836デフォルトの名無しさん:2013/09/04(水) 15:41:45.22
やりかたきいてんだろこら
アスペか
837デフォルトの名無しさん:2013/09/04(水) 16:23:21.10
がんばればできます!
838デフォルトの名無しさん:2013/09/04(水) 16:41:45.46
IWDFNamedPropertyStore2で設定
839デフォルトの名無しさん:2013/09/04(水) 16:56:29.35
またアスペ連呼厨か。
840デフォルトの名無しさん:2013/09/04(水) 17:38:04.91
なんにでも厨をつけるな。
841デフォルトの名無しさん:2013/09/04(水) 18:00:15.80
厨って言った奴が厨
842デフォルトの名無しさん:2013/09/04(水) 18:01:42.08
アスペだらけだなここは。
843デフォルトの名無しさん:2013/09/04(水) 18:07:42.59
アスペクト指向ってどういう概念なんですか?
844デフォルトの名無しさん:2013/09/04(水) 18:16:47.77
夏の〜お嬢さん〜
845デフォルトの名無しさん:2013/09/04(水) 19:16:52.96
>>838
面白そうだからやってみたが途中で詰んだ。難しいなw
846デフォルトの名無しさん:2013/09/04(水) 22:26:01.58
スレタイで思ったんだが、フラットって半音下げる♭だろ?
ttp://www.shinko-music.co.jp/gakufu/1_3.html

Cフラットは、=C♭=B# となる。

C#は「シーシャープ」だぞ。
C#=D♭(ディーフラット) だ。
847デフォルトの名無しさん:2013/09/04(水) 22:31:27.41
>>846
音は同じだけど音楽ではC#と表記すべきところをD♭と表記することはない
C#はCに調号#を付けたものであり、Dにフラットを付けたものではないから
848デフォルトの名無しさん:2013/09/04(水) 22:59:31.33
C++++という意味らしいよ
849834:2013/09/04(水) 23:02:00.12
>>838
若干敷居が高そうですが、がんばってみます。ありがとうございました。
850デフォルトの名無しさん:2013/09/04(水) 23:41:30.94
>>847
意味不明。

ところでスレタイの"ふらっと"は♭のことじゃないのかな。
851デフォルトの名無しさん:2013/09/04(水) 23:46:02.25
どーでもいいわw
852デフォルトの名無しさん:2013/09/04(水) 23:51:36.80
>>850
「ふらっと立ち寄る」みたいに使う「ふらっと」と、♭をかけてる。
853デフォルトの名無しさん:2013/09/05(木) 00:09:25.94
>>848
そうなのか。ずっとC++を斜め上にしたものかと思ってた。
854デフォルトの名無しさん:2013/09/05(木) 00:14:27.94
それはそれであってる。
855デフォルトの名無しさん:2013/09/05(木) 00:23:24.06
>>853
これが一番納得行った
856デフォルトの名無しさん:2013/09/05(木) 01:32:39.32
ヘジがC++++つってんだからC++++なんだよ。
857デフォルトの名無しさん:2013/09/05(木) 01:52:31.08
>>856
++
++  → ♯ って事なんだろうね
858デフォルトの名無しさん:2013/09/05(木) 02:47:30.23
>>852
知らなかったw
859デフォルトの名無しさん:2013/09/05(木) 03:22:10.22
>>852
その♭がどこからやって来たのかが分からない
860デフォルトの名無しさん:2013/09/05(木) 03:46:36.84
>>859
「♭」は音楽記号「♯」つながりで、
「ふらっと」は初心者でも気軽にってとこからじゃないかな。
861デフォルトの名無しさん:2013/09/05(木) 04:12:17.98
♭(半音下げる)と♯(半音上げる)は逆の意味なのに
なんで C# が♭と繋がるのか分からない
862デフォルトの名無しさん:2013/09/05(木) 05:47:50.16
言葉遊びが分からない人には無理
863デフォルトの名無しさん:2013/09/05(木) 06:18:18.72
>>859
ふらっとやってきたのさ
864デフォルトの名無しさん:2013/09/05(木) 06:19:04.26
どうでも良い話題はレス進むなw
865デフォルトの名無しさん:2013/09/05(木) 07:40:56.18
>>850
音楽のこと知らないならC#=D♭(ディーフラット) とか馬鹿な知ったかしない方がいいよ
音楽記号覚えたての小学生がはしゃいでるように見えるから
866デフォルトの名無しさん:2013/09/05(木) 07:59:01.96
>>865
え、どう違うんですか?まさか周波数(笑)ですか?
867デフォルトの名無しさん:2013/09/05(木) 08:08:49.02
>>866
まったく同じだったら2つの表記方法は必要ないだろ馬鹿か
半音上がると半音下がるで音の表現方法がぜんぜん違うんだよ
具体的には#は明るい音、♭は暗い音になるように表現する
868 ◆QZschizo.ptH :2013/09/05(木) 08:14:46.34
>>866
キルンベンガー
ヴェルクマイスター
でググれ

>>867
ピアノならどうするんだ?
869デフォルトの名無しさん:2013/09/05(木) 08:15:16.36
>>867
でも音は同じでしょ?
意味わからないですね
870デフォルトの名無しさん:2013/09/05(木) 08:15:53.72
あ、屑に構って遊んでたら本物が来たw
871 ◆QZschizo.ptH :2013/09/05(木) 08:17:55.35
>>870
好みの釣り餌がバレたようだ
872デフォルトの名無しさん:2013/09/05(木) 10:05:30.91
ピアノみたいな平均律の楽器だと音は同じになってしまうな
平均律の楽器のが少ないけどね。
873デフォルトの名無しさん:2013/09/05(木) 10:39:30.83
>>867
表現方法の違いが生まれることは事実だが、
それは経験者にしか理解できない話だから言及を避けた
言ってもどうせ理解されないばかりか「そんなのオカルト」という反論が目に浮かぶからな

>>869
「楽譜の目的には音の高さを示すだけでなく音の役割を示すことも含まれているから」というのが答え。
例えば↓の楽譜がわかりやすい。
http://xn--i6q789c.com/gakuten/img/keikaon.gif
右にシャープが二つあるが、これをフラットで書き換えたら音が連続的に上昇しているという楽譜の意図が伝わりにくくなるだろ。

もう一つの答えもある。
ダブルシャープやダブルフラットという記号もあるが、これらは音の高さという見地からは全く必要のない記号だと言えるだろう。
ではなぜこんな記号が用意されているのかという点にもシャープとフラットの使い分けの答えは含まれている。
874デフォルトの名無しさん:2013/09/05(木) 10:57:38.96
いつから音楽スレになったんだ?
875デフォルトの名無しさん:2013/09/05(木) 11:05:08.59
スレタイつけたときからじゃね?
半角#はシャープじゃなくて単価記号だよ、
とか言い始めたら簿記スレになるのだろうか
876デフォルトの名無しさん:2013/09/05(木) 12:14:31.36
>>867
さっぱり意味が分らない。
ここの技術板住人でも分るようにピアノやキダーでどう弾き分けるのか説明してくれ。
877デフォルトの名無しさん:2013/09/05(木) 13:05:00.69
ギターなら指をスライドさせることができるじゃないか
878デフォルトの名無しさん:2013/09/05(木) 13:05:54.95
232が終わったと思ったら音楽かよ
879デフォルトの名無しさん:2013/09/05(木) 13:16:51.25
末期だなもう
880デフォルトの名無しさん:2013/09/05(木) 13:57:59.05
>>877
フレットがあるから厳しい
881デフォルトの名無しさん:2013/09/05(木) 14:11:20.22
だれか質問するんだ
882デフォルトの名無しさん:2013/09/05(木) 14:43:36.54
お前を消す方法
883デフォルトの名無しさん:2013/09/05(木) 16:39:06.03
>>865>>867>>873
C#とD♭は周波数的に同じだがニュアンスが違うってことか。
まあそれはそうなのかと感心する。

しかし、だからといってそれがC#がフラットと関連する説明に
なっているのか?
884デフォルトの名無しさん:2013/09/05(木) 16:47:54.33
音楽の授業はまだまだつづきます
885デフォルトの名無しさん:2013/09/05(木) 16:49:28.93
つづきはメルマガで配信
886デフォルトの名無しさん:2013/09/05(木) 16:53:42.14
>>883
初心者ってニュアンスを出すのに「ふらっと」って言葉を使っているんだと説明されただろうに・・・
887デフォルトの名無しさん:2013/09/05(木) 16:55:35.01
>具体的には#は明るい音、♭は暗い音になるように表現する

周波数が同じなのに、明るいだの暗いだの全然具体的な表現じゃない。
さっさと具体的にピアノで明るい音(C#)と暗い音(D♭)の引き分け方を教えろ。
888デフォルトの名無しさん:2013/09/05(木) 17:01:09.61
だから周波数が同じなのは平均律だって。
純正律こそが調和のとれた音楽だ。
889デフォルトの名無しさん:2013/09/05(木) 17:08:17.86
説明してる本人が平均律が何か分ってないから説明できるわけがない。
890デフォルトの名無しさん:2013/09/05(木) 17:10:58.50
>>888
ピアノでどうやって弾き分けるか聞いてんだが。馬鹿なの?
できないならできないと言えよ。具体的に表現できるんじゃなかったのか? この嘘つきが。
891デフォルトの名無しさん:2013/09/05(木) 17:16:51.15
プログラミングの話しようぜ!
892デフォルトの名無しさん:2013/09/05(木) 17:37:12.24
CとJ を打鍵した時の音を聞き分けられないものはこの場から去れ
893デフォルトの名無しさん:2013/09/05(木) 18:09:38.43
あれ板間違えた
894デフォルトの名無しさん:2013/09/05(木) 18:11:15.99
問題
 時報は A (ラ) = 440Hz と、1オクターブ上の A (ラ) = 880Hz であるが、
 この間の音階の周波数を列挙するプログラムを書け
ヒント
 ・1オクターブ上がるという事は、周波数が2倍になるということである
 ・A → 1オクターブ上の A
  の間には、
   A#, B, C, C#, D, D#, E, F, F#, G, G#
  がある
895デフォルトの名無しさん:2013/09/05(木) 18:18:44.68
2^(x/12) だよね
896 ◆QZschizo.ptH :2013/09/05(木) 21:53:22.34
>>873
>ダブルシャープやダブルフラットという記号もあるが、
どちらかというと調性がらみだねえ。Des-dur と Cis-dur はどう説明する?
897 ◆QZschizo.ptH :2013/09/05(木) 21:54:45.32
>>888
>純正律こそが調和のとれた音楽だ。
しかし転調ができない
転調がない音楽など糞の役にも立たん
898デフォルトの名無しさん:2013/09/05(木) 21:55:51.52
同じ周波数の単音で明るいも暗いもない。明るいだの暗いだのは旋律、和音での話しだ。
899デフォルトの名無しさん:2013/09/05(木) 22:02:23.72
プログラミングの話しようぜ!
900デフォルトの名無しさん:2013/09/05(木) 22:03:35.25
できないんだろw
901デフォルトの名無しさん:2013/09/05(木) 22:10:20.98
SQLサーバーかるーくしかやってないのにいきなりがっつりデータベース使うシステムのコーディングやれってさ
しかもデータベースの研修を受けたのは自分しかいない状況でのチーム開発だってさ
トランザクションとかもう訳分かめだぜ
クラス図もあんまりよく分かってないのにこれから6画面分の書けってそりゃねえよ
何からもうどうしていいか分からない状態なんだけど、何からどうしたらいい?
一応外部設計の仕様書は出来合いのがある
902デフォルトの名無しさん:2013/09/05(木) 22:11:48.20
研修うけたのにトランザクションも分からないの?
903デフォルトの名無しさん:2013/09/05(木) 22:14:37.33
「プログラムする」と心の中で思ったならッ!
その時既にプログラムの実行は終わっているんだッ!
904デフォルトの名無しさん:2013/09/05(木) 22:14:56.51
http://ideone.com/P6oXjn

>>894をCで書いたけど、こういうのをC#で書くとどうなる?
905デフォルトの名無しさん:2013/09/05(木) 22:15:29.54
>>902
だってselect句とか使ってただけだぜ?
しかもマネジメントスタジオでいじってたからコーディングだとどうやるのかとかまた別問題だろうし

あ、c#でコーディングします
906デフォルトの名無しさん:2013/09/05(木) 22:16:23.92
DB分らんって一プロジェクトに基本情報取得者一人もいないのかよw
907デフォルトの名無しさん:2013/09/05(木) 22:19:54.28
>>904
そのぐらいの分量のコードでC系言語で
呼び出す関数とか配列の宣言の仕方とかぐらいしか差が出る余地がないじゃん…
908デフォルトの名無しさん:2013/09/05(木) 22:27:27.77
下の方でやってるのは仕事でなく詐欺だからな
909デフォルトの名無しさん:2013/09/05(木) 22:28:28.60
>>904
まあコンパクトさを競うんじゃなきゃ、きちんと音階クラスを定義してそいつに
仕事させるのがC#というかOOP言語らしい書き方かな。

インクリメント/デクリメント演算子で値が変る幅を半音にするか1音階にするか悩みそうだ
910デフォルトの名無しさん:2013/09/05(木) 22:29:57.43
ただ仕様要件にC#と入れた客はまともだ。

客が一番技術レベル高いのではないか。
911デフォルトの名無しさん:2013/09/05(木) 22:30:03.69
>>906
7月から言語研修受けてる新人5人グループでございます
うち一人は入社前はエクセルすら触ったことなくコピペも知らなかった人間で、
もう一人はググったり自分で勉強したりが全くできなくてすぐ混乱パニック居眠りをする人間
まともな残り二人もフォームアプリケーションでのコーディングは1、2回程度
そして残された自分
912デフォルトの名無しさん:2013/09/05(木) 22:31:54.61
あ、ちなみに>>901は研修の一環で社内でも初めてのグループ開発研修だそうです
だから上司すらよく分かってない可能性があるんだぜ\(^o^)/
書くの忘れてたごめんなさい
913デフォルトの名無しさん:2013/09/05(木) 22:32:49.57
10 PLAY "C+D-"

こんなこともC#はできないの?
914デフォルトの名無しさん:2013/09/05(木) 22:34:37.26
研修かよw 勝手にやってろ。
915デフォルトの名無しさん:2013/09/05(木) 22:37:14.21
丸投げ無茶振り研修はITの基本ですよね
916デフォルトの名無しさん:2013/09/05(木) 22:42:10.74
>>914
最初にちゃんと書くべきだったね、ホントごめんなさい
こんな状況で全13画面あって、誰一人やったことないXMLも使わないといけなくて、
今月末に仕上げろですよ、マジ助けて

>>915
ホントにこういうのがデフォなの?
それって力がつくからとかそういう理由…じゃないよね?
917デフォルトの名無しさん:2013/09/05(木) 22:43:41.15
>>916
月末までなら楽勝じゃん
918デフォルトの名無しさん:2013/09/05(木) 22:47:06.32
なんという楽な研修。おれの研修なんて3ヶ月間平均睡眠4時間の合宿だったぜ。
ゆとりだと辞めちゃうんだろうな。
919デフォルトの名無しさん:2013/09/05(木) 22:50:25.48
> 誰一人やったことないXML
……?
920デフォルトの名無しさん:2013/09/05(木) 22:54:00.05
自分で調べる気が全くないのが驚き。開発の仕事向いてないだろ。
みかかでーたとか丸投げ会社の研修か?
921デフォルトの名無しさん:2013/09/05(木) 23:01:12.73
>>917
フォームの使い方から教えないといけないのがいても?
自分でも勉強足りてないから勉強しながらでないとできないのに
でも、案ずるより産むが安しなのかな

>>919
使ったことないと言えばいいのか作ったことないと言えばいいのか、、基本情報の知識程度にしか知らない

>>920
いや、調べてるんだけどさ
なんかもう色々やることとか多すぎて目移りして何から手をつけていいかが困ってる
922デフォルトの名無しさん:2013/09/05(木) 23:03:09.44
>>913
うちは
10 NEW CMD
20 CMD PLAY "C+D-"
だったかな
923デフォルトの名無しさん:2013/09/05(木) 23:04:29.00
>>918
なんのかんの言いながら部活に近い感覚あるからそこはぬるいと思ってるよ
いや、部活のがまだ教育体系しっかりしてたなw
924デフォルトの名無しさん:2013/09/05(木) 23:38:41.40
迷わずググれよ
ググればわかるさ
925デフォルトの名無しさん:2013/09/06(金) 00:06:21.65
>>921
ただただMSDNだけを読め。
926デフォルトの名無しさん:2013/09/06(金) 00:10:17.54
その状態なら、役割分担を明確にして自分の守備範囲だけをまずやっつければいいんじゃ。
個別のことはググればいくらでも資料が出てくるんだし。‥‥いい時代になったもんだよな。
927デフォルトの名無しさん:2013/09/06(金) 08:00:25.39
>>924-926
ありがとう
今日クリティカルパスとか作るから、そこでの役割に沿って頑張る
変に周りのことを気にしたりしないようにするよ
928デフォルトの名無しさん:2013/09/06(金) 09:04:05.56
>>927
そういう状態で「頑張る」のは危険だよ
素人ががむしゃらに頑張ってもソフトウェア開発は上手くいかない

今やるべきことは、ネットか書籍で既存のシステムの設計やアーキテクチャを参考にして作ること
テストやってるわけじゃないんだし、既に存在してる答えを探さずに自分でダメな解答作ることに意味はない
929デフォルトの名無しさん:2013/09/06(金) 18:15:21.09
失礼します。
複数の似たようなフォームを大量に扱う場合、MDIが良いのでしょうか?
今まではSDIに子フォームを追加してて親フォームの枠に囚われずに使えて便利だと思っていたのですが、
Excel等がMDIなのでそっちの方が楽なのかなとも思うようになってきました。
よろしくお願いします。
930デフォルトの名無しさん:2013/09/06(金) 18:18:26.07
今時MDIは無いわ
931デフォルトの名無しさん:2013/09/06(金) 18:23:39.81
>>930
ですよね・・・。
イマイチMDIの利点が思いつかなくて。
932デフォルトの名無しさん:2013/09/06(金) 18:25:31.17
タブブラウザ(死語)だってMDIの一種だぞ
どっちが便利かはケースバイケースだからそれだけの情報じゃ分からね
933デフォルトの名無しさん:2013/09/06(金) 18:49:51.99
>>932
すいません、複数の監視カメラを制御します。
カメラの数が増えるかもなので、Pictureboxを並べるよりはカメラ毎にフォームを用意した方が楽かなと思いまして。
934デフォルトの名無しさん:2013/09/06(金) 18:53:13.15
>>933
大きさが同じならListBox使ってみたら?
935デフォルトの名無しさん:2013/09/06(金) 18:55:45.59
俺だったら1つのフォームに並べるな
カメラ数設定したら動的にコントロール作って並べる
で、D&Dで1つのカメラ画像だけ1つのフォームにするみたいな取り出しにも対応させとく
936デフォルトの名無しさん:2013/09/06(金) 19:10:15.12
>>928
アドバイスありがとう
今日いきなり研修一抜けして来週から社内業務入ってって言われたわ
内容は全く分からないからそのアドバイスは活かせるかは微妙だけど、
ダメな解答を作らず、素人のうちは出来合いのものを組み合わせて作りながら勉強していくよ
937デフォルトの名無しさん:2013/09/06(金) 19:11:12.51
>>935
動的コントロール並べるのもいいですね!
ありがとうございます。
938デフォルトの名無しさん:2013/09/06(金) 20:13:54.95
>>936
わざわざ車輪の再発明をするのは無駄だ、
ということを今のうちに覚えておくんだ

ライブラリってそういうことだろ?
939デフォルトの名無しさん:2013/09/06(金) 20:36:47.98
車輪がなぜ転がるのかを理解していない奴に車輪を正しく使うことは出来んがね
940デフォルトの名無しさん:2013/09/06(金) 20:57:45.19
いちいち原理まで理解する時代は遠い過去に終わったんだよ
941デフォルトの名無しさん:2013/09/06(金) 21:02:15.11
使えるものは使って、新しいものを作る時は関連技術の仕組みをちゃんと理解する
これで大丈夫かな?
942デフォルトの名無しさん:2013/09/06(金) 21:45:44.86
TextBoxで複数の位置から同時に文字を入力する方法を教えて下さい!
943デフォルトの名無しさん:2013/09/06(金) 21:51:38.19
各種のプロパティやメソッドの意味を理解するには中の仕組みの理解も必要だな
944デフォルトの名無しさん:2013/09/06(金) 21:54:05.72
その前に何故そういう激しく逸脱したユーザーインターフェースを考えたのか
教えてもらおうか
945デフォルトの名無しさん:2013/09/06(金) 22:18:03.48
>>942
意味が解らん
946デフォルトの名無しさん:2013/09/06(金) 22:34:00.28
脳内で矩形選択でもしてんじゃね
947デフォルトの名無しさん:2013/09/06(金) 22:52:40.80
そうです矩形選択のようなものです
948 忍法帖【Lv=9,xxxP】(1+0:5) :2013/09/06(金) 23:32:08.15
>>942
タグの中身を同時に書き換えるとかそんな使い方?
949デフォルトの名無しさん:2013/09/06(金) 23:39:54.57
そうですねそんなかんじです

<p>aaa</p>
<b>bbb</b>
<p.>ccc</p>

ってあったら
1行目と2行目の<p>の次にキャレットがあるものとして
複数の位置から文字が入力できるようにしたいんです
こういう仕組みはSublime Textにあります
950デフォルトの名無しさん:2013/09/06(金) 23:40:28.05
ミス
×1行目と2行目の<p>の次にキャレットがあるものとして
○1行目と3行目の<p>の次にキャレットがあるものとして
951デフォルトの名無しさん:2013/09/06(金) 23:45:16.83
また研修の宿題かよ。
952デフォルトの名無しさん:2013/09/06(金) 23:45:30.79
Sublime Textは知らないけど、普通にベタに追加してけばいいじゃん
953デフォルトの名無しさん:2013/09/06(金) 23:45:53.71
よく判らん。
954デフォルトの名無しさん:2013/09/06(金) 23:50:02.59
>1行目と3行目の<p>の次にキャレットがあるものとして
キャレットって普通1個しかねえんじゃ?
955デフォルトの名無しさん:2013/09/06(金) 23:55:38.99
キャレットなんてただの縦線だから欲しけりゃ線描画すればいくらでも増やせる
こういうのはどういう入力仕様にするかの方が重要。
俺が作ったらたんにミラーリングするだけの無意味な機能になるわ
956デフォルトの名無しさん:2013/09/06(金) 23:58:16.50
957デフォルトの名無しさん:2013/09/07(土) 00:02:11.64
今ネット糞遅いからURL見てない。誰かが実現してるなら可能なんだろw

例えばTextChangeされたときに追加されてる文字と場所を見て、それが1行目だったら同じ文字を2行目に追加。
2行目だったら無視するとかそんな処理。
糞処理だけどこんなだったら誰にでも実装できるだろ
958デフォルトの名無しさん:2013/09/07(土) 00:10:08.35
>>956
加納店名
959デフォルトの名無しさん:2013/09/07(土) 00:18:55.09
そのTextBoxの特定の位置に文字を挿入するという仕組みが作りたいんですが
キーワードを教えてください
960デフォルトの名無しさん:2013/09/07(土) 00:21:15.12
毎回テキスト全部書き換えちまえよ。できりゃいんだよ。効率なんて無視しろ
961デフォルトの名無しさん:2013/09/07(土) 00:23:06.96
>>955
キャレットの位置って取得出来るの?
962デフォルトの名無しさん:2013/09/07(土) 00:27:48.43
間違えた、描画するキャレットの座標ってわかるの?
963デフォルトの名無しさん:2013/09/07(土) 00:28:02.51
ggrks
キャレット位置 取得
964デフォルトの名無しさん:2013/09/07(土) 00:29:09.25
>959
Controlクラス。これにそういう仕組みを自分でゴリゴリ書く
TextBoxは既製品だからそういう改造は出来ない

>961
WinAPIのGetCaretPosを使えば出来るが、正直取得する必要があるとは思えない
965デフォルトの名無しさん:2013/09/07(土) 00:29:11.15
>>959
当たり前だけどTextBoxは>>956みたいな拡張なんか想定してないからTextBoxを
ベースに改造しようという発想そのものが無理。

データの構造(>>956みたいなエディタがべたテキストでデータ持ってるはずがない)も
描画も全部スクラッチで書かなきゃ無理。

単純に文字列の複数個所を同じ文字列で置き換えるだけなら例えばString.Formatで出来るけど
966デフォルトの名無しさん:2013/09/07(土) 00:30:20.64
>>962
ヒント:オーナードロー
オーナードローしなくてもがんばれば位置取得ぐらいできそうな気はする
967デフォルトの名無しさん:2013/09/07(土) 00:31:07.67
一度はテキストボックスを貼り付けないでテキストエディタを
作ってみるべきだよな
968デフォルトの名無しさん:2013/09/07(土) 00:32:16.86
一方僕はScintillaを使った
969デフォルトの名無しさん:2013/09/07(土) 00:36:57.53
今回の件ではキャレット位置を取得する必要なくね?
970デフォルトの名無しさん:2013/09/07(土) 00:38:34.18
テスト実装ぐらいならキャレット表示なんて要らないけど、
まともに作るならキャレット描画をしないと操作性が悪い
971デフォルトの名無しさん:2013/09/07(土) 06:49:28.68
webbrowserコントロールでスクロール位置を取得したいく
http://recyclebin5385.blog13.fc2.com/blog-entry-31.html
を参考にしたのですが
webBrowser.Document.Body.ScrollTop
を見ても常に0が取得されてしまいます。
何か原因が思い当たれば教えてください。
972デフォルトの名無しさん:2013/09/07(土) 08:28:45.61
>>940
こういうバカが副作用でバグを大量生産する
973デフォルトの名無しさん:2013/09/07(土) 09:02:46.81
>>972
それ、ソフトに限らず全てに言える。
気取ってエラそうなバカが増えてきて困っている。

以前から居たが、少なかったので余所に回せば良かった。
でも今は……多すぎる。
974デフォルトの名無しさん:2013/09/07(土) 09:19:13.65
ああ、こういうのですね
(自覚のない)偉そうな馬鹿って
975デフォルトの名無しさん:2013/09/07(土) 09:23:58.64
>>973
お前はイーサネットも物理層も理解した上でHTTP通信を使っているのか?
976デフォルトの名無しさん:2013/09/07(土) 09:25:02.41
CreateFile一つ取ってもそれをきちんと把握してる奴はごく稀だからな
きちんと理解して使うには時間が足りなすぎる
977デフォルトの名無しさん:2013/09/07(土) 09:25:11.15
いつまでも初心を忘れたくはないね。
978デフォルトの名無しさん:2013/09/07(土) 09:25:56.55
>>975
知らないで使ってるの?
979デフォルトの名無しさん:2013/09/07(土) 09:26:55.40
>>976
APIなんて呼び出し方とトラブル例だけ知ってればいいんだよ。
980デフォルトの名無しさん:2013/09/07(土) 09:28:52.74
CD扱うときはオレンジブックから読んで動画再生するときは圧縮アルゴリズムから勉強する奴なんていないだろw
981デフォルトの名無しさん:2013/09/07(土) 09:29:24.97
>>978
じゃ教えてよ
聞きかじった用語の意味じゃなくて俺がそれ聞いて実装できるようにな
982デフォルトの名無しさん:2013/09/07(土) 09:31:18.48
100%知らないだろw
983デフォルトの名無しさん:2013/09/07(土) 09:35:28.38
>>980
次スレよろ
984デフォルトの名無しさん:2013/09/07(土) 09:35:31.63
ネスペ持ってるがCSMA/CDの1%も理解していない自信がある
985デフォルトの名無しさん:2013/09/07(土) 09:36:04.17
「Cでプログラミングするには人生は短すぎる」って言葉があるけど、
原理から把握して使うにはこの言葉がC#にも当てはまるからな
986デフォルトの名無しさん:2013/09/07(土) 09:46:40.06
ふらっとVisual C#,C♯,C#(初心者用) Part106
http://toro.2ch.net/test/read.cgi/tech/1378514566/
987デフォルトの名無しさん:2013/09/07(土) 09:52:08.87
>>971
>何か原因が思い当たれば教えてください。

・スクロールしていない
988デフォルトの名無しさん:2013/09/07(土) 09:55:34.26
>>986
989デフォルトの名無しさん:2013/09/07(土) 09:59:53.07
990デフォルトの名無しさん:2013/09/07(土) 10:24:24.70
>>986
991デフォルトの名無しさん:2013/09/07(土) 10:45:08.24
992デフォルトの名無しさん:2013/09/07(土) 10:50:26.74
顔写真がうざい
993デフォルトの名無しさん:2013/09/07(土) 12:48:08.19
まあ最低限メリットとリスクわかってるなら良いんだが
最近の若者はそれすら知らずに使うからこわいよね
994デフォルトの名無しさん:2013/09/07(土) 12:56:09.99
>>993
何でそういう話になるんだよw

最近の若者がどうだか知らんけど、あんたは2ch脳にありがちな「昔」(というより、
自分の狭い世代)だけを美化したがる若年寄だろ
995デフォルトの名無しさん:2013/09/07(土) 13:20:05.35
webbrowserコントロールのスクロール位置をdocument関係なく
取得できる神技術者はいないものか
996デフォルトの名無しさん:2013/09/07(土) 13:54:13.62
犯罪ツールでも作ってるのか?
997デフォルトの名無しさん:2013/09/07(土) 14:02:23.34
ツールに罪はない
998デフォルトの名無しさん:2013/09/07(土) 14:03:32.58
>>997に罪はある
999デフォルトの名無しさん:2013/09/07(土) 14:04:19.04
>>995
だからそれは出来るでしょ。

出来ないのは、スクロール可能な部分がネストされていたり複数存在したりする場合に
「スクロールの位置」とやらを一意に決めること
1000デフォルトの名無しさん:2013/09/07(土) 14:05:27.05
バイナリになっちゃうとprivateも糞もないからな
猫缶はこれを利用している
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。