ふらっと C#,C♯,C#(初心者用) Part119at TECH
ふらっと C#,C♯,C#(初心者用) Part119 - 暇つぶし2ch2:デフォルトの名無しさん
16/01/31 01:08:38.52 N9Aq8poo.net
このスレは早くも終わりなのかよ

3:デフォルトの名無しさん
16/01/31 01:57:57.23 OtXGSzkV.net
よかったね!もう低レベルな質問者はいなかったんだ!
またーりするがよし

4:デフォルトの名無しさん
16/01/31 10:22:44.34 QMexAFhe.net
ideone と比べて↓ってどうなのよ?
URLリンク(dotnetfiddle.net)
後、reference sourceもテンプレ入れとけばいいんじゃね?
URLリンク(referencesource.microsoft.com)

5:デフォルトの名無しさん
16/01/31 13:39:01.93 qH2XkhrX.net
コード書いてるときに、Ctrl押しながらクリックすると定義が表示されるけど
これならないように設定って変えられないの?
Ctrl+VとCtrl+Cで切り貼りしてるときにたまに定義開いちゃって
定義先にペーストされることがあって邪魔くさい・・・

6:デフォルトの名無しさん
16/01/31 16:00:49.01 FdM/jilW.net
コピペするな

7:デフォルトの名無しさん
16/01/31 16:47:43.84 Lk2teTuL.net
正論だな
コピペする奴が悪い

8:デフォルトの名無しさん
16/01/31 17:54:38.31 L9wnRk7F.net
DataGridViewでコピーペーストする方法教えて下さい。

9:デフォルトの名無しさん
16/01/31 18:27:31.45 AEa1Mqyg.net
string[] stArray = {"a", "b", "c"};   文字列の配列を連結したい場合、
string stJoin1 = string.Join(",", stArray);  出来る
string stJoin2 = stArray.Join(",");     エラー
はなぜですか?

10:デフォルトの名無しさん
16/01/31 19:36:56.86 XZC47Qjq.net
拡張メソッドを書いてないから

11:デフォルトの名無しさん
16/01/31 20:32:06.51 FdM/jilW.net
型が違う。
下は、consみたいなのを自作すれば良い。

12:デフォルトの名無しさん
16/01/31 21:49:23.21 eL/uJhf1.net
constってコンパイル時に値が埋め込まれるのでメソッドの戻り値は駄目と書いてあったんですが、Mathクラスの戻り値ならコンパイル時に埋め込んでもいいと思います
どうしたら出来ますか?

13:デフォルトの名無しさん
16/01/31 22:16:29.82 qH2XkhrX.net
>>7
単純にコードの位置を移したいとかでコピペしちゃいけないもんなんですか?
あと、たとえばrow["hoge"]とかhogeの部分とか型付けされてないところのスペルミス防ぐのに
コピペしてるんですが・・・

14:デフォルトの名無しさん
16/01/31 22:29:15.00 FdM/jilW.net
>>13
上は、そう頻繁にあるものでもあるまい。
それにマウス持ち変えるより、ロールアップキーでも使う方が速いだろう。
下は、nameof使え。

15:デフォルトの名無しさん
16/01/31 22:35:50.78 XZC47Qjq.net
コードの位置を動かす時はリファクタリング支援ツールを使う
最初から型付けされたコードを書く

16:デフォルトの名無しさん
16/01/31 22:38:08.13 RnP8OsKU.net
>>12
無理
static readonlyにするか、事前に関数電卓で計算してベタで書け

17:デフォルトの名無しさん
16/01/31 22:40:37.42 eL/uJhf1.net
>>16
まだMSが対応していないという事ですか?
バージョンアップで対応する可能性はありますか?

18:デフォルトの名無しさん
16/01/31 22:49:44.07 QMexAFhe.net
それはMSに聞いてくれとしか…

19:デフォルトの名無しさん
16/01/31 22:50:53.93 x//RUhMN.net
>>17
シンプルにしてコンパイルを高速にしたいからそうなってるんだろうし、対応はまず無いだろ。

20:デフォルトの名無しさん
16/01/31 22:55:05.54 eL/uJhf1.net
ならメソッドを使わずに切り上げをする方法を教えてください
Mathで使いたいのは切り上げだけです。切り下げなら(int)でいいので

21:デフォルトの名無しさん
16/01/31 22:59:34.79 ICO548x3.net
なんでその質問が出てくるのか理解できないんだが、何がやりたいの?

22:デフォルトの名無しさん
16/01/31 23:03:16.54 LmCDpUMw.net
>>20
コンパイル時に値が確定するんだったら普通にリテラルで書いて
必用ならそのリテラルの意味なり計算式なりをコメントで添えておけばいいでしょ。
何がしたいんでしょ。

23:デフォルトの名無しさん
16/01/31 23:09:13.99 eL/uJhf1.net
>>22
コメントで書くしかないのか
式で書ければ便利と思っただけ

24:デフォルトの名無しさん
16/01/31 23:31:52.22 LmCDpUMw.net
>>23
まあ気持ちだけは分からんでもないけどね。

25:デフォルトの名無しさん
16/01/31 23:37:16.03 QMexAFhe.net
インラインメソッドがあれば可能かもな
無いけど

26:デフォルトの名無しさん
16/01/31 23:39:07.66 eL/uJhf1.net
そういえば>>19見て思ったんだけどc#は実行速度よりコンパイル速度を優先しているのか
コンパイルとか一瞬で終わるのに・・・

27:デフォルトの名無しさん
16/01/31 23:39:18.71 W1iwZ4fQ.net
そもそもstatic readonlyなら遅くてconstなら許容できるようなケースがどれだけあるのかと言いたい
とりあえずstatic readonlyにしといて遅かったら(そして万一constにすることで改善したら)直せばいい
まあはっきり言って絶対にありえないけどね

28:デフォルトの名無しさん
16/01/31 23:46:36.44 W1iwZ4fQ.net
>>26
そうじゃない
Math.Sin(0.1)は定数だが、それをどうやってコンパイラが判断するのか?
Mathクラスのメソッドだけを言語仕様で特別扱いするのか?
それとも const double Sin(double x) のように修飾子で区別するか?
じゃあconstメソッドの中身はどうやって実装する? 結果が定数であることをどう保障する?
くだらないことのために言語が無駄に複雑になりすぎるんだよ

29:デフォルトの名無しさん
16/02/01 00:00:00.12 LZvTT2lb.net
C++のconstexprが欲しいのか

30:デフォルトの名無しさん
16/02/01 00:01:09.11 LZvTT2lb.net
僕は要らねーと思いますよ
理由は27と同じ

31:デフォルトの名無しさん
16/02/01 00:13:35.57 OH63tZsW.net
実行時コンパイルで最適化されるだろ?

32:デフォルトの名無しさん
16/02/01 00:17:47.14 LZvTT2lb.net
ちなみにc++のconstexprは、
constexpr用に制限されたコンパイラもういっこつける方針で設計された(c++14版)ので
実装コストはヤバい
GCCなんかv4のうちは無理!と言ってる

33:デフォルトの名無しさん
16/02/01 00:22:03.93 dIlBXeJw.net
>>28
保証することは無理でもコンパイル時に呼び出してねって言うことなら出来ると思う
const(Math.Hoge(hoge))的な文法追加して

34:デフォルトの名無しさん
16/02/01 00:59:06.40 PI4teHGz.net
>>14-15
VisualStudio2013なので使えないですよね・・・?
ロールアップキー、リファクタリング支援ツールこれまで使ったことがないので勉強してみます

35:デフォルトの名無しさん
16/02/01 02:37:16.26 Z3IF5HOp.net
>>20
(int)hage+1

36:デフォルトの名無しさん
16/02/01 06:41:30.50 S6M4IlTn.net
>>33
C#にはJITがあるんだから無理にコンパイル時にやる必要はない
明らかに定数なら実際最適化されるはず

37:デフォルトの名無しさん
16/02/01 10:07:11.07 7cizXyZ3.net
VisualStudio2013のPro使ってるんだけど2015のcommunityに移行した方がいいの?
高い金だして2013のPro買ったけど、無料版のほうがいいのかね
移行するにしても開発中のプロジェクトって簡単に移せるものなの?

38:デフォルトの名無しさん
16/02/01 12:04:32.20 I165EpQr.net
2015の機能が必要なら移行しないといけないけども、
そうでなきゃ2013で良いんじゃね

39:デフォルトの名無しさん
16/02/01 14:54:14.50 aG9hZjMU.net
こういう配列から、
string[] array=new string[]{
  "",
  "",
  "aaa",
  "",
  "",
  "bbb",
  "ccc",
  "",
  ""
};
前後の空文字列要素を除去して、こんなふうにしたいのですが、
{
  "aaa",
  "",
  "",
  "bbb",
  "ccc",
};
LINQなどでやる方法教えて下さい。

40:デフォルトの名無しさん
16/02/01 15:43:34.78 V4hZicDh.net
あえて書くならこんなんか
array.SkipWhile(_ => _ == "").Reverse().SkipWhile(_ => _ == "").Reverse().ToArray()

41:デフォルトの名無しさん
16/02/01 18:10:43.09 /r/8ldkl.net
Ixに SkipLast があったような無かったような。

42:デフォルトの名無しさん
16/02/01 18:19:24.39 EVPhHPfU.net
>>40
TakeWhile使えばいい

43:42
16/02/01 18:20:33.27 EVPhHPfU.net
いやすまんTakeWhileじゃだめだな

44:デフォルトの名無しさん
16/02/01 18:46:51.72 czv56jrR.net
出来たとしても無理にLINQでインラインでやるよりメソッドに出した方が可読性は良いと思う

45:デフォルトの名無しさん
16/02/01 18:52:59.57 FFxZxQH+.net
LINQ使いたがり症候群にそんなこと言ってもムダムダ

46:デフォルトの名無しさん
16/02/01 18:54:36.29 +KtViPiM.net
FuncとAction使ってたら、意味わからんからdelegateで書いてと言われた・・・

47:デフォルトの名無しさん
16/02/01 18:57:09.23 LZvTT2lb.net
低レベルな職場しか選べないと大変だね。
同情するよ。

48:デフォルトの名無しさん
16/02/01 20:14:58.30 2W5izw7a.net
コミュ症治してマトモな会社行きたい

49:デフォルトの名無しさん
16/02/01 21:20:16.63 aG9hZjMU.net
>>40
ありがとうございました

50:デフォルトの名無しさん
16/02/01 21:42:26.45 PI4teHGz.net
みなさんはどのVisualStudioのバージョン使ってるんですか?
無料のComminity?それともMSDNつきのPro以上?

51:デフォルトの名無しさん
16/02/01 21:44:54.24 2W5izw7a.net
家では無料だよ
会社では客によりけり

52:デフォルトの名無しさん
16/02/01 21:47:47.53 CMQpk8BM.net
まともな会社などない

53:デフォルトの名無しさん
16/02/01 21:49:51.39 2W5izw7a.net
じゃあ退職して冒険家になりたい

54:デフォルトの名無しさん
16/02/01 21:50:44.12 wNeKxt73.net
うちは会社としては比較的まともだけど技術はカスだよ
中小のクソブラック(派遣除く)の方が自由にやれるし技術もある

55:デフォルトの名無しさん
16/02/01 21:51:52.81 PUKtqVKL.net
それは社長と自分の力量に恵まれた場合だけに成立する結論では。

56:デフォルトの名無しさん
16/02/01 21:53:40.39 2W5izw7a.net
クソブラックだけど自由全くない
クソみたいな仕様書とクソみたいな規約で雁字搦め

57:デフォルトの名無しさん
16/02/02 04:23:46.44 hSQJZAUP.net
>>39
array
.SkipWhile(s => s.Length == 0)
.SkipWhileLast(s => s.Length == 0)
SkipWhileLast()の実装は
C# SkipWhileLast でググれば出てくる。
LINQ使うコツは、小まめにSkipWhileLastみたいな便利関数を作って行く事。
そうすると、後がドンドン楽になる。

58:デフォルトの名無しさん
16/02/02 04:34:46.35 hSQJZAUP.net
>>34
2015使え。
ライセンスが無いなら、会社に談判しろ。
どうしてもダメなら、CallerMemberNameかExpressionか使って工夫しろ。
ラムダ式使用禁止なら、移動願いでも出せ。

59:デフォルトの名無しさん
16/02/02 04:38:04.48 hSQJZAUP.net
>>50
個人開発ならCommunity一択。
msdnはwebで検索。
ある程度の規模の会社ならPro。

60:デフォルトの名無しさん
16/02/02 06:58:30.82 1lbf9bi4.net
>>57
そういう極めて基本的なユーティリティメソッドを自分で作っちゃうのはあまり良くないな
ソースに個人の癖が出すぎる
典型的な例はforEachとか、Stringに変な拡張メソッド付けるとかな
再利用は目的単位で

61:デフォルトの名無しさん
16/02/02 08:08:12.85 hSQJZAUP.net
便利関数は言葉が悪かったか((笑))
目的関数を作れ。
> 前後の空文字列を除去
この場合
前の除去が、SkipWhile
後の除去が、SkipLastWhile
LINQの最大の利点の一つは、手段ではなく目的がダイレクトに書けること。

62:デフォルトの名無しさん
16/02/02 13:03:48.60 yOFSQOe0.net
>45
LINQ好きな人と嫌いな人は何が違うんでしょうか?

63:デフォルトの名無しさん
16/02/02 13:08:02.67 3jsOLIbZ.net
>>62
書くとき簡潔さやエレガントさを重視する人と、
後でメンテする時のコストや可読性を重視する人の違いが大きいかもね。

64:デフォルトの名無しさん
16/02/02 14:00:47.70 31GO6MKM.net
C#の習得を効率よくしたいのですがオススメの書籍を教えて下さい
Unityで使うのが目的です
PHPとRubyを多少触ったことがあり
クラスまでは何となく分かるくらいのプログラム初心者です

65:デフォルトの名無しさん
16/02/02 15:48:18.70 jZDM0b/G.net
LINQは好きだけどLINQで書くことが目的になってる奴は嫌いだわ

66:デフォルトの名無しさん
16/02/02 19:27:27.78 bYmP3hY/.net
>>63
初心者の自分にどっちがどっちなのか教えて下さい

67:デフォルトの名無しさん
16/02/02 19:43:17.84 ZOdX5end.net
>>63
どっちらもLINQが優勢な気がする。
まあ、可読性は慣れが大きいか。

68:デフォルトの名無しさん
16/02/02 21:16:57.79 6fuhRmOR.net
if(a1>b1&&c1>d1)ほにゃらら
if(a2>b2&&c2<d2)ほにゃらら
if(a3<b3&&c3>d3)ほにゃらら
みたいに等号の向きが違うだけの処理って
等号パターンをパラメーター化したりするような方法ってありますか?
クールにかける方法があればご教授下さい。

69:デフォルトの名無しさん
16/02/02 21:24:07.68 6fuhRmOR.net
ああ自分で書いといて何いってるのか意味がわからない。
a1とかは配列にしてforとかで回して処理できるようにしたいのです

70:デフォルトの名無しさん
16/02/02 21:43:31.72 ZOdX5end.net
X[] a, b, c
の時
Func<X, X, bool>[]
を用意する。
題意を外してたら、ごめん。

71:デフォルトの名無しさん
16/02/02 22:15:51.73 6fuhRmOR.net
>>70
おおお。ありがとうございます。
意図にあってます!
なるほどFuncというのがあるんですね。
こんな感じでしょうか。
若干仮引数部分が冗長な感じがしますが
使い方まちがってますでしょうか。
URLリンク(ideone.com)

72:デフォルトの名無しさん
16/02/02 23:25:27.97 ijuPgovR.net
>>67
同意

73:デフォルトの名無しさん
16/02/03 09:53:08.59 ToDOcZiy.net
c:\ddd.txt
が存在していて、それを
c:\aaa\bbb\ccc\ddd.txt
にコピーしたいのですが、
aaa,bbb,cccが存在していないのでエラーします。
自動的にフォルダを作ってコピーしてくれるメソッドはありますか?

74:デフォルトの名無しさん
16/02/03 11:16:12.29 j8HR3MFJ.net
>>73
Directory.CreateDirectory

75:デフォルトの名無しさん
16/02/03 12:25:45.11 SF3O1Oce.net
人の話を話半分に聞く奴

76:デフォルトの名無しさん
16/02/03 14:36:18.68 GNXIV+s8.net
OrderBy(Descending)にIComparer<TKey>を取るバージョンだけあって
Comparison<T>を取るバージョンがないのはなぜ?
不便でしょうがないと思うんだけど。

77:デフォルトの名無しさん
16/02/03 14:52:43.52 f1DNv6yV.net
>>76
Funcでセレクタを指定する方でほとんど十分だから

78:デフォルトの名無しさん
16/02/03 14:54:44.10 GNXIV+s8.net
>>77
まあ確かにそうなんですが...

79:デフォルトの名無しさん
16/02/03 15:02:54.48 SF3O1Oce.net
作者の気持ちは作者に聞けよ

80:デフォルトの名無しさん
16/02/03 15:38:40.16 f1DNv6yV.net
Funcでソートキーを指定する方はクエリ式で必ず必要だから、
ラムダの引数の数が違うだけで全く動作の異なるオーバーロードがあったら紛らわしすぎるだろ

81:デフォルトの名無しさん
16/02/03 18:38:09.82 sizrUp1k.net
CSVのデータ列の縦と横を入れ替えたいのですが、どのようにしたらいいですか?

82:デフォルトの名無しさん
16/02/03 20:05:40.98 ET0ey9ws.net
もっと正確に話して

83:デフォルトの名無しさん
16/02/03 20:31:29.28 KiLlRrJ3.net
>>71
自分なら
X [a b c d]
みたいなクラス作って
Match(Action[])
みたいな関数作るかなあ。

84:デフォルトの名無しさん
16/02/03 20:34:50.63 KiLlRrJ3.net
>>81
csvをパースして、IEmuerable<string[]>を作る。
後は、string[]の長さが全部同じなのを前提にして縦横変える。

85:デフォルトの名無しさん
16/02/03 20:39:10.73 /MNciLgK.net
>>81
エクセルで開いてコピーして形式を選択張り付けで行列を入れ換えにチェックを入れる。

86:デフォルトの名無しさん
16/02/03 21:05:39.56 ycDP2Q2/.net
>>81
何度もやらないなら Excel 使えば?

87:デフォルトの名無しさん
16/02/03 21:47:25.66 glKmFo73.net
C#でyahooジオシティーズのFTPサーバーにアクセスして
ファイルをアップロードするプログラムを作ったのですが
#76でエラーコード530(リモートサーバーにログインされていません)が返って来ます。
passもIDもあっています。何故かわかる方いらっしゃったらよろしくお願いします。

URLリンク(ideone.com)

88:デフォルトの名無しさん
16/02/03 21:55:15.11 EldvIZCu.net
>>87
そんなもんftpコマンドでええがな

89:デフォルトの名無しさん
16/02/03 21:56:26.30 glKmFo73.net
C#でyahooジオシティーズのFTPサーバーにアクセスして
ファイルをアップロードするプログラムを作ったのですが
#76でエラーコード530(リモートサーバーにログインされていません)が返って来ます。
passもIDもあっています。何故かわかる方いらっしゃったらよろしくお願いします。

URLリンク(ideone.com)

90:デフォルトの名無しさん
16/02/03 21:57:55.35 glKmFo73.net
>>89
ミスです
>>88
できればC#のみで実現したいのですが。。

91:デフォルトの名無しさん
16/02/03 22:02:56.65 EldvIZCu.net
>>90
ファイルに書いてProcess.Start呼ぶだけた
C#だけで実現できるぞ?

92:デフォルトの名無しさん
16/02/03 22:08:08.63 eknpwZEf.net
>>91
わからないなら答えるなよ

93:デフォルトの名無しさん
16/02/03 22:08:17.43 VkZvsMH5.net
そもそもC#で作るようなもんじゃないな
PerlとかPythonとかでいいよ

94:デフォルトの名無しさん
16/02/03 22:11:18.30 /MNciLgK.net
>>89
よくわからないけどー
client.Headers[HttpRequestHeader.Authorization] = "Basic " + base64;
ってFTPでもつうようするん?
client.wc.Credentials = new System.Net.NetworkCredential("username", "password");
では?

95:デフォルトの名無しさん
16/02/03 22:11:38.07 glKmFo73.net
>>91
サンプルプログラム等あればお願いします

>>90
C#でという指定の課題なので。。

96:デフォルトの名無しさん
16/02/03 22:15:10.62 glKmFo73.net
>>94
client.wc.Credentials = new System.Net.NetworkCredential("username", "password");
でも同様のエラーが出ました。

97:デフォルトの名無しさん
16/02/03 22:18:23.55 /MNciLgK.net
>>96
そっかー残念やなー

98:デフォルトの名無しさん
16/02/03 22:46:23.38 4yo/6pJu.net
最近はこんな意味不明な課題を出すようになったんだな

99:デフォルトの名無しさん
16/02/03 22:54:22.63 4yo/6pJu.net
最初に一般的なftpクライアントでサーバーが正しく動いているか確認
正しく動いているならWireSharkでペイロードをキャプチャ
正しく動かないクライアントのペイロードと比較
足らない物を補うなり修正なりする

100:デフォルトの名無しさん
16/02/03 23:49:10.39 unol2DYF.net
>>73
ありません

101:デフォルトの名無しさん
16/02/04 00:40:34.48 gWgQAzup.net
>>99
少し頑張ってみます。
ffftp等であればアクセスできるためサーバーは動いていると思われます。

102:デフォルトの名無しさん
16/02/04 06:47:24.04 PFzCzh/c.net
>>73
> エラーします。
たまにこう書いてる奴見かけるがアホっぽいからやめた方がいい

103:デフォルトの名無しさん
16/02/04 08:50:01.99 +vbR9WQv.net
>>73
FileSystem クラス使ったら行けるんじゃなかったっけ?
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
うろ覚えだから間違っていたらごめんね

104:デフォルトの名無しさん
16/02/04 15:03:25.17 CRE7g2W6.net
日時Aと日時Bの間に、時刻Cを何回経過したかを求める
関数の作り方を教えてください。
おねがいします。

105:デフォルトの名無しさん
16/02/04 15:45:42.87 0aoqlSU+.net
>>104
(B-A)/C

106:デフォルトの名無しさん
16/02/04 15:56:50.85 CRE7g2W6.net
>>105
除算はうまくいかないようです。もう少し詳しく教えてください。
言い忘れましたが、A、B、CいずれもSystem.DateTime型で、
Cについて日付情報は使用しないのでダミーのものが入っている前提です。

107:デフォルトの名無しさん
16/02/04 16:06:24.55 CRE7g2W6.net
訂正。
Cについては、時刻情報しか使用しないので、
日付部分にはダミーのものが入っています。

108:デフォルトの名無しさん
16/02/04 16:13:35.26 w4WZmN2D.net
計算の単位を秒とかの必要な精度に一度変換してみ

109:デフォルトの名無しさん
16/02/04 16:13:41.05 CRE7g2W6.net
もう少し具体例を出したほうが分かりやすいでしょうか。
2016/1/1 16:50:00から、2016/1/31 6:00:00までの間、
7:30:00に鳴った目覚ましの回数を取得したいのです。

110:デフォルトの名無しさん
16/02/04 16:25:00.84 CRE7g2W6.net
>>108
すみません。もっとこんがらがりました。
単純に日数の差分で割って切り捨てれば出せるかと思いましたが、
>>109 の例でいうと、7:29~7:31のたった2分でも1回とカウントし、
同じ2分の7:27~7:29ではカウントしない方法がわかりません。

111:デフォルトの名無しさん
16/02/04 16:49:57.66 CRE7g2W6.net
やっとわかりました!
forループで範囲開始時刻から終了時刻まで1秒ずつインクリメントして、
時刻Cと比較してカウンタをインクリメントしたらできました!
ありがとうございます!

112:デフォルトの名無しさん
16/02/04 17:11:15.22 Jx1/Vtha.net
自己解決したなら良かった
参考までに
URLリンク(ideone.com)

113:デフォルトの名無しさん
16/02/04 17:49:37.86 leHGWpD8.net
ここの人たちってマ板の住人なのにほとんど怒らないからかえって不気味

114:デフォルトの名無しさん
16/02/04 18:22:31.66 CRE7g2W6.net
>>112
ありがとうございます!
私は下記のように書きましたが、そちらのほうがシンプルですね!
URLリンク(ideone.com)

115:デフォルトの名無しさん
16/02/04 19:07:31.09 PFzCzh/c.net
>>113
初心者スレだからプログラムの内容についての話なら基本怒られない
むしろ怒られるのは関係ないレスしてるお前や俺

116:デフォルトの名無しさん
16/02/04 20:15:13.21 0aoqlSU+.net
>>111
足算と引算があれば除算は定義可能。
1秒毎の必要は無い。

117:デフォルトの名無しさん
16/02/04 22:17:41.52 gWgQAzup.net
>>87
追記です。
このプログラムを作成したパソコンであれば動くのですが
パソコンを変えると動かなくなります。
二つのパソコンの回線(IPアドレス等も)は異なるものを使っています。
パソコンを変えても動くようにするためにはどうすればよいでしょうか?

118:デフォルトの名無しさん
16/02/04 22:22:48.04 kJqvXS0n.net
なにが原因で動かないの?

119:デフォルトの名無しさん
16/02/04 22:27:38.31 pyKOZnex.net
送信してるものが変わらないならサーバー側が弾いてるとしか思えないな
本当にそうだったら誰の手にも負えないね

120:デフォルトの名無しさん
16/02/04 22:30:40.28 gWgQAzup.net
>>119
送信しているものは同じです。。
>>118
原因がわかりません。

121:デフォルトの名無しさん
16/02/04 22:38:34.71 +OoSEPJK.net
ファイアウォールやセキュリティソフトの有無は?
「うごかない」ときは、エラーメッセージやエラーコード、例外は発生してないの?

122:デフォルトの名無しさん
16/02/04 22:43:29.38 0aoqlSU+.net
>>117
パソコンの設定、ネットワーク環境も含めて同じにする。

123:デフォルトの名無しさん
16/02/04 22:58:19.44 gWgQAzup.net
>>121
例外が発生しましたとでます。
セキュリティソフトを確認してみます。

124:デフォルトの名無しさん
16/02/04 23:36:12.54 +Y8C24ZP.net
>>123
勝手にメッセージを省略するなよ
もっと詳しい情報が表示されてるだろ?

125:デフォルトの名無しさん
16/02/04 23:41:15.65 gWgQAzup.net
>>124
型 'System.Net.WebException' のハンドルされていない例外が System.dll で発生しました
追加情報:リモート サーバーがエラーを返しました: (530) ログインされていません

126:デフォルトの名無しさん
16/02/05 02:33:55.18 Nkwk97Cl.net
そのftpサーバー側で530出すのはどんな時か調べたほうがいい
2重ログイン禁止とか?

127:デフォルトの名無しさん
16/02/05 05:50:52.84 YnWE7ryG.net
CUIベースのプロセスと、GUIベースのプロセス間で通信させたいんですが、いいやり方教えて下さい。
例えば、CUIで受信したデータをファイル化します。
ファイル化済んだらGUIへ通知だけさせたいです。

128:デフォルトの名無しさん
16/02/05 07:04:54.45 3Nn1Djx6.net
>>127
WCF

129:デフォルトの名無しさん
16/02/05 07:17:29.50 bOiqRlOT.net
>>127
それだけならFileSystemWatcherで十分じゃね
CUIのプロセスをGUIから起動させてるんならProcessオブジェクトの標準出力を読むこともできる
どうしても複雑なやりとりが必要ならWCFなどでIPCしないと仕方ないけど、
こういうのは極力作りこまないで疎結合にしたほうがいいよ

130:デフォルトの名無しさん
16/02/05 07:28:31.68 z5njROW4.net
メッセージサービスで通知でおk

131:デフォルトの名無しさん
16/02/05 07:48:15.33 yIjwQ5WN.net
>>127
つMSMQ

132:デフォルトの名無しさん
16/02/05 08:11:32.47 72hcdQ5e.net
>>127
C# イベント プロセス間
辺りでググればいい
URLリンク(gurizuri0505.halfmoon.jp)

133:デフォルトの名無しさん
16/02/05 10:15:54.61 M+o1878f.net
アトミックな処理って破壊的代入のみの事を指すんですよね?

134:デフォルトの名無しさん
16/02/05 11:14:36.99 65Kzmabe.net
アトミック操作=不可分操作ですよ
破壊的ってどこから出てきたの?
妄想?

135:デフォルトの名無しさん
16/02/05 14:33:39.30 awzjuRq3.net
原子力は破壊的という発想なんでわ。

136:デフォルトの名無しさん
16/02/05 15:29:28.68 GJmivlP+.net
どうでもいい事なんだけど「は」と「わ」を間違える奴はまともな教育を受けてない人なのかと思う

137:デフォルトの名無しさん
16/02/05 16:07:28.99 awzjuRq3.net
ジョークだからおどけた語尾にしたつもりだったんだけど、
マジレスされちった (ゝω・)vキャピ

138:デフォルトの名無しさん
16/02/05 19:00:08.95 VNGa2qV1.net
アトミックバズーカ(破壊的)

139:デフォルトの名無しさん
16/02/05 20:32:15.24 5SxpQFrH.net
エラーチェックして、エラーだったらエラーメッセージのリストを取得する
ようなメソッドってどういう名前とシグニチャにするのがいいでしょう?
isValidみたいなメソッド名で、戻り値bool、引数にrefでリスト渡すのが、まず思いつきますが
あまりref使いたくないので他に方法ないでしょうか?
エラーかどうかのbool値とリストをもつクラスを作って、戻り値として受け取る?
その場合はメソッド名は何が適切ですかね

140:デフォルトの名無しさん
16/02/05 20:46:43.11 Z4Oj7542.net
>>139
例外使う

141:デフォルトの名無しさん
16/02/05 20:53:23.37 3Nn1Djx6.net
>>139
何がやりたいかよう解らんが、scalaのvalidationとか参考にすれば(適当)

142:デフォルトの名無しさん
16/02/05 21:06:49.66 5SxpQFrH.net
>>141
やりたいことは、データの集合に対して整合性チェックを行って、okなら登録処理のようなものです
整合性チェックは色々なチェックがあるので
CheckAAA(dataList);
CheckBBB(dataList);
...
みたいな感じで各チェックを行っていって
エラーなら、エラーメッセージ群をどこかに表示
最後にエラーがなければ登録処理
みたいな、流れを分かりやすく書きたいです

143:デフォルトの名無しさん
16/02/05 21:15:15.38 ejxo0AUJ.net
冗談にしてもいい歳したおっさんがキャピとかやってんのマジで気持ち悪いな

144:デフォルトの名無しさん
16/02/05 21:19:24.38 lm1grbus.net
マジレスくんお帰りなさい
今日は遅かったね

145:デフォルトの名無しさん
16/02/05 21:21:38.04 GgxKh3Fo.net
>>142
返値にエラーとエラーが無い状態が帰るようにしたら?

146:デフォルトの名無しさん
16/02/05 21:26:09.85 gFEJuD8o.net
チェックメソッドの数にもよるけど、Func<datalist,bool>のList作ってForeachでぶん回す
エラーの場合はメソッド名をnameofで取得するか独自メッセージ返すような感じかね

147:デフォルトの名無しさん
16/02/05 22:07:32.45 3Nn1Djx6.net
>>142
それなら、scalaのvalidationそのもの。
c#で実装して公開してくれww

148:デフォルトの名無しさん
16/02/05 22:13:32.93 bOiqRlOT.net
DataAnnotationsでも使ったら?

149:デフォルトの名無しさん
16/02/05 22:37:57.14 7sKFgg6W.net
>>142
Rx

150:デフォルトの名無しさん
16/02/06 03:53:41.94 XG1h6+tz.net
>>149
このスレではRxもLINQも評価されないことが多い

151:デフォルトの名無しさん
16/02/06 05:37:48.03 ewLa/pEP.net
>>139
> あまりref使いたくない
理由は?

152:デフォルトの名無しさん
16/02/06 05:58:03.11 oAqoRpi+.net
>>142
素朴に考えてみた。
listdataの要素の型をXとする。
var m = new Machine<X>(listdata);
Result r =
m.Validate(x => CheckA(x))
.Validate(x => CheckB(x))
. ...
.Resolve()
;
if(r.HasError){
エラー処理(r.Error);
}else{
登録処理(datalist);
}
みたいなMachineとResultを作る。

153:デフォルトの名無しさん
16/02/06 06:05:32.74 oAqoRpi+.net
CheckAの返す型も要るから、Machine<X, E>か。

154:デフォルトの名無しさん
16/02/06 11:08:19.37 R9MO+uq2.net
ベジェをGraphics.DrawBezierで描きつつ実際の座標も欲しいので
URLリンク(studio-rain.cocolog-nifty.com)
このサイトを参考に自前で多数のベジェを計算・描画してみました
すると座標計算速度は速いけど、Graphics.DrawLineやFillEllipseで実際に描画するのに時間がかかって、Graphics.DrawBezierより明らかに遅い
さらに太さのある線を描こうとすると、無駄な描画が増えるので当然だろうけどもっと遅くなる
速度を上げるには、
・ベジェ計算だけ自前で行って描画はDrawBezierに任せる(ただしピクセル単位で実際の描画とズレるかも)
・アンマネージでの画像操作を覚える(よく知らない)
・GPUを利用して並列描画する?(よく知らない)
というあたりでしょうか?

155:デフォルトの名無しさん
16/02/06 11:12:49.04 0UWDYh4J.net
>>154
WPF使うとかHTMLのCanvas使うとか

156:154
16/02/06 11:41:53.83 R9MO+uq2.net
WPFでは実行部分をC#、描画にDirectxを使えるんですね
調べてみます
ありがとうございました

157:デフォルトの名無しさん
16/02/06 11:54:43.51 6GrwE9uC.net
2012 ExpressでHtmlAgilityPackを使用したくnugetでインストールしようとしているのですが
「ファイルのデータが壊れています」というメッセージが出てインストールできません。
どのような原因が考えられるでしょうか?

158:デフォルトの名無しさん
16/02/06 13:13:58.51 MAd5yVbQ.net
>>151
まだまだ初学者なんで間違ってるかもしれませんが
リファクタリング本とかCODE COMPLETEみたいな本で学んでいると
なるべくメソッドは、入力に対して出力返すようなシンプルな作りがいいと思いまして
メソッド名見ただけで使い方が分かるような物がいいと考えると
出力として欲しいものをrefでごちゃごちゃ渡していくのって、どうなのかなって思いました

159:デフォルトの名無しさん
16/02/06 13:45:33.36 ewLa/pEP.net
>>158
> なるべく‥
なんだから、無理に ref を避けなくてもいいと思うよ

160:デフォルトの名無しさん
16/02/06 14:30:55.01 4STRQeN+.net
>>158
C/C++の時代からのやり方だ,素直に従いたまえ

161:デフォルトの名無しさん
16/02/06 15:55:34.62 57BGy/1R.net
>>158
その感性は100%「正しい」
過去の習慣に惑わらせずにref は例外中の例外でOK

162:デフォルトの名無しさん
16/02/06 17:11:18.28 MAd5yVbQ.net
>>152
メソッドチェーンで繋げて評価できるのが凄くいいですね
参考にさせていただきます。
こういうパターンって何かに使われてるんでしょうか?

それからscalaのvalidationも調べてみます。

163:デフォルトの名無しさん
16/02/06 17:24:02.03 21OGO6t2.net
>>158
クエリとコマンドを明確に区別してコードを書く
クエリはシステムを変更しない
コマンドは何も戻さない
クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する
極論するとシステム開発なんてこれだけで全てうまくいくんだよね

164:デフォルトの名無しさん
16/02/06 17:28:55.18 5yNQjtYt.net
>>163
>クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する
これ面倒臭がる人多いよね

165:デフォルトの名無しさん
16/02/06 18:11:28.77 ewLa/pEP.net
>>161
で、代賛案もなしかよ w

166:デフォルトの名無しさん
16/02/06 18:33:15.79 5kvIq2AE.net
Tuppleを使うか戻り値2つを保持できる構造体かクラスを定義ってのが定番かな
後はDynamicを使う方法か

167:デフォルトの名無しさん
16/02/06 18:36:47.78 PmjXQmD8.net
Tuppleやdynamic使う位ならrefの方がまし。
Tuppleやdynamicこそ例外中の例外。

168:デフォルトの名無しさん
16/02/06 18:40:04.21 VXVqCJqs.net
自分の意見を一般化して喋る奴ばかりだな
聞くだけ価値ゼロ
いや、時間のムダだからマイナスか

169:152
16/02/06 18:47:37.87 57BGy/1R.net
C#7.0からは
(IsValid, Errors) = Foo();
と書ける様になるはず。
今回の場合は、Errorsがemptyかどうかで判断出来るが。
仕事で書くなら、それ用の箱を書くかな。

170:デフォルトの名無しさん
16/02/06 18:52:33.42 57BGy/1R.net
> メソッドは、入力に対して出力返すようなシンプルな作りがいい
これは、この数十年間のソフトウェアの歴史の叡知であり「真理」だと思うよ。

171:デフォルトの名無しさん
16/02/06 19:05:30.74 n+PBDQ0c.net
宗教くせえw

172:デフォルトの名無しさん
16/02/06 19:17:34.47 21OGO6t2.net
>>171を異端審問にかけるべきだ

173:デフォルトの名無しさん
16/02/06 19:31:32.52 drYYhGSp.net
そんなことよりどういう変換で「代賛」という漢字を導き出したのかそっちのが気になる。

174:デフォルトの名無しさん
16/02/06 19:42:30.58 5ZOibTPd.net
言われるまで気づかなかった

175:デフォルトの名無しさん
16/02/06 21:12:46.76 BtpsJL+V.net
var a b = Foo();
Foo => 1 "xyz";
または
Foo()
{
return 1 "xyz";
}
こう書けたら素敵かもw

176:デフォルトの名無しさん
16/02/06 21:23:54.91 BtpsJL+V.net
オーバーロードは
void Foo(int a, int b, int c)
|(a, b, 1)
|(a, 0, _)
=> a + b + c;
こんな風に書けたら素敵ww

177:デフォルトの名無しさん
16/02/06 21:24:40.73 BtpsJL+V.net
間違えた
void → int

178:デフォルトの名無しさん
16/02/06 21:26:58.54 7g0sefOr.net
タプルとパターンマッチは次期バージョンで導入候補になってるよ

179:デフォルトの名無しさん
16/02/06 21:28:31.35 HCmnTZ9V.net
あまりの奇形さに苦笑い

180:デフォルトの名無しさん
16/02/06 21:29:43.90 HCmnTZ9V.net
>>178
一年以上言い続けてる気がするけどいつ確定すんの、あれ

181:デフォルトの名無しさん
16/02/06 21:32:52.44 7g0sefOr.net
Javaよりマシ
C#が世界でJavaに次ぐ巨大なシェアを有するエンタープライズ用言語であることを忘れてないか

182:デフォルトの名無しさん
16/02/06 21:54:57.00 5ZOibTPd.net
下を見てマシマシ言うのはやめていただきたい
底辺の人間のようだ

183:デフォルトの名無しさん
16/02/06 22:00:46.96 BtpsJL+V.net
f1() => 1;
f2() => "xyz";
Foo => f1() f2();
こうすると奇形さ倍増w

184:デフォルトの名無しさん
16/02/06 22:06:40.40 5ZOibTPd.net
これまでのC#のバージョンアップサイクルは2~3年だった
次も同程度なら2017年末から2018年初頭だろう
せっかくRoslynを公開したんだから短縮を期待したいがどうかな

185:デフォルトの名無しさん
16/02/06 22:30:58.04 hDlUnW/n.net
プログラミング初心者なのですが誰か助けてくれませんか?(TT)

186:デフォルトの名無しさん
16/02/06 22:43:31.32 mc+HvOWK.net


187:デフォルトの名無しさん
16/02/06 22:51:44.38 hDlUnW/n.net
受信したデータを,で分割して4つのdouble型の変数に代入して表示したいのですが
string data = serial.ReadLine();
string[] data2 = data.Split(',');
double a = double.Parse(data2[0]);
double b = double.Parse(data2[1]);
double c = double.Parse(data2[2]);
double d = double.Parse(data2[3]);
Console.Write("a={0}\n, b={1}\n, c={2}\n, d={3}\n",a,b,c,d);追加情報:入力文字列の形式が正しくありません。
というエラーが出てきてすすめないです

188:デフォルトの名無しさん
16/02/06 22:55:41.01 7g0sefOr.net
まずdataの内容をコンソールに吐いて確認

189:デフォルトの名無しさん
16/02/06 22:56:47.69 BtpsJL+V.net
Parseではなく、TryParseを使って逐次エラー処理をする。

190:デフォルトの名無しさん
16/02/06 23:00:07.68 BtpsJL+V.net
外部からのデータの整合性を前提にするのは絶対にやってはいけない事。
Parsecでも使っときなさい。

191:デフォルトの名無しさん
16/02/06 23:07:33.12 hDlUnW/n.net
>>188 dataの内容はarduinoから送られてくる値で110,10,11,11このような形式になってます
>>189
>>190しらべてきます

192:デフォルトの名無しさん
16/02/06 23:13:06.42 YiRMDi0V.net
>>191
送られてくるのはそれなんだろうけど
>>188が言ってるのは、その「110,10,11,11」のような値が
正しく入ってきているかをコンソールに出して確認してみよう、ってことだと思うんだけど

193:デフォルトの名無しさん
16/02/06 23:14:31.90 hDlUnW/n.net
>>192 そうですね ご指摘ありがとうございます
正しく入ってきています

194:デフォルトの名無しさん
16/02/06 23:25:53.91 ewLa/pEP.net
>>187
> Console.Write("a={0}\n, b={1}\n, c={2}\n, d={3}\n",a,b,c,d);
今のエラーに直接関係ないけど {0} って文字列用だぞ

195:デフォルトの名無しさん
16/02/06 23:28:25.15 BtpsJL+V.net
Consoleでは正しく表示される(文字列として)とは限らないから、dataをbyte[]に変換して見た方がいい。

196:デフォルトの名無しさん
16/02/06 23:36:52.45 PmjXQmD8.net
>>194
どこでそんな出鱈目を。
勝手にToString()されますがな。

197:デフォルトの名無しさん
16/02/06 23:48:43.66 BtpsJL+V.net
原因は、encodingと予想して寝る。

198:デフォルトの名無しさん
16/02/06 23:51:16.10 5yNQjtYt.net
デバッガでdataの中身見ればいいだけじゃないの?

199:デフォルトの名無しさん
16/02/07 00:18:04.40 7cY+VLxE.net
そういえばVSのデパッグ機能使ったことないんだけどあれ使ったほうがいいの?
いつもデパッグするときは、コンソールライトラインで出力して修正してるんだけど

200:デフォルトの名無しさん
16/02/07 00:41:02.93 mpmibCLh.net
何の為にデバッガがあるというのか・・・・・・・

201:デフォルトの名無しさん
16/02/07 03:43:57.06 E6ZbUD9S.net
デパッグとは

202:デフォルトの名無しさん
16/02/07 04:18:29.60 ubsUoPtC.net
printデバッグっつー
人間の発達段階で言えば赤ちゃんのデバッグ方法

203:デフォルトの名無しさん
16/02/07 04:29:19.69 0jpZBnXl.net
アセンブラ、アセンブリ、アセンブル…

204:デフォルトの名無しさん
16/02/07 09:06:46.60 YehISXuU.net
>>196
すまん、なんか寝ぼけてたわ

205:デフォルトの名無しさん
16/02/07 10:58:08.95 jvYVRZ1r.net
>>199
最低限、ブレークポイントとステップ実行と変数のウォッチをおぼえよう
バグの大半はクラッシュの場所か分岐で間違った方へ進むか変数の内容がおかしいか

206:デフォルトの名無しさん
16/02/07 11:47:40.65 +CXgcQuQ.net
data2[3]に改行が入ってるとか

207:デフォルトの名無しさん
16/02/07 12:54:26.02 +iI8pPYd.net
ReadLineは改行含まれん

208:デフォルトの名無しさん
16/02/07 12:55:38.99 7cY+VLxE.net
>>205
使ってみます

209:デフォルトの名無しさん
16/02/07 15:32:32.86 P4gwgVRD.net
.NETはデータブレークが使えないからうんこなんだよな。

210:デフォルトの名無しさん
16/02/07 17:54:24.49 QHXOM6yq.net
VSがForm Aplicationのサポートを事実上終了したので、個人用アプリ開発においてVSのC++CLRからC# WPFに移行しようとしています。
が、思ったよりも違いが多くて訳がわかりません。初心者スレとのことなので質問するのですが
以下の様な画面構成でアプリを作ろうとしています
1.Mainメニュー(ボタンとして主機能画面に移行・設定画面に移行・それと主機能の内容を選択するコンボボックス)
2.主機能画面(複数画面を遷移するのでPageで作成予定)
3.設定画面(ダイアログにするかどうかは考え中)
んで、ダイアログの表示はFormAplicationと大差ないので余裕だったのですがPageというものをうまく表示できません
つまり、NavigationWindowを継承していないwindow(MainWindow)からNavigationServiceを動かす方法がよくわかりません。
というか単語の意味を正確に把握できていないので自分が正しく質問できているかもよくわかりません
参考にしたサイトは以下です:
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
URLリンク(gushwell.ldblog.jp)
自分の書いたソースは
<Frame x:Name="controlFrame" Content="" NavigationUIVisibility="Hidden" Margin="-565.5,-23.5,0,-3.5" Grid.RowSpan="2" HorizontalAlignment="Left" Width="517"/>
(MainWindowのXamlに追加)
public NavigationService _navi;
public MainWindow()
{
InitializeComponent();
_navi = controlFrame.NavigationService;
}
private void onClickButton(object sender, RoutedEventArgs e)
{
Page1 p1 = new Page1();
_navi.Navigate(p1);
}
} (MainWindow.xaml.csに追加) こんな感じでButtonを押してもPage1が見えてくれない状態です

211:デフォルトの名無しさん
16/02/07 17:58:49.93 TdnGwusc.net
formサポート終了するってまじか

212:デフォルトの名無しさん
16/02/07 18:25:04.36 OK0009Vg.net
実際のところWPFとか使われてるの?
不発弾のイメージしかなかったけど。。

213:デフォルトの名無しさん
16/02/07 18:29:09.02 vhQgXj1G.net
というよりデスクトップアプリ自体が終わっちゃったからね
どうしても必要な場合もElectronのようなものを使って極力Webに合わせる時代

214:デフォルトの名無しさん
16/02/07 19:00:24.97 ZN2qfSkc.net
Timespanの使い方について質問です
時間の文字列が入ったイベントが発生したとします
分毎にまとめて処理したいのですがどうすればできますか?

215:デフォルトの名無しさん
16/02/07 19:05:53.67 n2daTw5S.net
Electronとか言ってるやつの大半は使ったことすらない法則
何が悲しくてデスクトップに生産性最悪のHTMLとjavascriptを持ちこまなければならんのか?

216:デフォルトの名無しさん
16/02/07 19:09:23.84 ubsUoPtC.net
別に終わってもいいけど、そんな話が出てるなら初心者より先に誰かが騒ぐと思うので、ちょっと眉唾
>>210
左Marginが-500になってるから亜空間にトンドルんじゃないですか?

217:デフォルトの名無しさん
16/02/07 19:18:07.84 ubsUoPtC.net
あ、C++CLIって書いてあるの見落としてた

218:デフォルトの名無しさん
16/02/07 19:21:10.59 6bkdKOR7.net
>>217
Form Aplication=C++CLIって勘違いなのかね

219:デフォルトの名無しさん
16/02/07 19:22:50.89 ubsUoPtC.net
本当だ
「空のC++CLRプロジェクト」の作成テンプレート無くなってら
でもこれで困る人はWPFユーザーよりレアだと思う
混在アセンブリを作成している人くらいか?

220:デフォルトの名無しさん
16/02/07 19:34:03.60 ubsUoPtC.net
>>214
具体的にどこまでできていて、何ができないんだ
そもそも時間の文字列なのにTimeSpanなの?期間じゃなくて?

221:デフォルトの名無しさん
16/02/07 19:36:12.24 TdnGwusc.net
>>213
リッチクライアントの需要は今後また増えると思うよ
スマホアプリ群雄割拠で皆学んだと思うけど端末に依存しないUIプログラムはたとえ動いてもUXが悪くて使い物にならない
どうせ端末毎に最適化されたコードを書くならWebを捨ててリッチクライアントに回帰したほうが楽だし高品質じゃんとなる

222:デフォルトの名無しさん
16/02/07 19:55:35.52 ZN2qfSkc.net
>>220
説明不足ですみません
サーバーから送られてくるデータ(株価)が文字列なんです
それを受信しているのですが、今は受け取ったデータをtexboxに流しているだけです
10:00:00 100
10:00:10 101
10:00:30 102
10:00:59 99
10:01:05 100
・・・
・・

このデータを分毎に四本値に処理したいのですが最善の方法を教えてください
今の時刻から60秒の間隔で処理させるにはどうすれば良いか考えているのですが・・・

223:デフォルトの名無しさん
16/02/07 20:27:54.95 SMFdLNV2.net
>>222
前提と要求を1つ1つ箇条書きで列挙して

224:デフォルトの名無しさん
16/02/07 20:40:18.61 WdUVaaF1.net
>>222
前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく
受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
前回時刻と現在時刻の年月日時分を比べる
一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する
この程度が書けないようではこの先生きのこれないぜ
恐らく次は誰もが横着してねえで勉強しろカスと回答する

225:デフォルトの名無しさん
16/02/07 21:12:16.37 ZN2qfSkc.net
>>224
ありがとうございます
c#のことが全くわからないので助かりました

226:デフォルトの名無しさん
16/02/07 22:37:32.87 EIEJb+tM.net
継承という概念を学習中の初心者です
こういうことは可能なのかという質問をさせてください
Aというスーパークラスの中にStream型の変数strmがあり
Aを継承したBやCというサブクラス内では
Stream型から派生したFileStreamやMemoryStreamを代入しています
しかし当然ながらStream型の変数に入れているので
Stream型のメンバーは呼び出せても
FileStreamやMemoryStream固有のメンバーの呼び出しができません
これを上手いこと実現するような方法はありますか?
※現在はそういったメンバーの呼び出しのたびにキャストしています。
見当違いな考え方をしていたら指摘ください。
public class A {
protected Stream strm;
public A() {
strm = new Stream();
}
}
public class B : A {
public B() {
strm = new FileStream();
}
}
public class C : A {
public C() {
strm = new MemoryStream();
}
}

227:デフォルトの名無しさん
16/02/07 22:40:37.47 pDArDbnY.net
ジェネりクスを使え

228:デフォルトの名無しさん
16/02/07 22:46:28.86 2xuESUN6.net
>>226
そもそも何のためにAでstrmを宣言してるの?
Aの中でStreamに対する共通の処理(Close)の面倒を見たいとか?
だったらこうすればいい
abstract class A {
 protected abstract Stream Stream { get; }
 public void CloseStream() { this.Stream.Close(); }
}
class B : A {
 private Stream strm;
 public B() { strm = new FileStream(); }
 protected override Stream Stream { get { return strm; } }
}
protectedフィールドなんかよほどの事情が無い限り使っちゃダメ

229:デフォルトの名無しさん
16/02/08 00:38:01.16 omcXALNz.net
>>226
もはや継承は時代遅れ。

230:デフォルトの名無しさん
16/02/08 00:39:21.18 omcXALNz.net
>>210
Pageなんか使うなよ。

231:デフォルトの名無しさん
16/02/08 00:51:03.86 t4nfvp5Z.net
また変なのが来た来た

232:デフォルトの名無しさん
16/02/08 01:02:04.87 vHpbqQsu.net
継承はアンチパターン

233:デフォルトの名無しさん
16/02/08 01:02:40.81 qItXnEJ5.net
>>210
ソースもってこいや!

234:デフォルトの名無しさん
16/02/08 01:09:38.20 ohcgMxuP.net
FileStreamとMemoryStreamで共通の処理なんてあるのかね

235:デフォルトの名無しさん
16/02/08 02:08:36.47 REXLJUev.net
素人はわけもなく継承を使ってみたいんだよ。

236:デフォルトの名無しさん
16/02/08 02:45:20.79 9ExexpSh.net
public class A<T> where T : Stream {
 public T strm;
 public A() {}
}
public class B : A<FileStream> {
 public B() {
  strm = new FileStream("", FileMode.Open);
 }
}
public class C : A<MemoryStream> {
 public C() {
  strm = new MemoryStream();
 }
}

237:デフォルトの名無しさん
16/02/08 05:37:38.22 Mwo03qgv.net
>>236
内部実装のためにクラスの型引数を汚すな
共通のA型として扱えなくなってそれこそ継承の意味がない

238:デフォルトの名無しさん
16/02/08 07:03:28.50 blpM25DK.net
class B {
 public abstract Stream Create();
}
class M {
 public override Stream Create(){…}
 public void Method() {
  var s = base.Stream as MemoryStream;
 }
}

239:デフォルトの名無しさん
16/02/08 07:53:03.81 t4nfvp5Z.net
さっきからクソクラス貼ってる奴は何なの?
芸人気取り?

240:デフォルトの名無しさん
16/02/08 07:59:15.01 omcXALNz.net
>>226
> 固有のメンバーの呼び出し
それを使って、BとCに同じ振る舞いを持たせたいのか?
必要なケースが浮かばないが、無理矢理やるならAに
abstract int 振る舞い()
みたいなのを持たせれば良いが、お薦めはしない。

241:226
16/02/08 11:18:31.02 LZ12yzMb.net
まだ分からないことが多いので
皆さんに提示していただいたのを参考に一つずつ調べてみます
>240
ストリームに対する基本的な処理は
クラスAでまとめておいて
FileStreamやMemoryStreamを使うときは
それぞれ別のクラスBやCを用意して
そこではFileStreamやMemoryStreamのみが持つメソッドも
呼び出せるようにならないかなと思いました

242:デフォルトの名無しさん
16/02/08 11:50:15.03 GixGib55.net
>>241
固有の機能は直接Streamプロバティーを弄るんじゃなくて、固有の機能を使うメソッドをそれぞれのクラスに実装するのが常套手段だね

243:デフォルトの名無しさん
16/02/08 14:22:28.12 Wxu8bEfW.net
委譲案件

244:デフォルトの名無しさん
16/02/08 15:39:39.69 R5fKsVvX.net
フォーカスを奪わないで外部プログラムを実行する方法を教えてください

245:デフォルトの名無しさん
16/02/08 16:23:11.68 ONEbZjvm.net
外部プログラムを実行してから、
元のフォーカスに戻ればいいんじゃね?

246:デフォルトの名無しさん
16/02/08 16:28:23.58 7T6Ba+h0.net
外部のプログラムがフォーカスを弄る可能性があるので確実な方法は無い
特定のケースで良いのならフォーカスの奪い合いをする

247:デフォルトの名無しさん
16/02/08 18:23:27.98 cKFrgwtc.net
>>142ですが
>>152のやつのコードを書いてみたので載せておきます
URLリンク(ideone.com)

248:デフォルトの名無しさん
16/02/08 19:37:53.54 omcXALNz.net
>>247
お疲れ様。
細かい点は色々あるけど、初心者でこれだけ作れたら十分だと思う。
一点だけ。
Checkerは、static classでOK。

249:デフォルトの名無しさん
16/02/08 23:47:56.13 Y0ekGZiq.net
ダサいコードだな
センスないよ

250:デフォルトの名無しさん
16/02/09 00:37:07.07 1ndwTYNc.net
>>249
お前のコードをみせてみろ

251:デフォルトの名無しさん
16/02/09 04:33:13.63 +R3lhPoz.net
いやらしいっ

252:デフォルトの名無しさん
16/02/09 11:30:59.99 LZa6/uPt.net
Listから指定した範囲(intLange)の値を取得する時、範囲の大きさにもよるとは思いますが
for (int i = 0; i < intLange; i++)
{
bytArray[i] = lstArray[i];
}
よりも
bytArray = lstArray.GetRange(0, intLange).ToArray();
の、方が早いですか?

253:デフォルトの名無しさん
16/02/09 11:35:24.39 ki2Dugwk.net
>>252
それforとforeachの差だからね
最新のバージョンでは知らないけど、2.0や3.0の頃だと1万回ループで数百msの差で前者のほうが早かったはず

254:デフォルトの名無しさん
16/02/09 13:02:46.44 /Ul9S+Gp.net
実測してみるしかないと思う
状況によって、添字の有効範囲チェックがJITで消去されるかとかも変わる

255:デフォルトの名無しさん
16/02/09 13:50:52.33 ltAmqOcf.net
じゃ測って教えてください

256:デフォルトの名無しさん
16/02/09 14:02:17.15 QdOIBFj9.net
ググれば実測してるサイトでてくんだろ

257:デフォルトの名無しさん
16/02/09 15:49:05.37 LZa6/uPt.net
>>253
ありがとうございます
確かにListのGetRangeってforeachのRangeと同じですね
範囲指定して一括取得だからforで1個ずつループするよりも速いと思ったら、逆だったのですね
調べてもforeachの方が遅いのばかりでした
List.ForEachにすれば少し早くなるみたいですが、素直にforを使っておきます

258:デフォルトの名無しさん
16/02/09 18:54:10.80 ki2Dugwk.net
>1万回ループで数百msの差
これ見て後者で良いですねというレス期待してたんだが・・・

259:デフォルトの名無しさん
16/02/09 20:37:53.51 GXK9v6ZU.net
LINQ嫌いというか、LINQが理解できないオッサングラマが多いだけなんじゃね

260:デフォルトの名無しさん
16/02/09 21:57:04.73 kINyOVJ+.net
linq嫌いなのにsqlは大好きなオッさんなんなんだろう
昭和から働いてるエンジニアは不思議がいっぱい

261:デフォルトの名無しさん
16/02/09 22:12:09.83 g5cfApp1.net
マイクロ、ナノ秒の差でも速いほうがいいとか言っちゃうのは初心者にありがちだからそこも教えるべきなんじゃないかな

262:デフォルトの名無しさん
16/02/09 22:18:05.62 QoXK4omQ.net
>>252
後者はメソッド呼び出しのコスト + GetRangeとToArrayで2回ループ&インスタンス生成がかかる
GetRangeの代わりにTake使えば少しましになる
本当に速度が必要なら前者しかないけど
ちなみにforとforeachにそんな差は無いぞ

263:デフォルトの名無しさん
16/02/09 22:42:05.97 8C608Sxj.net
linqの欠点はデバッグしにくいだけだから、ハマったらどうしようもない複雑な奴は避けるべきではあるな
単純なlinqなら積極的に使うほうが見通し良くなるのにな

264:デフォルトの名無しさん
16/02/10 00:11:36.02 5vn52npc.net
FuncとActionで型キャストする必要がある時があってはまったわ

265:デフォルトの名無しさん
16/02/10 00:40:08.52 jozDLnvP.net
Linqでパラレルで回して速くできたりしないのか?

266:デフォルトの名無しさん
16/02/10 01:05:06.08 m6iCwwPq.net
C++では
struct A {int i;};
std::vector<A> v;
v.push_back(A());
v[0].i++; // ←こうできるのに
C#では
struct A {public int i;}
var list = new List<A>();
list.Add(new A());
//list[0].i++; // error CS1612: 変数ではないため、'List<A>.this[int]'の戻り値を変更できません。
A a = list[0];a.i++;list[0] = a; // ←こんな感じにしてる
これはどうしようもないんでつか?
this[int]で値型のコピーが返されるからどうしようもないですか?

267:デフォルトの名無しさん
16/02/10 01:26:54.77 +0u+KGwQ.net
>>266
発想が間違ってる

268:デフォルトの名無しさん
16/02/10 03:18:08.00 lkaYzkT1.net
>>266
listの中身変えるな

269:デフォルトの名無しさん
16/02/10 07:54:24.62 CjsvPSL/.net
>>266
自分で答え書いてるじゃん
そういう場合はクラス使え

270:デフォルトの名無しさん
16/02/10 19:56:16.17 4jI7WjZu.net
>>296
> そういう場合はクラス使え
ありがとうございます
var a = new A[10];
a[0] = new A();
a[0].i++; // ←これはうまく動く
これは一体どういうわけなんでしょう?
foreach (var i in typeof(A[]).GetInterfaces()) Console.WriteLine(i);
foreach (var i in typeof(List<A>).GetInterfaces()) Console.WriteLine(i);
で確認してみると両方ともIListとIList`1[A]を実装しておりそれぞれインデクサは
object this[int index] { get; set; }
T this[int index] { get; set; }
であり、これどっちもうまく行きそうも無いのになぜ配列は成功するんでしょうか?
ちなみに配列でもジェネリック版を使うと失敗します
((IList<A>)a)[0].i++; // error CS1612:
さらにリストに非ジェネリック版を使おうとしても
((System.Collections.IList)list)[0].i++; // error CS1061: 'object' に 'i' の定義が含まれておらず(略)
という想像通りの結末が待っています

271:270
16/02/10 20:09:08.83 JS1EW5Jr.net
あ、ちなみに>>270はクラスを使わず
struct A {public int i;}
のままでの話です

272:デフォルトの名無しさん
16/02/10 20:30:51.04 GRD3jx6h.net
>>265
出来るでしょ

273:デフォルトの名無しさん
16/02/10 21:02:55.80 kANvp85U.net
>>270
配列の場合はコピーではなく、元のデータそのものにアクセスするから。

274:デフォルトの名無しさん
16/02/10 21:39:28.41 lkaYzkT1.net
それぞれの処理がそれなりに重くないと、パラレルにしても早くならない。

275:デフォルトの名無しさん
16/02/10 23:21:04.39 CjsvPSL/.net
>>270
MSIL見ればたぶん分かるけど、IList<>のインデクサと配列のインデクサは別物
↓参考
URLリンク(stackoverflow.com)

276:デフォルトの名無しさん
16/02/10 23:40:43.38 EiL0Rwaw.net
>>273 >>275
おおっ!!
リンク先をぼんやり見るに配列のインデクサは
IListのものともIList<T>のものとは別物っぽいですね
どうやらMSILを勉強したら疑問は全部クリアになりそうです

277:デフォルトの名無しさん
16/02/11 08:48:06.29 5VElGoG8.net
C#とMySQLで素人ながらに帳票システム作ってるんだけど
形になってきたらテーブルの数が100近くなってきたんだが、
それなりのシステムになってくるとテーブル数ってこれくらい増えるもの?
それとも設計の仕方自体が問題?

278:デフォルトの名無しさん
16/02/11 09:12:07.75 bLlX/NkI.net
テーブル数100は相当なシステムだと思うけど
たとえばどんなテーブルがあるのか2,3例を出してほしい

279:デフォルトの名無しさん
16/02/11 09:32:15.00 5VElGoG8.net
やっぱり多いですか・・・
個人のデータが10種類くらい、項目別集計結果(種類としては4種類なので4×12)、
帳票結果12ヶ月分、集計計算するための条件設定項目20くらい(いろいろな条件によって計算処理が変わるため)
項目別集計結果と、設定項目が多いんだろうと思うのですが
システムとしては各人の個人データを元に、条件設定項目から各人がどの項目を集計するか判定し、
項目別集計結果(各テーブルはその月の全員の利用実績が記録されている)から拾ったデータや定義されたデータを
拾って計算処理に追加、さらに複雑な条件を条件設定項目を元に計算式または結果を変えて処理して
最後に月別の帳票結果に落とし込むという流れです
実際まだ100までいってないのですが、今の増え方だと完成になる頃にはそれくらいにいきそうで・・・
テーブルまとめられるのがないかを考えた方がいいですかね?

280:デフォルトの名無しさん
16/02/11 09:37:29.27 z2rGujpW.net
設計upしてくれないとなんとも言えないと思うが100行くような設計は間違ってそう。
少なくとも個人でやれる規模じゃない

281:デフォルトの名無しさん
16/02/11 09:38:46.08 M5CwB86R.net
>>279
集計結果はテーブルに落とさずにクエリーやビューで実現できないかを考えると良いと思います
集計テーブルは更新し忘れや更新順の間違いなどのバグ混入があるから
リアルタイムで結果を得られるビューを多用したほうがシステムは安定します

282:デフォルトの名無しさん
16/02/11 10:04:02.34 bLlX/NkI.net
集計テーブルが良くないのはもちろんだけど、
項目集計結果の4x12が理解できない
そんなもんカラムに月持たせたらいいだけじゃないのか

283:デフォルトの名無しさん
16/02/11 10:09:53.69 EtulpAui.net
いまいち分からないけど、個人,条件設定,集計結果がテーブルであって
残りはクエリか一時テーブルじゃないか?

284:デフォルトの名無しさん
16/02/11 10:11:05.88 EtulpAui.net
>>283
x 集計結果
o 帳票結果

285:デフォルトの名無しさん
16/02/11 10:29:30.35 5VElGoG8.net
なるほど、一時テーブルとクエリという方法で検討してみます どちらも全然頭になかったです>>
>>282
項目別集計結果は、帳票つくるシステムとは別に、拠点事業所の端末で作成されたcsvをメインのデータベース内の
月別テーブルにアップするように先に設計していたのですが、あわせて修正できないかやってみます
ただ、ひとつ疑問は、1ヶ月のレコード件数が最大で1万件程度ですが、一つのテーブルにして12万件入れるのと
1万件を12テーブル持つのでは、前者がいいということでしょうか? 
設計時は、一つのテーブルのカラム数が多くなるより(なんでも一つのテーブルに入れるなっていう記事を目にしたことがあって)
テーブルに分けた方がいいかと思って計算条件のための設定項目なんかもテーブル数が増えていったのですが
同じカラム構成のテーブルだったら、識別のためのカラムを追加してまとめたほうがよいものでしょうか

286:デフォルトの名無しさん
16/02/11 10:47:51.75 ztBwyrLR.net
>>285
件数は億行っても問題ないな。
それがまずいなら、パーティショニング
を検討してみたら

287:デフォルトの名無しさん
16/02/11 11:37:29.78 ECLK8Wqe.net
>>285
> 同じカラム構成のテーブルだったら
って言う話ではなくて、同じデータは纏めろってこと
何のデータか知らんけど、1月分と2月分って例えば売上げなら両方売上げと言う同じデータでしょ
以前は極端に件数が多いとかで分けることもあったけど、今時は >>286 の言う様に億クラスでも扱えるようにDB側で色々対応してるし、そもそも数十万件オーダーなんでしょ?

288:デフォルトの名無しさん
16/02/11 11:37:43.16 8yKF6m48.net
テーブルが今現在いくつあるかは問題じゃない
集約が今現在いくつあるかが問題
集約が多すぎるなら設計のやり直しが必要
適切なら数ならデータベースのリファクタリングは容易い
先ずは今現在のコンテキストマップとそれぞれのコンテキストにどんな集約があるかを書き出してみる事だ
個人で組んでるなら休日1人日で充分かな

289:デフォルトの名無しさん
16/02/11 14:46:12.43 cgj/3tMp.net
FormにPictureboxを貼り付けて、Formをリサイズした時にフォームサイズに比例してPictureboxもサイズ変更したいのですが、
Anchorを四方向に指定するだけではダメなのでしょうか?
実際にやってみると、拡大した時に大きくなり過ぎて、縮小した時に消えてしまいます。
ButtonでAnchorを四方向にしても同じでした。
Windows7、VS2012、Framework4.5にて確認しています。

290:デフォルトの名無しさん
16/02/11 14:59:02.23 5VElGoG8.net
みなさん丁寧なご指導ありがとうございます
とりあえず見直し初めて、20テーブルくらいになったところですが、WorkBenchで見ていてもえらくすっきりして
計算処理の実行そのものも劇的に早くなりました
>>288
データベースの勉強不足で【集約」ってのがピンと来ないもので・・・ぐぐると集約関数ってのがでてきますが、
テーブルの中でグループ化している数が多すぎると問題ってことでしょうか?
コンテキストっていうのも初心者の馬鹿な私には掴み所がない言葉で、テーブルをさしているのでしょうか
それとも扱うデータにおいての諸要素のことを指しているのでしょうか?

291:デフォルトの名無しさん
16/02/11 15:18:23.73 M5CwB86R.net
>>289
そういうソフトはwpf使えば簡単にできるしトラブルも少ないんだけどね

292:デフォルトの名無しさん
16/02/11 16:15:50.89 RfBB3K0B.net
親プロセス...GUIアプリ
子プロセス...コンソールアプリ
親プロセスで子プロセス起動して、親プロセスは子プロセスからの標準出力をリダイレクトして簡易的な文字列通信を行ってます。
これを、逆に親プロセスからの文字列を子プロセスで拾うようにしたいのですが、いい方法を教えて下さい。

293:デフォルトの名無しさん
16/02/11 16:37:05.76 M5CwB86R.net
>>292
NamedPipe使ってみたらどう?

294:デフォルトの名無しさん
16/02/11 17:36:47.18 rBnM9L0I.net
>>292
子プロセスを起動引数または標準入力を入力したら標準出力で結果を返す関数と見なして、単発で繰り返し呼べばいい
疎結合にするためにわざわざプロセス分けてるんだろ?
複雑な通信したら本末転倒だろ

295:デフォルトの名無しさん
16/02/11 17:52:03.60 LNzJYiWm.net
勝手な妄想でよく喋るなあコイツ

296:デフォルトの名無しさん
16/02/11 18:54:21.19 xg5e2eV7.net
>>289
アンカーは四方からの距離を一定にするだけなので
比例させたいなら計算で求めてBoundsに設定してください

297:デフォルトの名無しさん
16/02/11 21:28:17.58 onfBwuXU.net
クラスの配列を作りたい場合、
こんなふうにすると1000個のクラス配列が出来たのですが、
こういうやり方で良いですか?
最初に1個の大きさで確保しておいて、そこに1000個を代入できる理由が分かりません。
static void Main(string[] args)
{
 MyClass[] mc = new MyClass[1];
 mc = myfunc();
}
static MyClass[] myfunc()
{
 MyClass[] mc = new MyClass[1000];
 return mc;
}
class MyClass
{
 int i;
};

298:デフォルトの名無しさん
16/02/11 21:32:31.88 XGMVVJFq.net
要件次第ですがプログラムが動作するならそれで問題ありません

299:デフォルトの名無しさん
16/02/11 21:34:35.73 6rGpnoDF.net
>>297
new MyClass[1] の行は全く意味がない。
再代入するな。

300:デフォルトの名無しさん
16/02/11 21:50:03.96 LNzJYiWm.net
int i = 1;
i = 2;
最初に1を代入しておいて、そこに2を代入できる理由が分かりません。と言ってるのと同じ。
配列だと特殊な代入がされる、というようなことはない。

301:デフォルトの名無しさん
16/02/11 21:52:08.90 y42s+ygJ.net
>>297
var使えばこういう誤解も無くなるんだろうか…

302:デフォルトの名無しさん
16/02/11 22:19:29.15 0OAFh+KU.net
>最初に1個の大きさで確保しておいて、そこに1000個を代入
してるわけじゃない
配列を表す変数を宣言(MyClass[] mc)して
確保(new MyClass[1] や new MyClass[1000])した領域を指す値をそこに代入している
mc = myfunc() したら最初の new MyClass[1]の領域は捨てられる

303:デフォルトの名無しさん
16/02/11 23:48:59.67 xmsrvKus.net
ド素人質問だと思うのですが、
フィールドって必要なのでしょうか?
メソッドに引数を渡せば
大抵は事足りるんじゃないかと感じており
それとも、属性に保持する情報って、
大規模開発では多いのでしょうか?

304:デフォルトの名無しさん
16/02/12 00:06:42.25 +A7Pa+CR.net
引数増やすのめんどいからオブジェクト指向的にする。
別に手段の1つにすぎないんだから好きにやれば。
オブジェクト指向だって万能じゃないし。

305:デフォルトの名無しさん
16/02/12 00:16:33.85 gmcC03qf.net
>>303
大規模開発ではとんでもない数のフィールドが書かれる
しかしそれはたいてい設計者がクソなだけなんだけどな

306:デフォルトの名無しさん
16/02/12 01:50:15.47 bwdIAcv4.net
人クラスなら名前、生年月日、性別とかは必要だろ
フィールドに保持しなかったらどこに保存するのさ

307:デフォルトの名無しさん
16/02/12 03:26:50.21 /kaeyohP.net
純lisperなんじゃないの(適当)

308:デフォルトの名無しさん
16/02/12 04:01:17.91 YUGvj8/e.net
フィールドとは何なのかはっきりさせんと話が始まらん
プライベートなメンバ変数までフィールドで不要だっていうなら
保持すべき情報はどこにもつんだと

309:デフォルトの名無しさん
16/02/12 04:05:44.88 00n43yFC.net
>>303
基本的にその考え方でOK。
ある粒度で状態を持ちたい時だけに使えば良い。

310:デフォルトの名無しさん
16/02/12 10:18:37.00 rgit47xD.net
foreachを使う場合にもindexの数字が欲しい場合、int i=0 を冒頭に入れる必要がありますが、
int i = 0;
foreach (var item in items)
これを一行にして、
foreach (int i=0, var item in items)
などどできませんか?

311:デフォルトの名無しさん
16/02/12 10:29:32.09 YfpA0AcD.net
>>310
>int i=0 を冒頭に入れる必要がありますが、
必要ないよ
foreachでindex使いたいならこれで良いんじゃね?
foreach(var element in boys.Select((name, index) => new {name, index})) {
SampleMethod(element.name, element.index);
}

312:デフォルトの名無しさん
16/02/12 12:02:57.40 rgit47xD.net
>>311
ありがとうございました。こんな書き方は知らなかったです。
int i=0; と書くのは時代遅れでしょうか?

313:デフォルトの名無しさん
16/02/12 12:10:45.51 EWonquhS.net
集合演算にインデックスを持ち出す事がまず時代遅れ

314:デフォルトの名無しさん
16/02/12 12:26:58.04 /IhDLmoA.net
時代遅れだろうが何だろうが需要があるからSelectにも
(IEnumerable<TSource>, Func<TSource, Int32, TResult>)なんて
オーバーロードがあるんだよなぁ

315:デフォルトの名無しさん
16/02/12 12:51:27.19 00n43yFC.net
>>312
先ずは、どうして"i"が必要かを考えるべき。

316:デフォルトの名無しさん
16/02/12 14:08:59.79 0EJEZiQw.net
for (int i = 0; i < items.Count; i++) {var item = items[i];}
じゃいかんの?
Enumeratorの代わりにintで回すのって素朴でいいじゃん

317:デフォルトの名無しさん
16/02/12 14:45:43.58 583AFnzM.net
昔はコレクションのアイテム削除でエラーとなるからインデックスが普通だったけど
今はToArray()使うのが一般的だから、インデックス使う用事が殆どなくなったよな

318:デフォルトの名無しさん
16/02/12 17:56:35.96 gWHJSKHH.net
for/foreach で回すなら >>311 より >>316 の方がシンプルでいい
Ix の ForEach なら許容範囲
items.ForEach((item, i) => { … })

319:303
16/02/12 21:32:41.81 1BqXCbHv.net
フィールドに関して、色々なご意見ありがとうございます
特に保持すべき必要が無い場合は、
あえてオブジェクト指向に則ってプロパティを持つ必要は無いようですね
参考になります

320:デフォルトの名無しさん
16/02/12 21:37:41.69 /kaeyohP.net
それにしても、変なことを質問するもんですね
必要でないことでもやるべきですか?って人に聞きながら育ったのかしら

321:デフォルトの名無しさん
16/02/12 22:01:07.80 E6xN8nAg.net
過不足なく言われた事だけをやっていれば良い
そういう教育を受けてきた世代なんだろう
何を隠そう私もそういう人間だからよくわかる

322:デフォルトの名無しさん
16/02/12 23:14:54.71 00n43yFC.net
必要かそうでないかを適切に判断出来るのなら誰も苦労しない。

323:デフォルトの名無しさん
16/02/13 00:17:04.86 jNiAqett.net
何事にも疑問を持つことは重要な素養であるとは思うが
常識とされているものの場合、必要である理由を考えるべきで
不要である可能性を列挙するアプローチは間違いの元だな
世の中大抵のことはデファクトスタンダードが正しいものだ
ただ、全てじゃないから検証するのも面白い

324:デフォルトの名無しさん
16/02/13 07:17:00.61 xA/85emw.net
ジャップIT業界の常識が正しいとは思えんが

325:デフォルトの名無しさん
16/02/13 07:45:12.36 BxXCiqDX.net
必要かどうか予め判断するんでなく
必要になったら使えばいいだけだよ
遅延評価好きだろお前ら

326:デフォルトの名無しさん
16/02/13 08:36:03.93 Aj9JV+Py.net
>>311
LINQ使うならforeach全く要らない。

327:デフォルトの名無しさん
16/02/13 09:04:32.16 bNYKyrDh.net
最終的な出力にはforeach必要でしょ
ForEach厨は関数型というものを理解してないアホ

328:デフォルトの名無しさん
16/02/13 09:12:00.94 BxXCiqDX.net
forceがないからToArrayとかやってるの見ると超ダセーと思う

329:デフォルトの名無しさん
16/02/13 09:54:08.99 r5Ze34qU.net
ググっても出てこなかったから質問します。
C# WPFでフォーム上のラジオボタンを○から自作画像に置き換える方法を探しています
どなたか実装方法またはやりたいことを別な方法で実装する方法ご存じないでしょうか

要は画像A、画像Bがクリックされるたびに交互に切り替わって
その状態を取得できればいいです

330:デフォルトの名無しさん
16/02/13 10:05:58.61 bNYKyrDh.net
>>329
WPFではそういうのは一行もコード書かないんだよ
XAMLでControlTemplateとVisualStateManagerを使う

331:デフォルトの名無しさん
16/02/13 10:33:00.45 gWYi+rc9.net
DataTableで行削除について質問です
1万件くらいあるテーブルをDataTableに読み込んで処理していて
指定のカラムに入ってる特定の区分(値)のデータのみ削除したいのですが、
Linqで絞り込んだコレクションをforeachで回して
dt.Rows.Remove(row)とすると、回す毎にコレクション自体が変わってしまってエラーとなるし
かといってforで全件回すのもなんかスマートでないというか
for (int i = 0; i < dt.Rows.Count; i++)
{
if(dt.Rows[i].RowState != DataRowState.Deleted && (int)dt.Rows[i]["hoge"] == hoge
{
dt.Rows[i].Delete();
}
}
他に方法はございますでしょうか

332:デフォルトの名無しさん
16/02/13 10:35:41.14 wFus9lhk.net
>>331
DataTableに入れる前のクエリで特定行を除く

333:デフォルトの名無しさん
16/02/13 10:59:31.81 bNYKyrDh.net
>>331
LINQ使うんなら弄くり回すよりCopyToDataTableで丸ごと作り直すのが筋
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

334:デフォルトの名無しさん
16/02/13 11:21:16.59 gWYi+rc9.net
レスどうもです
もう少し具体的に言うと、データベース上に月別のデータがまとめた1つのテーブルにあって、
指定月のデータだけをごっそり入れ替えたい(カラムには月表示があるのでそれで絞ってます)のです
月毎にテーブル分けて、指定月のテーブルだけ全件削除、新規のデータを挿入が手っ取り早いのですが、
年間のテーブル1つでやりたいと思ってるのですが
>>333
CopyToDataTableも最初は考えたのですが、データベースから引っ張ってきてるので
DataTable作り直すと結局戻すときに全部入れ直さないといけないのかなと思うのですがどうなんでしょう
>>332
データベースから読み込む時点でテーブルわけといた方がよいのですかね

335:デフォルトの名無しさん
16/02/13 12:10:19.83 lxxM+jNF.net
>>334
普通にDataTable.Select()の結果をforeachで回してDelete()でマークして
必要に応じてDataTable.AcceptChanges()でコミットしても良いんちゃう?
ってのは>>331に限った話だけど…DB操作だとコード云々よりADO.NETの範疇か
ADO.NETとかEntity FrameworkとかC#でのDB操作はよく知らんけど…
基本形はDataTable.Select()からDataRow弄くってUpdate()で差し戻す?
先にSQLでDELETEしといてINSERTするだけでも良さそうだけど、最適解は…知らぬわい

336:デフォルトの名無しさん
16/02/13 12:27:41.87 wFus9lhk.net
やりたいことは指定月のデータ内容をUPDATEすることのように思えるんだが
データ量にもよるけどDELETE→INSERTしなくても、更新したいデータを一時テーブルに出力して更新データとJOINして
年間テーブルを一時テーブルでUPDATEすればいいんじゃないのかな?
更新データ量にもよるけど、100万行程度なら上のやり方でも十分速度は出たと思う

337:デフォルトの名無しさん
16/02/13 12:38:11.72 xA/85emw.net
リポジトリ書いて
月指定して月間データ取ってきて
ループで各エンティティのメソッドを呼んで保存する
これでOK

338:デフォルトの名無しさん
16/02/13 13:19:52.36 jNiAqett.net
Linqのデータ削除の典型例
var removes =Items.Where(x=>条件式).ToList();
removes.ForEach(x=>Items.Remove(x));
データ削除はこれの応用で大体行けるはずなんだけどな

339:デフォルトの名無しさん
16/02/13 14:53:28.98 gWYi+rc9.net
多くのレスに感謝です
データ内容をUPDATEというより、その都度の処理結果なので全く別の結果として保存したいんですよね
なので一回削除したかったんです
結論から言うと、>>338さんのとおり、月別に格納したDataRowのコレクションをToListして、
FoEachで元のデータテーブルから該当DataRowを削除することでいけました コードも1行ですみました
ただ、Remove使うとDataTableのUpdateで処理されなかったのでDeleteで削除フラグにたてて
最後にUpdateで削除されるようにしたらうまくいきました 
Result.ToList().ForEach(row => row.Delete());
※ResultはLINQで月別に抽出したDataRowのコレクション

340:デフォルトの名無しさん
16/02/13 15:39:45.33 2MAOXUes.net
ラムダで副作用かっこわるい

341:デフォルトの名無しさん
16/02/13 15:44:08.26 06O3qiSZ.net
俺なんかもっとかっこわるいぞ
.Select()内で { 何か; return 0; } とやってたりするよ

342:デフォルトの名無しさん
16/02/13 16:20:11.54 s+9Slq2v.net
ぶっさ

343:デフォルトの名無しさん
16/02/13 16:58:50.07 6KRp/oK6.net
テスト

344:デフォルトの名無しさん
16/02/13 17:08:05.06 Aj9JV+Py.net
>>3399
Result.Select(row => row.Delete());
ではだめですか?

345:デフォルトの名無しさん
16/02/14 06:44:28.00 bzGf7eU2.net
>>315
デバガーで今何番目の要素を処理しているか知りたい時はどうするの?

346:デフォルトの名無しさん
16/02/14 06:58:06.59 mWiu8nHo.net
何番目という情報が必要なコードであれば
それを否定しているレスじゃないでしょ

347:デフォルトの名無しさん
16/02/14 07:55:00.43 l8k1FRK9.net
バグを取るよりバカを直した方がいいんしないかな

348:デフォルトの名無しさん
16/02/14 08:03:10.87 5pBX52FC.net
indexが使う前提で話をしてんのに
indexが必要か考えろって返答は意味不明
使うって言ってんだろ

349:デフォルトの名無しさん
16/02/14 08:21:36.38 0ADcRE3m.net
index使うバカが気付いてないだけでそんなものは必要ない文脈かもしれないだろ
まずはそこを徹底的に見直してこい
話はそれからだって言ってるんだよ

350:デフォルトの名無しさん
16/02/14 08:32:42.46 4fsYhBCo.net
通常の使い方じゃないかも知れんが、数百、数千おきにデータをフラッシュしたい需要はあるな

351:デフォルトの名無しさん
16/02/14 09:02:33.92 l8k1FRK9.net
>>349
デバガーどうこうは突っかかってる方がバカだと思ったけど
その言いぐさだとお前がバカで正解だったっぽい
余計なお世話って分かる?
分かんないか

352:デフォルトの名無しさん
16/02/14 09:34:12.02 n0LELDsn.net
LINQ使えよってLINQ厨が言ってるだけだろ。
これだからLINQ厨を見ると苦笑いしか出ないんだ。

353:デフォルトの名無しさん
16/02/14 09:39:27.99 0ADcRE3m.net
>>351
やれやれ
これだから下流コーダーは困る

354:デフォルトの名無しさん
16/02/14 10:20:37.80 aN+xXKUu.net
まぁまぁ、よくわかんねーけど、インデックス使いたいってことを否定するならさ、
人間はどうせ死ぬんだから、生きてる意味もなくない?ってぐらい暴論だと思うのよね。
お前らも、大好きなあの娘との思い出を取り出すとしてさ、
初めてキスをしたのは何回目のデートだっけとか数えたりするだろ?

355:デフォルトの名無しさん
16/02/14 10:23:31.55 3Nivwysz.net
まあ実際初心者スレでは「そんなことはどうでもいいから何をしたいのか目的を晒せ」
の方が効果的なケースがほとんどだからな

356:デフォルトの名無しさん
16/02/14 10:25:33.24 IGxuUtz8.net
そのCollection の Count が 0 でループは一回も実行されなかったとさ

357:デフォルトの名無しさん
16/02/14 11:22:01.93 0ADcRE3m.net
>>355
これな
根本的なところからおかしいんだよな
おかしいものに疑問を持たず表面的な対応しかしない
それがホンマもんのバカってやつだ

358:デフォルトの名無しさん
16/02/14 12:08:57.25 Mh99LtVN.net
初心者スレに出入りしてるやつがどれだけのスキルを持ってるのかとw

359:デフォルトの名無しさん
16/02/14 12:10:14.28 12CQcbJ/.net
スレ的にLINQはダメとなってるけど、これより早く処理する方法ってあるの?

360:デフォルトの名無しさん
16/02/14 12:17:27.87 CfikNejg.net
>>359
どのレスみたらLinqがダメって結論になるのか教えてくれよ

361:デフォルトの名無しさん
16/02/14 14:03:25.60 zXLi9Jt7.net
310からの質問の文脈を読まずに、349 がいう文脈とは

362:デフォルトの名無しさん
16/02/14 14:55:03.59 OZvUt5KM.net
>>354
うむ
ゆーうぃん

363:デフォルトの名無しさん
16/02/14 14:55:46.84 CAYLYmrN.net
>>329です
>>330さんのおかげでとりあえずの目標は達成できました。
それで次の目標としてラジオボタンについて
RadioButton1→{画像A, 画像B}
RadioButton2→{画像C, 画像D}
{}内はそれぞれfalseとtrueに対応
という風にしたいのですが、ControlTemplateを使うやり方だと調べても一つのコントロールを一つのパターンで上書きする方法ばかり見つかります。
どなたか方法かせめて検索キーワードだけでもお教え願えないでしょうか

分かりにくいかもしれないので一応文章でも書くと
複数のラジオボタンがあって、それぞれに別パターンの画像を設定したいということです

364:デフォルトの名無しさん
16/02/14 15:13:16.36 7V8dKUBy.net
>>363
いろいろあるけど、ResourceDictionaryを差し替えるのが正統なやり方
テンプレート内で直接画像を指定するかわりにリソースディクショナリ内のリソース名を指定し、
コントロールのResourcesプロパティに実際の画像のセットを含んだリソースディクショナリを渡す(XAMLで)

365:デフォルトの名無しさん
16/02/14 19:05:47.82 4fsYhBCo.net
正当なのは Styleにx:Keyを設定して Style="{StaticResource xxx}" じゃねーのかな?
<Grid.Resouces>
<Style x:Key="hoge" ・・・・・
パターン1
</Style>
<Style x:key="hage" ・・・・
パターン2
</Style>
</Grid.Resouces>
<RadioButton Style="{staticResouce hoge }" ・・・ />
<RadioButton Style="{StaticResource hage}" ・・・・/>

366:デフォルトの名無しさん
16/02/14 19:22:41.55 bVZvMVSZ.net
もしかしてWebサイトってオワコン?

367:デフォルトの名無しさん
16/02/14 19:30:08.69 CAYLYmrN.net
>>364
>>365
お二方ありがとうございます。
出来ました
ボタンを置いてダブルクリックするだけでイベントハンドラが作れてた頃が懐かしいよう

368:デフォルトの名無しさん
16/02/14 19:51:03.86 Bsnhcx6p.net
>>366
ASP.NETでのWEBアプリに対してのWEBサイト、ってならオワコン
一般的な意味でのWEBサイトなら、変化しながら生き続けてる

369:デフォルトの名無しさん
16/02/14 21:43:39.23 AnW4+fzX.net
どなたか分かれば教えてください。
フォームアプリでwebbrowserコントロールを使って外部のwebページを操作していますが、
ページ内のボタンを押したときにjavascriptのyesnoのダイアログメッセージが起動します。
この起動イベントをフォームの方でハンドリングする方法はあるんでしょうか?
やりたいことはフォームのプログラムで自動的にyesを選択させたいです。

370:デフォルトの名無しさん
16/02/14 21:52:11.02 79nYzABo.net
質問させてください。何度かスレで話題に出ていたdapperについて、ソースコードを見たいなと思い
githubにログインできるようにして「dapper-dot-net-master.zip」というファイルをDLしました。
そのファイルを展開して、「Dapper.sln」を「VS Express 2013 for desktop」で開こうとしたのですが、
「.xproj」という拡張子のファイルに対応していないらしく、「ソリューションを開く」が失敗してしまいます。
「.xproj」という拡張子のファイルはプロジェクトに関するものと想像はできるのですが、VS2013では開けないのでしょうか?
各ファイルを単純にテキストとしてならば見れるのですが・・・
github自体も使い始めたばかりでなにか勘違いしてる部分があったらすみません。

371:デフォルトの名無しさん
16/02/14 21:58:59.28 NxxLKQZP.net
dnx projectは2015じゃないと開けないと思うよ
2015入れるか諦めて

372:デフォルトの名無しさん
16/02/14 22:04:19.65 3Nivwysz.net
>>370
・DapperのソースをGitHubから取得するのにGitHubのアカウントなんか要らない
・GitHubからソースを取得したいならzipで落とすなんてダサいことしないでGitでcloneしろ
・dapperはシングルファイルだからわざわざプロジェクトを開く必要なんかない

373:デフォルトの名無しさん
16/02/14 22:37:18.19 79nYzABo.net
早速の返信ありがとうございます。
>>371
VS2013では開けないんですね。
>>372
いろいろと指摘ありがとうございます。
シングルファイルというのはどれか1つのファイルに機能が集約されていてそれをみれば大体の機能はわかるということでしょうか?
まだファルシのルシがコクーンでパージ状態なので、ちょっとずつ見ていこうと思います。

374:デフォルトの名無しさん
16/02/14 22:41:26.26 9PrtlM5P.net
>ファルシのルシがコクーンでパージ状態
なんかかっちょいい

375:デフォルトの名無しさん
16/02/14 23:27:52.45 l8k1FRK9.net
ナツカシス

376:デフォルトの名無しさん
16/02/15 12:04:40.36 fB6G7n7H.net
C#でExcelのアドイン(として提供されているDLL)を利用する方法はありますか?

377:デフォルトの名無しさん
16/02/15 13:12:27.80 Xk4DTp51.net
どなたかPDFを作成出来る無料の帳票出力を教えて下さい
itextでゴリゴリ書きまくってますが不器用すぎて泣きそうです
ウェブサーバ兼アプリケーションサーバ兼データベースサーバの2層クライエントです
言語はc#メインで使ってますが別言語でも構いません

378:デフォルトの名無しさん
16/02/15 13:24:45.99 RH62Jtcm.net
>>376
c#でexcel開いてそのアドイン読み込めばいいだろ

379:デフォルトの名無しさん
16/02/15 13:26:20.25 fB6G7n7H.net
excel開きたくないんだけど、開かないとだめ?

380:デフォルトの名無しさん
16/02/15 13:38:28.96 RH62Jtcm.net
>>379
excel無しでそんなもん使って 何したいん?

381:デフォルトの名無しさん
16/02/15 14:42:32.23 j4KeTWwY.net
wpfで画面作って流し込む(適当)

382:デフォルトの名無しさん
16/02/15 17:49:12.29 fB6G7n7H.net
>>380
excelを別な用途で使うこともあるので影響でないようにと思ったのだけれど

383:デフォルトの名無しさん
16/02/15 18:08:31.90 Zk6ilfTk.net
ただ

384:デフォルトの名無しさん
16/02/15 19:46:04.29 cfVd0V/r.net
fontDialogでOpentypeフォントを選択できるようにするにはどうすれば良いのでしょうか?
いろいろ自分なりに調べて、一応ここ(URLリンク(www.pinvoke.net))
のSample Codeを動かしてみたんですが、
bool result = ChooseFont(pChoosefont);
の部分で保護されたメモリ云々と怒られてしまいます。
どうもpChoosefontの割当サイズが小さすぎるようなのですが、その先がわからず手詰まりです
これ以外でも、何か別の方法があればそれでもOKです
(InstalledFontCollectionのotf対応版を作るなど)

385:デフォルトの名無しさん
16/02/16 08:50:39.96 bZe3Oc9S.net
前回時刻(time)と現在時刻(time_v)の時分を比べて同じならa違うならbと言う処理をさせるにはどう書けば良いのでしょうか?

386:デフォルトの名無しさん
16/02/16 09:08:18.90 F8ZGrSAk.net
>>385
if文も分からないうちからプログラム書こうとすんな
入門でもやってこい
初心者以前だろ

387:デフォルトの名無しさん
16/02/16 09:12:56.20 XFjRYdah.net
>>385
時刻の差はTimeSpan。差が無い場合はTimeSpan.Zeroと等しい。
後は分かるだろ。

388:デフォルトの名無しさん
16/02/16 09:17:10.77 0FWmG97A.net
先日の株価がどうのこうのって子?
やっぱり向いてないよ
ランサーズとかで発注したら?
一日無駄にすると一万円超捨ててるって考えたら安いよ

389:デフォルトの名無しさん
16/02/16 09:29:21.17 jhW7ARua.net
>>385
DateTimeをDBに入れたりすると微妙な誤差が混入したりするから、差分をとってある程度小さければ同じとみなすとうまくいく場合があります

390:デフォルトの名無しさん
16/02/16 10:05:56.70 /rvb+Ho8.net
>>384
定義とサンプルコード丸コピしただけで動いたわ Win7/32bit
>InstalledFontCollectionのotf対応版を作るなど
どのみちFontオブジェクト作れないからこれは意味ないよ
フォント使った処理は全部GDI関数とか使わないといけない

391:デフォルトの名無しさん
16/02/16 14:00:24.71 7ODQ3t3P.net
>>390
一応ダイアログは開くんですが、フォントファミリ・スタイル・サイズを選択してOKを押すと落ちるんです
当方64bitなのでそれが原因? とりあえず仮想環境でもテストしてみて、ダメだったら当分は諦めようと思います

392:デフォルトの名無しさん
16/02/16 14:33:44.14 /rvb+Ho8.net
あー、なるほど
CF_USESTYLEがいらない
lpszStyleが書き換えられるのにstringで書き換えられないからエラーになってる

393:デフォルトの名無しさん
16/02/16 16:34:02.89 bZe3Oc9S.net
>>386
…イジメないでください
入門書読んでも分差をはかるの一言だけなのでだからどうすれば?と言う状態なのですみません
>>387 389
ありがとうございます
勉強になります
>>388
そんな所あるなんて知りませんでした!

394:デフォルトの名無しさん
16/02/16 18:04:53.07 b0fHFSg3.net
PDF帳票ってTeXとかじゃダメなのか

395:デフォルトの名無しさん
16/02/16 18:07:41.48 G5mJ2hfm.net
それこそ標準対応のXPSでいいんじゃ

396:デフォルトの名無しさん
16/02/16 19:20:11.75 7ODQ3t3P.net
>>392
おお! なるほど!
該当部分を削ったところ今度は正常に動作しました。ありがとうございます。
できれば選択したフォント名をstringで取得する方法まで教えていただければ幸いです。

397:デフォルトの名無しさん
16/02/16 20:46:25.41 7ODQ3t3P.net
すいません自己解決しました。
Marshal.PtrToStructure(pLogfont, logfont);
string _fontName = logfont.lfFaceName;
で無事にフォント名が取得できました。ありがとうございました。

398:デフォルトの名無しさん
16/02/17 16:53:29.04 O2urVYVM.net
16bitグレースケールのBitmapを作成して保存しようとすると、GDI+エラーになります。
URLリンク(ideone.com)
(33行目)
16bitのBitmapが表示とか出来ないのはモニタとかの仕様上仕方ないとして、
Bitmapデータは出来ている感じなのでとりあえず保存したいのですが、何か間違っているのでしょうか?
自分で2byteバイナリファイルとして保存した方が早いのかもしれませんが、よろしくお願いします。

399:デフォルトの名無しさん
16/02/17 17:37:09.55 nE07dZjC.net
Image::Save(string)はpngで保存する
pngの規格には16bitグレイスケール形式はあるみたいだけどGDI+のエンコーダはサポートしてないっぽい
bmpはそもそも16bitグレイスケール扱えたっけ?

400:デフォルトの名無しさん
16/02/17 17:46:34.78 O2urVYVM.net
なるほど、pngで保存するのですね。
PixelFormatにFormat16bppGrayScaleがあるのでいちおー扱える様ですが、何か微妙っぽいですね。
作成した16bit BitmapをGraphicsクラスに入れたら、そこでメモリエラーになりました。
WinFormじゃなくWPFを使った方がいいのかな?
>Format16bppGrayScaleは使えるのか?実験してみた。
URLリンク(imagingsolution.blog107.fc2.com)

401:デフォルトの名無しさん
16/02/17 18:02:43.59 qUPmCiGq.net
URLリンク(www.youtube.com)

402:デフォルトの名無しさん
16/02/17 18:07:35.89 PDqw71kq.net
>>400
ファイルに書き出してからImagemagickでも使って変換したら?

403:デフォルトの名無しさん
16/02/17 18:54:21.22 vx64Twya.net
>>402
調べてみたらMagick.NETで16bit用なんてのもあるのですね。
ありがとうございます。

404:デフォルトの名無しさん
16/02/17 22:10:28.91 /bboS/b7.net
LINQについてなんですが、LINQスレが過疎ってるのでこっちに書き込みします。
一ヶ月分の出勤を集計したいと言う要望があります。
ちょっとLINQを使ってみようと思いまして、データセットに一月分のデータを全て取り込んで、各種条件で集計したいと思ってます。
dsというデータセットにDtSyukkinMeiと言うデータテーブルがあります。
ここまでのコードでデータが入ってるのは確認できています。
その後、一人目の社員の一ヶ月分を日付順に取り出してみようと思いましてテストとして
String ShainCode = "00001"
var datas = ds.DtSyukkinMei.AsEnumerable()
.Where(x => x.SyukkinCode == ShainCode)
.OrderBy(x => x.SyukkinDate)
.Select(x => x);
int tmpcnt2 = 1;
foreach (var test in datas)
{
Console.WriteLine(tmpcnt2 + ":" + test.SyukkinName + " " + test.SyukkinDate.ToString());
tmpcnt2++;
}
と言うコードでやってみました。
コンソールに書き出してみると指定社員の最初の日付のデータのみが抽出されます。
一行だけではなく、指定社員のその月のデータが並び替えされて全て取り出せるつもりなのですが、何か勘違いしてますでしょうか?
よろしくお願いします。

405:デフォルトの名無しさん
16/02/17 22:59:38.26 AvPZV+sJ.net
char space = ' ';
このスペースの文字を指定回数分連結したchar[]作りたいんだけど、
いかようにもできそうで、センスあるコードというかすっきり簡潔な方法ってどんなもんですかね

406:デフォルトの名無しさん
16/02/17 23:11:48.57 6W33gIm7.net
下記のサイトにあるObjectViewer-20080530.zipというC#のソースについて質問です。
ttp://wikki.sakura.ne.jp/gir-lab/?Object%20Viewer
※URLが書き込めなかったので、URLは全て全角英数にしました。
VisualStudio2015で実行しようとすると、次の部分でエラーが出て実行できません。
場所)foreach (var ko in kobj.Objects)
内容)型 'System.NullReferenceException' のハンドルされていない例外が ObjectViewer.exe で発生しました
    追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
※実行しようとすると、inの所が黄色くなって733のエラーが出ます
動くようにするにはどこをどう直せばいいでしょうか?
よろしくお願いします


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