[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2ch.scのread.cgiへ]
Update time : 02/29 10:30 / Filesize : 136 KB / Number-of Response : 536
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 00:52:20.67 ID:OtXGSzkV.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1448207673/

■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1443271409/

■コードを貼る場合は↓を使いましょう。
ideone.com/

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

179 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:28:31.35 ID:HCmnTZ9V.net]
あまりの奇形さに苦笑い

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

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

182 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:54:57.00 ID:5ZOibTPd.net]
下を見てマシマシ言うのはやめていただきたい
底辺の人間のようだ

183 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:00:46.96 ID:BtpsJL+V.net]
f1() => 1;
f2() => "xyz";

Foo => f1() f2();

こうすると奇形さ倍増w

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

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

186 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:43:31.32 ID:mc+HvOWK.net]




187 名前:デフォルトの名無しさん [2016/02/06(土) 22:51:44.38 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:55:41.01 ID:7g0sefOr.net]
まずdataの内容をコンソールに吐いて確認

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

190 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:00:07.68 ID:BtpsJL+V.net]
外部からのデータの整合性を前提にするのは絶対にやってはいけない事。

Parsecでも使っときなさい。

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

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

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

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

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

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



197 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:48:43.66 ID:BtpsJL+V.net]
原因は、encodingと予想して寝る。

198 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:51:16.10 ID:5yNQjtYt.net]
デバッガでdataの中身見ればいいだけじゃないの?

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

200 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:41:02.93 ID:mpmibCLh.net]
何の為にデバッガがあるというのか・・・・・・・

201 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 03:43:57.06 ID:E6ZbUD9S.net]
デパッグとは

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

203 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 04:29:19.69 ID:0jpZBnXl.net]
アセンブラ、アセンブリ、アセンブル…

204 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:06:46.60 ID:YehISXuU.net]
>>196
すまん、なんか寝ぼけてたわ

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

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



207 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:54:26.02 ID:+iI8pPYd.net]
ReadLineは改行含まれん

208 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:55:38.99 ID:7cY+VLxE.net]
>>205
使ってみます

209 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 15:32:32.86 ID:P4gwgVRD.net]
.NETはデータブレークが使えないからうんこなんだよな。

210 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:54:24.49 ID:QHXOM6yq.net]
VSがForm Aplicationのサポートを事実上終了したので、個人用アプリ開発においてVSのC++CLRからC# WPFに移行しようとしています。
が、思ったよりも違いが多くて訳がわかりません。初心者スレとのことなので質問するのですが

以下の様な画面構成でアプリを作ろうとしています
1.Mainメニュー(ボタンとして主機能画面に移行・設定画面に移行・それと主機能の内容を選択するコンボボックス)
2.主機能画面(複数画面を遷移するのでPageで作成予定)
3.設定画面(ダイアログにするかどうかは考え中)

んで、ダイアログの表示はFormAplicationと大差ないので余裕だったのですがPageというものをうまく表示できません
つまり、NavigationWindowを継承していないwindow(MainWindow)からNavigationServiceを動かす方法がよくわかりません。
というか単語の意味を正確に把握できていないので自分が正しく質問できているかもよくわかりません

参考にしたサイトは以下です:
https://msdn.microsoft.com/ja-jp/library/ms752299(v=vs.110).aspx
gushwell.ldblog.jp/archives/52335648.html

自分の書いたソースは
<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 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:58:49.93 ID:TdnGwusc.net]
formサポート終了するってまじか

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

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

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

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

216 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:09:23.84 ID:ubsUoPtC.net]
別に終わってもいいけど、そんな話が出てるなら初心者より先に誰かが騒ぐと思うので、ちょっと眉唾

>>210
左Marginが-500になってるから亜空間にトンドルんじゃないですか?



217 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:18:07.84 ID:ubsUoPtC.net]
あ、C++CLIって書いてあるの見落としてた

218 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:21:10.59 ID:6bkdKOR7.net]
>>217
Form Aplication=C++CLIって勘違いなのかね

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

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

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

222 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:55:35.52 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:27:54.95 ID:SMFdLNV2.net]
>>222
前提と要求を1つ1つ箇条書きで列挙して

224 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:40:18.61 ID:WdUVaaF1.net]
>>222
前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく

受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
前回時刻と現在時刻の年月日時分を比べる
一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する

この程度が書けないようではこの先生きのこれないぜ
恐らく次は誰もが横着してねえで勉強しろカスと回答する

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

226 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:37:32.87 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:40:37.47 ID:pDArDbnY.net]
ジェネりクスを使え

228 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:46:28.86 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:38:01.16 ID:omcXALNz.net]
>>226
もはや継承は時代遅れ。

230 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:39:21.18 ID:omcXALNz.net]
>>210
Pageなんか使うなよ。

231 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:51:03.86 ID:t4nfvp5Z.net]
また変なのが来た来た

232 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:02:04.87 ID:vHpbqQsu.net]
継承はアンチパターン

233 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:02:40.81 ID:qItXnEJ5.net]
>>210
ソースもってこいや!

234 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:09:38.20 ID:ohcgMxuP.net]
FileStreamとMemoryStreamで共通の処理なんてあるのかね

235 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 02:08:36.47 ID:REXLJUev.net]
素人はわけもなく継承を使ってみたいんだよ。

236 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 02:45:20.79 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 05:37:38.22 ID:Mwo03qgv.net]
>>236
内部実装のためにクラスの型引数を汚すな
共通のA型として扱えなくなってそれこそ継承の意味がない

238 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:03:28.50 ID:blpM25DK.net]
class B {
 public abstract Stream Create();
}

class M {
 public override Stream Create(){…}
 public void Method() {
  var s = base.Stream as MemoryStream;
 }
}

239 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:53:03.81 ID:t4nfvp5Z.net]
さっきからクソクラス貼ってる奴は何なの?
芸人気取り?

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

241 名前:226 mailto:sage [2016/02/08(月) 11:18:31.02 ID:LZ12yzMb.net]
まだ分からないことが多いので
皆さんに提示していただいたのを参考に一つずつ調べてみます

>240
ストリームに対する基本的な処理は
クラスAでまとめておいて
FileStreamやMemoryStreamを使うときは
それぞれ別のクラスBやCを用意して
そこではFileStreamやMemoryStreamのみが持つメソッドも
呼び出せるようにならないかなと思いました

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

243 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 14:22:28.12 ID:Wxu8bEfW.net]
委譲案件

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

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

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



247 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 18:23:27.98 ID:cKFrgwtc.net]
>>142ですが
>>152のやつのコードを書いてみたので載せておきます

ideone.com/LPaQn3

248 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 19:37:53.54 ID:omcXALNz.net]
>>247
お疲れ様。

細かい点は色々あるけど、初心者でこれだけ作れたら十分だと思う。

一点だけ。
Checkerは、static classでOK。

249 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 23:47:56.13 ID:Y0ekGZiq.net]
ダサいコードだな
センスないよ

250 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 00:37:07.07 ID:1ndwTYNc.net]
>>249
お前のコードをみせてみろ

251 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 04:33:13.63 ID:+R3lhPoz.net]
いやらしいっ

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

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

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

255 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 13:50:52.33 ID:ltAmqOcf.net]
じゃ測って教えてください

256 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 14:02:17.15 ID:QdOIBFj9.net]
ググれば実測してるサイトでてくんだろ



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

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

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

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

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

262 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 22:18:05.62 ID:QoXK4omQ.net]
>>252
後者はメソッド呼び出しのコスト + GetRangeとToArrayで2回ループ&インスタンス生成がかかる

GetRangeの代わりにTake使えば少しましになる
本当に速度が必要なら前者しかないけど

ちなみにforとforeachにそんな差は無いぞ

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

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

265 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 00:40:08.52 ID:jozDLnvP.net]
Linqでパラレルで回して速くできたりしないのか?

266 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 01:05:06.08 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 01:26:54.77 ID:+0u+KGwQ.net]
>>266
発想が間違ってる

268 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 03:18:08.00 ID:lkaYzkT1.net]
>>266
listの中身変えるな

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

270 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:56:16.17 ID: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 mailto:sage [2016/02/10(水) 20:09:08.83 ID:JS1EW5Jr.net]
あ、ちなみに>>270はクラスを使わず
struct A {public int i;}
のままでの話です

272 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 20:30:51.04 ID:GRD3jx6h.net]
>>265
出来るでしょ

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

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

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

276 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:40:43.38 ID:EiL0Rwaw.net]
>>273 >>275
おおっ!!
リンク先をぼんやり見るに配列のインデクサは
IListのものともIList<T>のものとは別物っぽいですね

どうやらMSILを勉強したら疑問は全部クリアになりそうです



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

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

279 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 09:32:15.00 ID:5VElGoG8.net]
やっぱり多いですか・・・
個人のデータが10種類くらい、項目別集計結果(種類としては4種類なので4×12)、
帳票結果12ヶ月分、集計計算するための条件設定項目20くらい(いろいろな条件によって計算処理が変わるため)
項目別集計結果と、設定項目が多いんだろうと思うのですが

システムとしては各人の個人データを元に、条件設定項目から各人がどの項目を集計するか判定し、
項目別集計結果(各テーブルはその月の全員の利用実績が記録されている)から拾ったデータや定義されたデータを
拾って計算処理に追加、さらに複雑な条件を条件設定項目を元に計算式または結果を変えて処理して
最後に月別の帳票結果に落とし込むという流れです

実際まだ100までいってないのですが、今の増え方だと完成になる頃にはそれくらいにいきそうで・・・
テーブルまとめられるのがないかを考えた方がいいですかね?

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

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

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

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

284 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 10:11:05.88 ID:EtulpAui.net]
>>283
x 集計結果
o 帳票結果

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

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



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

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

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

290 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:59:02.23 ID:5VElGoG8.net]
みなさん丁寧なご指導ありがとうございます
とりあえず見直し初めて、20テーブルくらいになったところですが、WorkBenchで見ていてもえらくすっきりして
計算処理の実行そのものも劇的に早くなりました

>>288
データベースの勉強不足で【集約」ってのがピンと来ないもので・・・ぐぐると集約関数ってのがでてきますが、
テーブルの中でグループ化している数が多すぎると問題ってことでしょうか?
コンテキストっていうのも初心者の馬鹿な私には掴み所がない言葉で、テーブルをさしているのでしょうか
それとも扱うデータにおいての諸要素のことを指しているのでしょうか?

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

292 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:15:50.89 ID:RfBB3K0B.net]
親プロセス...GUIアプリ
子プロセス...コンソールアプリ

親プロセスで子プロセス起動して、親プロセスは子プロセスからの標準出力をリダイレクトして簡易的な文字列通信を行ってます。
これを、逆に親プロセスからの文字列を子プロセスで拾うようにしたいのですが、いい方法を教えて下さい。

293 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:37:05.76 ID:M5CwB86R.net]
>>292
NamedPipe使ってみたらどう?

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

295 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:52:03.60 ID:LNzJYiWm.net]
勝手な妄想でよく喋るなあコイツ

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



297 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:28:17.58 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:32:31.88 ID:XGMVVJFq.net]
要件次第ですがプログラムが動作するならそれで問題ありません

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

300 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:50:03.96 ID:LNzJYiWm.net]
int i = 1;
i = 2;

最初に1を代入しておいて、そこに2を代入できる理由が分かりません。と言ってるのと同じ。
配列だと特殊な代入がされる、というようなことはない。

301 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:52:08.90 ID:y42s+ygJ.net]
>>297
var使えばこういう誤解も無くなるんだろうか…

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

303 名前:デフォルトの名無しさん [2016/02/11(木) 23:48:59.67 ID:xmsrvKus.net]
ド素人質問だと思うのですが、
フィールドって必要なのでしょうか?

メソッドに引数を渡せば
大抵は事足りるんじゃないかと感じており

それとも、属性に保持する情報って、
大規模開発では多いのでしょうか?

304 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 00:06:42.25 ID:+A7Pa+CR.net]
引数増やすのめんどいからオブジェクト指向的にする。

別に手段の1つにすぎないんだから好きにやれば。

オブジェクト指向だって万能じゃないし。

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

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



307 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 03:26:50.21 ID:/kaeyohP.net]
純lisperなんじゃないの(適当)

308 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 04:01:17.91 ID:YUGvj8/e.net]
フィールドとは何なのかはっきりさせんと話が始まらん

プライベートなメンバ変数までフィールドで不要だっていうなら
保持すべき情報はどこにもつんだと

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

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

311 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 10:29:32.09 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 12:02:57.40 ID:rgit47xD.net]
>>311
ありがとうございました。こんな書き方は知らなかったです。
int i=0; と書くのは時代遅れでしょうか?

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

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

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

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



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

318 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:56:35.96 ID:gWHJSKHH.net]
for/foreach で回すなら >>311 より >>316 の方がシンプルでいい

Ix の ForEach なら許容範囲
items.ForEach((item, i) => { … })

319 名前:303 [2016/02/12(金) 21:32:41.81 ID:1BqXCbHv.net]
フィールドに関して、色々なご意見ありがとうございます

特に保持すべき必要が無い場合は、
あえてオブジェクト指向に則ってプロパティを持つ必要は無いようですね

参考になります

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

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

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

323 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:17:04.86 ID:jNiAqett.net]
何事にも疑問を持つことは重要な素養であるとは思うが
常識とされているものの場合、必要である理由を考えるべきで
不要である可能性を列挙するアプローチは間違いの元だな

世の中大抵のことはデファクトスタンダードが正しいものだ
ただ、全てじゃないから検証するのも面白い

324 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 07:17:00.61 ID:xA/85emw.net]
ジャップIT業界の常識が正しいとは思えんが

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

326 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:36:03.93 ID:Aj9JV+Py.net]
>>311
LINQ使うならforeach全く要らない。



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

328 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:12:00.94 ID:BxXCiqDX.net]
forceがないからToArrayとかやってるの見ると超ダセーと思う

329 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:54:08.99 ID:r5Ze34qU.net]
ググっても出てこなかったから質問します。
C# WPFでフォーム上のラジオボタンを○から自作画像に置き換える方法を探しています

どなたか実装方法またはやりたいことを別な方法で実装する方法ご存じないでしょうか


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

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

331 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:33:00.45 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:35:41.14 ID:wFus9lhk.net]
>>331
DataTableに入れる前のクエリで特定行を除く

333 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:59:31.81 ID:bNYKyrDh.net]
>>331
LINQ使うんなら弄くり回すよりCopyToDataTableで丸ごと作り直すのが筋
https://msdn.microsoft.com/ja-jp/library/bb386921(v=vs.110).aspx

334 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 11:21:16.59 ID:gWYi+rc9.net]
レスどうもです
もう少し具体的に言うと、データベース上に月別のデータがまとめた1つのテーブルにあって、
指定月のデータだけをごっそり入れ替えたい(カラムには月表示があるのでそれで絞ってます)のです
月毎にテーブル分けて、指定月のテーブルだけ全件削除、新規のデータを挿入が手っ取り早いのですが、
年間のテーブル1つでやりたいと思ってるのですが

>>333
CopyToDataTableも最初は考えたのですが、データベースから引っ張ってきてるので
DataTable作り直すと結局戻すときに全部入れ直さないといけないのかなと思うのですがどうなんでしょう
>>332
データベースから読み込む時点でテーブルわけといた方がよいのですかね

335 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:10:19.83 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:27:41.87 ID:wFus9lhk.net]
やりたいことは指定月のデータ内容をUPDATEすることのように思えるんだが
データ量にもよるけどDELETE→INSERTしなくても、更新したいデータを一時テーブルに出力して更新データとJOINして
年間テーブルを一時テーブルでUPDATEすればいいんじゃないのかな?
更新データ量にもよるけど、100万行程度なら上のやり方でも十分速度は出たと思う



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

338 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:19:52.36 ID:jNiAqett.net]
Linqのデータ削除の典型例
var removes =Items.Where(x=>条件式).ToList();
removes.ForEach(x=>Items.Remove(x));

データ削除はこれの応用で大体行けるはずなんだけどな

339 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 14:53:28.98 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:39:45.33 ID:2MAOXUes.net]
ラムダで副作用かっこわるい

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

342 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:20:11.54 ID:s+9Slq2v.net]
ぶっさ

343 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:58:50.07 ID:6KRp/oK6.net]
テスト

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

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

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



347 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 07:55:00.43 ID:l8k1FRK9.net]
バグを取るよりバカを直した方がいいんしないかな

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

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

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

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

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

353 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 09:39:27.99 ID:0ADcRE3m.net]
>>351
やれやれ
これだから下流コーダーは困る

354 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:20:37.80 ID:aN+xXKUu.net]
まぁまぁ、よくわかんねーけど、インデックス使いたいってことを否定するならさ、
人間はどうせ死ぬんだから、生きてる意味もなくない?ってぐらい暴論だと思うのよね。

お前らも、大好きなあの娘との思い出を取り出すとしてさ、
初めてキスをしたのは何回目のデートだっけとか数えたりするだろ?

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

356 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:25:33.24 ID:IGxuUtz8.net]
そのCollection の Count が 0 でループは一回も実行されなかったとさ



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

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

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

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

361 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 14:03:25.60 ID:zXLi9Jt7.net]
310からの質問の文脈を読まずに、349 がいう文脈とは

362 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 14:55:03.59 ID:OZvUt5KM.net]
>>354
うむ
ゆーうぃん

363 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 14:55:46.84 ID:CAYLYmrN.net]
>>329です

>>330さんのおかげでとりあえずの目標は達成できました。
それで次の目標としてラジオボタンについて

RadioButton1→{画像A, 画像B}
RadioButton2→{画像C, 画像D}

{}内はそれぞれfalseとtrueに対応

という風にしたいのですが、ControlTemplateを使うやり方だと調べても一つのコントロールを一つのパターンで上書きする方法ばかり見つかります。
どなたか方法かせめて検索キーワードだけでもお教え願えないでしょうか


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

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

365 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:05:47.82 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:22:41.55 ID:bVZvMVSZ.net]
もしかしてWebサイトってオワコン?



367 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:30:08.69 ID:CAYLYmrN.net]
>>364
>>365
お二方ありがとうございます。
出来ました

ボタンを置いてダブルクリックするだけでイベントハンドラが作れてた頃が懐かしいよう

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

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

370 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 21:52:11.02 ID:79nYzABo.net]
質問させてください。何度かスレで話題に出ていたdapperについて、ソースコードを見たいなと思い
githubにログインできるようにして「dapper-dot-net-master.zip」というファイルをDLしました。
そのファイルを展開して、「Dapper.sln」を「VS Express 2013 for desktop」で開こうとしたのですが、
「.xproj」という拡張子のファイルに対応していないらしく、「ソリューションを開く」が失敗してしまいます。

「.xproj」という拡張子のファイルはプロジェクトに関するものと想像はできるのですが、VS2013では開けないのでしょうか?
各ファイルを単純にテキストとしてならば見れるのですが・・・

github自体も使い始めたばかりでなにか勘違いしてる部分があったらすみません。

371 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 21:58:59.28 ID:NxxLKQZP.net]
dnx projectは2015じゃないと開けないと思うよ
2015入れるか諦めて

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

373 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:37:18.19 ID:79nYzABo.net]
早速の返信ありがとうございます。

>>371
VS2013では開けないんですね。

>>372
いろいろと指摘ありがとうございます。
シングルファイルというのはどれか1つのファイルに機能が集約されていてそれをみれば大体の機能はわかるということでしょうか?
まだファルシのルシがコクーンでパージ状態なので、ちょっとずつ見ていこうと思います。

374 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:41:26.26 ID:9PrtlM5P.net]
>ファルシのルシがコクーンでパージ状態

なんかかっちょいい

375 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 23:27:52.45 ID:l8k1FRK9.net]
ナツカシス

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



377 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 13:12:27.80 ID:Xk4DTp51.net]
どなたかPDFを作成出来る無料の帳票出力を教えて下さい
itextでゴリゴリ書きまくってますが不器用すぎて泣きそうです

ウェブサーバ兼アプリケーションサーバ兼データベースサーバの2層クライエントです
言語はc#メインで使ってますが別言語でも構いません

378 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 13:24:45.99 ID:RH62Jtcm.net]
>>376
c#でexcel開いてそのアドイン読み込めばいいだろ

379 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 13:26:20.25 ID:fB6G7n7H.net]
excel開きたくないんだけど、開かないとだめ?

380 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 13:38:28.96 ID:RH62Jtcm.net]
>>379
excel無しでそんなもん使って 何したいん?

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

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

383 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 18:08:31.90 ID:Zk6ilfTk.net]
ただ

384 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:46:04.29 ID:cfVd0V/r.net]
fontDialogでOpentypeフォントを選択できるようにするにはどうすれば良いのでしょうか?
いろいろ自分なりに調べて、一応ここ(www.pinvoke.net/default.aspx/comdlg32/ChooseFont.html)
のSample Codeを動かしてみたんですが、

bool result = ChooseFont(pChoosefont);

の部分で保護されたメモリ云々と怒られてしまいます。
どうもpChoosefontの割当サイズが小さすぎるようなのですが、その先がわからず手詰まりです
これ以外でも、何か別の方法があればそれでもOKです
(InstalledFontCollectionのotf対応版を作るなど)

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

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



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

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

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

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

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

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

393 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 16:34:02.89 ID:bZe3Oc9S.net]
>>386
…イジメないでください
入門書読んでも分差をはかるの一言だけなのでだからどうすれば?と言う状態なのですみません

>>387 389
ありがとうございます
勉強になります

>>388
そんな所あるなんて知りませんでした!

394 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 18:04:53.07 ID:b0fHFSg3.net]
PDF帳票ってTeXとかじゃダメなのか

395 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 18:07:41.48 ID:G5mJ2hfm.net]
それこそ標準対応のXPSでいいんじゃ

396 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 19:20:11.75 ID:7ODQ3t3P.net]
>>392
おお! なるほど!
該当部分を削ったところ今度は正常に動作しました。ありがとうございます。

できれば選択したフォント名をstringで取得する方法まで教えていただければ幸いです。



397 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 20:46:25.41 ID:7ODQ3t3P.net]
すいません自己解決しました。

Marshal.PtrToStructure(pLogfont, logfont);
string _fontName = logfont.lfFaceName;

で無事にフォント名が取得できました。ありがとうございました。

398 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 16:53:29.04 ID:O2urVYVM.net]
16bitグレースケールのBitmapを作成して保存しようとすると、GDI+エラーになります。
ideone.com/uDBK9v
(33行目)

16bitのBitmapが表示とか出来ないのはモニタとかの仕様上仕方ないとして、
Bitmapデータは出来ている感じなのでとりあえず保存したいのですが、何か間違っているのでしょうか?
自分で2byteバイナリファイルとして保存した方が早いのかもしれませんが、よろしくお願いします。

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

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

>Format16bppGrayScaleは使えるのか?実験してみた。
imagingsolution.blog107.fc2.com/blog-entry-65.html

401 名前:デフォルトの名無しさん [2016/02/17(水) 18:02:43.59 ID:qUPmCiGq.net]
https://www.youtube.com/watch?v=lopqXAj87J8

402 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 18:07:35.89 ID:PDqw71kq.net]
>>400
ファイルに書き出してからImagemagickでも使って変換したら?

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

404 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 22:10:28.91 ID:/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 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 22:59:38.26 ID:AvPZV+sJ.net]
char space = ' ';
このスペースの文字を指定回数分連結したchar[]作りたいんだけど、
いかようにもできそうで、センスあるコードというかすっきり簡潔な方法ってどんなもんですかね

406 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:11:48.57 ID: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のエラーが出ます

動くようにするにはどこをどう直せばいいでしょうか?
よろしくお願いします



407 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:23:14.47 ID:yAxqBiJ2.net]
Enumerable.Repeat(' ', 10).ToArray()
まずは、センスのないやつどーぞ

408 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:44:23.75 ID:sImTzQ0m.net]
>>404
データまで含めて>>1とか>>4に貼って

>>405
stringコンストラクタでは不満か?
new string(' ', 10)

409 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:47:54.88 ID:AvPZV+sJ.net]
>>407 408
レスありがとうございます。
今自分も調べながらやってましたが、
new string(' ', 10)が一番素直ですね・・・
あとはPadLeftとPadRight併用でスッキリ簡潔になりそうです

410 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:50:51.96 ID:yAxqBiJ2.net]
char[] じゃないんかい!

411 名前:406 mailto:sage [2016/02/18(木) 01:40:58.04 ID:NcYC7RZF.net]
同じ行が2か所ありましたので訂正します。

public TreeNode CreateTreeNode(KernelObject kobj)内にある
foreach (var ko in kobj.Objects)の行でエラーが発生します。

412 名前:406 mailto:sage [2016/02/18(木) 01:55:49.87 ID:NcYC7RZF.net]
管理者権限で実行すればエラーは出ませんでした

413 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 09:51:27.98 ID:8Ob41omT.net]
自分で追えよ・・・ Nullで権限がアレでって それで分かんなきゃ直してどうこうなんて無理。

414 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 10:02:59.44 ID:SB52IWqF.net]
というか実際に管理者権限が必要なんだろ
直すとか言う問題か?
Windowsのexploit見つけて権限奪取しない限り無理だろ
アホらしい

415 名前:デフォルトの名無しさん [2016/02/18(木) 10:30:01.92 ID:NcYC7RZF.net]
>>413-414
>>1
>なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

416 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 10:47:07.89 ID:8Ob41omT.net]
NG処理して終了



417 名前:デフォルトの名無しさん [2016/02/18(木) 11:16:57.56 ID:ZKcMSiXn.net]
https://www.youtube.com/watch?v=JOdFOSa73C8

418 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 11:18:37.62 ID:CG2yACMM.net]
>>415
ID:8Ob41omTみたいなクズに言っても無駄だから
NG処理して終了
がおすすめ

419 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 11:22:13.67 ID:CG2yACMM.net]
>>415
あと、文をスペース区切りしてるアホはスルー推奨

420 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 11:48:51.47 ID:e9QCPxI3.net]
必死すぎワロタ

421 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 11:51:57.10 ID:IWN3hz7k.net]
>>420=ID:8Ob41omT

422 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:07:25.42 ID:tZY/i+gW.net]
こいつマジ必死でワロタ

423 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:10:50.65 ID:Rcq9wZ6p.net]
いちいち反応せずに黙ってNGしとけクソボケ

424 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 15:01:12.25 ID:X4zyXl/p.net]
シリアライズ出来るものと
出来ないもは何が違うのですか?

425 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 15:10:53.95 ID:oZznJMNM.net]
シリアライズ出来ないリソースを持っているか否かだね

426 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 15:25:33.12 ID:X4zyXl/p.net]
>>425
そこがよく分かりません。どんなものでも
何らかのデータなのだから、シリアライズ出来ない理由が分かりません。



427 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 16:33:59.22 ID:UlVzz0Kl.net]
参照型は必ずしもシリアライズできるとは限らん。

お前をシリアライズしたら、
お前の知っている母ちゃんは今まで知ってた母ちゃんじゃないかもしれない。

428 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 17:21:52.60 ID:Nn+bwMYz.net]
>>426をシリアライズし、100年後にデシリアライズしたとしよう
その頃にはお前の両親は他界しているし、お前の愛するPCも壊れている
ヒキニートであるお前はシリアライズされる前にできていたことが何一つできず、そのまま餓死するわけだ
多くのオブジェクトは様々な外部の要素に依存しているから、単独でシリアライズ/デシリアライズしても機能しないんだよ

429 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 18:00:09.26 ID:05rrwnvo.net]
>>426
ファイルストリームなんかシリアライズしても意味無いでしょ。

430 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 18:13:08.76 ID:TyHWpNkb.net]
説明下手な奴に限って傲慢あるある

431 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 18:27:30.28 ID:hhAx0KRP.net]
やろうと思えばシリアライズできないデータなんか無いよ
メモリダンプ取って直にオブジェクト取り出せるから
んなことやっても意味ないから馬鹿以外はやらない

432 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 19:19:09.72 ID:kgpZ3dMl.net]
そーいや自作ビューアのサムネイルを保存するのに、横着して全部シリアライズしてたら無駄にでかくなった
使う分だけシリアライズってどうすんの?

433 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 19:35:52.42 ID:42G1e3Su.net]
問題になってる出来る出来ないってのは本質的に出来るかどうかではなく
シリアライズ出来ますって属性がついてるかどうかの違いの気がする
あるいは特定のシリアライザがシリアル化/解除の方法を知ってるかどうかか

434 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 19:51:06.90 ID:oZznJMNM.net]
まずはシリアル化とは何かを定義しよう

435 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/18(木) 19:52:01.87 ID:ir69mPa/.net]
>>432
画像を縮小

436 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 20:11:57.88 ID:TyHWpNkb.net]
>>434
朝牛乳かけて食べるやつ



437 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 21:03:39.51 ID:05rrwnvo.net]
>>432
Attribute付けるだけでは?

438 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:13:12.28 ID:X4zyXl/p.net]
>>431
そう言う事ですね。
やれば出来るんですよね。納得。

439 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:49:57.72 ID:J2TnYaKy.net]
いやアンマネージリソースのハンドルとか持ってたら無理だろ
シリアライズ自体はできると言えなくもないが
デシリアライズした時点で確実に壊れている

440 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 00:00:00.31 ID:cNiHKU+s.net]
何を保持してるしているか判断かのうであれば
自前のシリアル化デシリアル化する部分のコード書けるでしょう

逆に何を保持しているか知らない物は保存する価値なんてない

441 名前:431 mailto:sage [2016/02/19(金) 05:37:45.34 ID:HFWhA+S0.net]
馬鹿だなお前ら
こういう食い下がり方する奴には、正しくなかろうと、
本人が望んでる答えを返してお引き取り願うのが一番正しい
この手の質問は女に多い
同意して欲しいだけのくせに否定されることに耐えられないから
質問の体を取らせているにすぎない

442 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 07:57:47.74 ID:6O+Ly4Vm.net]
モヒカンとは最も相容れないタイプだな…

443 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 10:19:14.45 ID:3/d8Z/on.net]
>>428
頭悪い童貞が書くような長文だ。

444 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 14:36:52.18 ID:AYZd97/P.net]
アホな質問かもしれないんですが・・・
一つのメソッドの中でコントロールいじる場合、メソッド抜けるまでは反映されませんよね
たとえば
Label1.Text = "0000";
public void ChangeText(){
Label1.Text = "1234";
Sleep(30);
Label1.Text = "5678";}
みたいなとき、Label1は0000の表示後に、Sleep分表示がとまって、5678となって1234が表示されます
メソッド抜けるまでは画面上のコントロールの変更ってのは反映されないのは仕方ないんですかね

445 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 14:38:57.86 ID:AYZd97/P.net]
>Sleep分表示がとまって、5678となって1234が表示されます
1234は表示されないの間違いです・・・
初心者的には上のコードだと、1234が表示された状態でSleep(30)分待機して5678に切り替わって欲しいところなんですが

446 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 14:57:16.42 ID:cObyQ139.net]
Label1.Refresh(); を入れては



447 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 15:01:07.03 ID:qpWieAWs.net]
asyncメソッドにしてSleepの代わりにTask.Delayを置いてawaitすれば〜?

とは言うものの、メッセージループ理解できてない初心者にこれをやらせると、どこかで爆発しそうだな

448 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 15:15:36.22 ID:PT7381jP.net]
>>444
其のためにBeginInvokeってのが有って、ソレを使えば表示更新したあとの処理が記述できますよ

449 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 15:16:28.45 ID:Kz4OZB/T.net]
UIスレッドでSleepしたらそこで処理が完全に止まっちゃうでしょ
1234に書き変えたら、タイマーかワーカースレッドに投げて即リターン

450 名前:デフォルトの名無しさん [2016/02/19(金) 16:35:02.98 ID:3ls1YNX5.net]
windows.controlsが使いたくてsilverlightを導入して参照を追加したんだが
RichBoxTextを使おうとすると曖昧な参照ってエラーメッセージが出るんだがこれどうにかならないのか?
System...RichBoxTextってしたらエラー自体はなくなるんだが
その後RichBoxText型で宣言した変数にa.Textって使い方が出来なくて困ってるんだ
a.Textが使える方法か、曖昧な参照ってエラーがなくなる方法か教えてください
silverlight導入してから再起動とかは一応してみました

451 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 17:29:52.93 ID:y4Mdmv2A.net]
RichBoxTextじゃなくて、RichTextBoxだよね?

System.Windows.Forms.RichTextBoxなのか、
System.Windows.Controls.RichTextBoxなのか、
どっちなのかわからんからはっきりしなさい、というエラーでしょ。

using System.Windows.Forms;を削除すればそのエラーは出なくなるけど、
そうすると他に不都合が出るだろうから、どうしようもない。

using Hoge = System.Windows.Controls;とでもしておけば、
Hoge.RichTextBoxと書けるようになるから、それでお茶を濁すくらいか。

それから、System.Windows.Controls.RichTextBoxには、
Textというプロパティは存在しないので、a.Textという書き方は出来ないよ。

452 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 20:26:10.11 ID:e/Byruqe.net]
ちょっと良くわからないので質問します

あるファイルが有ります。
データの入り方はこんな感じです

A1:data1,data2,data3
A2:data4,data5,data6,data7,data8
A3:data9,data10

やろうとしていることは2つあって
まずはデータを読み込んでそれを画面に反映する。こっちはまあ普通にできそうです

んでようやっと本題ですが
画面の入力に応じてデータを書き換えたいです
例えば

A1:data1,data2,data3
A2:data4,data5,data6,data7,data8
A3:data9,data10

だったものを

A1:data1,data2,data3
A2:data11,data12,data13,data14,data15
A3:data9,data10

としたいのですが
File操作系の関数をMSDNで調べても「ファイルの途中から上書きする」ような操作がさっぱり見当たりません

実装困難であればファイルにデータのオブジェクトを作成してバイナリでまるまる書き込む/読み込む形式に設計変えようと思ってます

453 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 20:59:49.31 ID:fK254q94.net]
FileStreamを使ってるならSeekしてWriteしたらダメなの?

454 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 21:19:49.73 ID:G849YxIn.net]
A1とか何でdataがどうなってるのか知らんが
書き変えたい位置にSeekしてからWriteすれば書き変わるんじゃないの

455 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 21:38:04.45 ID:e/Byruqe.net]
>>453>>454
申し訳ありません、その方法がわからないのです

ちなみに
A1とかをキーにして、書き換えたい行を特定し、ファイル操作を実行
という流れを想定しています

seekもやFileStreamのReadとかも調べてみましたが「今A2の行だよ」と知る方法がさっぱりわかりません

456 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 22:03:22.35 ID:9PjCd1YL.net]
その例だと読み込み時にキー毎のバイナリ位置を保存しておく必要があるね

でも可変長のテキストファイルっぽいし
変更位置以降は全て書き直しになる可能性が高いから
ファイル操作の部分操作に頑張って対応しなくても良いケースの予感がします



457 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 22:05:12.15 ID:fK254q94.net]
小さいファイルなら途中から書き変えるなんてやらずに、
丸ごと読み込んで丸ごと書き出した方がいいと思うよ。

まずは、それで入出力を完成させたらどうだろう。
他の方法は、その後にトライすればいいんじゃないかな。

458 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 22:57:06.17 ID:S80Z1mdL.net]
パワーポイントに配置したWindowsmediaplayerのURLをC#から指定する方法を教えていただけないでしょうか

459 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 23:32:02.40 ID:G849YxIn.net]
>>455
テキストファイルのような、行で区切られてるようなものをイメージしてるなら
ファイルの途中を書き換える事は出来ないと思っておけ
一旦全部読み込んで、行ごとに分けて、特定行を探して、書き換えて全部の行を保存しろ

460 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 23:38:43.21 ID:KnuHyZ1B.net]
>>459
ランダムアクセスは?

461 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:28:41.92 ID:wZfvWExq.net]
隙間がないから長さが変わったら、後ろは全部書き換えなきゃ駄目。

462 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:30:08.83 ID:LCJuLSZW.net]
だから原則ファイルに一度でも書き込んだら元ファイルのその書き込んだ位置以降の情報は全て駄目になると思っておいた方がいい
あとどう考えても同じファイルに対して読んだり書いたりとトリッキーなことやるよりは
読み込み用と書き込み用のバッファなりストリームをそれぞれ用意して一気に読み書きする方が速い

463 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:30:42.49 ID:ckgq3Xt/.net]
可変長で書き換えるなら別のFileStreamに書き込んだほうが楽だわな

464 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 03:35:57.15 ID:XoaHuoua.net]
enumerableなreadlineつかおう

465 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 03:43:40.82 ID:GEHiOhH4.net]
オレオレのデータ構造なんか最初から選ぶべきではなかった
習作ならまあええけど

466 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 09:50:40.92 ID:oCkiVU5T.net]
>>465
じゃあ>>452の場合どういったデータ構造が適切なんでしょうか

具体的な画面イメージを書くと

メイン画面:A1に遷移する、初期データの入ったファイルを作る(ファイルはテキストボックスで名前を決めて複数作成可能)
A1画面:A1のデータを入力し、A2に遷移する
A2画面:A2のデータを入力し、A1,A3に遷移する
A3画面:A3のデータを入力し、A2に遷移する
*各画面ともXボタンやそれ用のボタンでメイン画面に戻ることが可能
*画面はそれぞれWindowとして用意し、遷移時に遷移先画面をshowし自画面をCloseするものとする

という感じです

現在考えているのはみなさんおっしゃるようにデータを保持しておいて遷移が発生した時に一気に全部読み書きする方法か
データをオブジェクトとして確保して、バイナリ形式で読み書きする方法です

他にいい方法があるならご教示願いたいです



467 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:08:59.85 ID:MPr2aBz2.net]
そもそも画面遷移で画面がファイル読み書きとかそんな事はしない
画面に必要なVMを取得するクエリをまとめたサービス
画面に割り当てられてるユースケースを解決するコマンドをまとめたサービス
画面はこれらのサービスを呼び出すだけ
データの取得も更新もサービスが行う
画面側でデータをどう保存復元するか何て事は考えたら負け

468 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:21:02.36 ID:ZWCSgZld.net]
開発対象の規模感にもよるけれどね

ただ部分保存する事を検討する価値を感じるデータ量なら
画面とは疎結合の方が良いとは思う

データ構造は編集方法より利用方法に最適化されている方が幸せだと思う

469 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:37:15.77 ID:6FoMFdKR.net]
>>466
> データをオブジェクトとして確保して、バイナリ形式で読み書きする方法です
XML でいいだろ
読み書きルーチンを自前で書かなくてすむし
dobon.net/vb/dotnet/file/xmlserializer.html

470 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 18:23:24.52 ID:NjwYLQlW.net]
>>466
画面遷移のたびにファイルに保存する必要や、そのファイルが全画面で同じである必要あるのか?

それだけじゃどんなデータ構造にすべきかなんて判断できない
そしてそのデータをどこにどうやって保存して利用するかも検討する余地がある
最終的に欲しいものも良くわからない

まあ、とりあえず思うように作ってみて、それから考えればいいんじゃない

471 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 18:33:52.95 ID:sKosHeoc.net]
taskクラスやスレッドクラスって
exception受け取れないの?
スレッドでのコネクション再接続機能作りたいんだけど?

472 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 20:18:58.15 ID:mOR+hll2.net]
TaskはWaitすれば例外投げると思う

473 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 20:53:20.79 ID:x8hzzpdB.net]
DataRowにDataTable使っているんだけど、
行の追加処理をループで回してると100件超えたらとたんに重くなって、300件なんか処理させようものならメモリ不足で落ちる
デバックしてみるとdt.Rows.Add()の部分で極端に遅くなってるようですが
Selectが前の処理にあるとインデックス再生成で遅くなるという記事は見つけたけど、特にそんなこともしてない
DataSetをstaticで保持して必要なフォームでFillしてデータ処理してるんだけど
DataSetをstaticにしてることが原因なんでしょうか

474 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 22:38:20.29 ID:NjwYLQlW.net]
>>471
exception受け取るという意味がよくわからんが
https://msdn.microsoft.com/ja-jp/library/dd997415(v=vs.110).aspx

>>473
どんなマシンでどんなレコードを操作してるのか知らんが
普通300件程度で目に見えるほど遅くはならんと思うが

475 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 01:49:27.66 ID:+DBaWBH6.net]
スレッドセーフな作りを学ぶには、どんな参考書がよいでしょうか?

476 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 06:22:13.43 ID:/YfJIw9H.net]
習うより慣れよじゃね

staticな変数を使わないこと
スレッドにするオブジェクトは使いまわさないこと
ファイルやDBみたいな資源を扱うなら適切な場所でlockする

これさえ守ればなんとかなる。



477 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 06:34:12.91 ID:WxVdqihh.net]
正分毎に処理させるにはどうすればいいの?
例)0:00:23にボタンを押してスタートしても0:01:00から1分毎に処理する

478 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 08:21:58.49 ID:RzYeJvwW.net]
>>477
引き算してタイマーセットすればいいだけだろ

479 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 09:14:16.78 ID:E9rUGhfo.net]
まるで成長していない…

480 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 11:39:08.80 ID:/uXnY6ua.net]
TimeSpanだな

481 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 13:28:39.91 ID:vpSvShmB.net]
>>476
初心者には
> スレッドにするオブジェクトは使いまわさないこと
がピンとこないっす
ここでいうスレッドって何を指しておりますか?

482 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 13:35:45.29 ID:vpSvShmB.net]
追加で質問ですが、staticな変数は使わないとあるけど
たとえば1000人の顧客データがDBに入ってるとして、
画面ごとに1000人のデータをDBから引っ張ってくるのがいいってこと?
今作ってみてるのは、初回起動時にDBからデータとってきて
staticな顧客情報クラスのプロパティに読み込んでそれを使い回してるんだけどだめ?

483 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 13:45:24.22 ID:8Ue91Bmo.net]
>>482
まず

・あなたが作っているのはWebサーバなどサーバ上で動くアプリ?
・それともWindows10など、クライアントOS上で動かすアプリ?

のどっちです?

484 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 13:59:27.59 ID:vpSvShmB.net]
>>482
クライアント上で動作するWindowsフォームです
MySQLと連携させてます

485 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 14:25:03.48 ID:eN79gWGq.net]
>>484
それならwinフォーム側(c#)の設計はそれでいいんじゃない?
スレッドセーフは特に関係ない。

SQLサーバ上のデータを複数人で操作した時のことを心配しているなら
それはDBMSの話でこのスレとはちょっと方向がズレる。
まぁ複数テーブルを変更するならc#側で適切なトランザクション制御をする必要はある

何を心配してスレッドセーフというキーワードが出てきたの?

486 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 15:49:01.26 ID:XzDT2iuo.net]
彼?が聞いていたのは「staticのDataTableにrow100件追加すると重くなる何で?」だったと思う



487 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 17:40:37.15 ID:iE2GkHGd.net]
a | b | c
見たいな式でbが含まれてないか調べる方法ってどうすればええんでしょうか?

488 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 17:41:43.60 ID:DP7yI1JH.net]
>>482
そんな理由でstaticは止めとけ。

489 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 17:44:32.52 ID:DP7yI1JH.net]
>>487
!"a | b | c".Contains('b')

490 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 18:55:25.80 ID:1zVJqqIu.net]
スレッドセーフなつくりに関しては

このサイトが非常に分かりやすくて勉強になりました
blogs.msdn.com/b/nakama/archive/2008/12/18/9231090.aspx


こういったことが載ってる書籍ってありますか?

491 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 19:24:09.33 ID:Vk7WMYI1.net]
>>490
オライリーの平行コンピューティング技法
マルチスレッドは小手先のノウハウより基礎が大事

492 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 20:37:34.94 ID:BBvTeRCQ.net]
>>487
式でって、構文解析でもやってんの?

493 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 20:39:55.32 ID:xw1fAbOE.net]
C#でDBアクセスする,っていったら普通はどうするの?ADO?

494 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 20:57:11.31 ID:qgHj34IQ.net]
クラサバならDataSet、WebならEF

495 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 20:58:34.94 ID:XPqXIrud.net]
上司が戦前生まれのおじいちゃんでmapperは許さないと言うならADO.NETしかないだろうね
そうでなければコンテキストのアーキテクチャにマッチしたものを自由に使えばいい
ただし僕の考えた最強のDataBaseCommonは避けたほうが賢明だ

496 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 21:06:43.09 ID:xSKr2cZb.net]
>>493
EntityFramework



497 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 22:46:47.35 ID:hopELxhL.net]
最近はドキュメントストアとイベントストアばかりだわ
リレーショナルとか今更バカバカしくなる

498 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 22:47:21.82 ID:sza9ynkf.net]
SHDocVw.InternetExplorerを使ってIEを操作していって
ETC利用紹介サービスのサイトでPDFの明細を表示するところまで行ったのですが
この後このPDFをローカルファイルとして保存するにはどうしたら良いでしょうか
もしくはPDFをダウンロードできるURLを知る方法を教えて下さい

ETC利用照会サービス
www.etc-user.jp/index.html

最終的にIE上でPDFを表示させた時のURLはこんなかんじ
https://www2.etc-user.jp/NASApp/etc/Etc-User;jsessionid=0001EA5B7G0OeSIFI_z1DoRH:11fqrass0?パラメータいっぱい&funccode=1011110000&nextfunc=1011111000&x=0&y=0

499 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 01:01:54.38 ID:+adornFd.net]
パケットキャプチャしてその通りにアクセスすれば良いよ

500 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 04:05:39.81 ID:iF53IQph.net]
質問します

100個のチェックボックスがあります。
それらがチェックされた個数をカウントしたいのですが、流石にチェックボックス100個にイベントハンドラつけるのは大変なので別な方法を模索しています

今まで試したのは
チェックボックスのあるウィンドウにMouseUpとかそういう系統のイベントをつける
→MouseUp後にチェックボックスの状態が変わるようで不可

タイマを使って逐次カウンタ処理を走らせる
→カウンタ処理は他画面でも使い回す都合、別クラスにしています。
そのせいかどうか知らないけど、タイマとコントロールのスレッドが異なるので安全じゃない、例外で制御してね
みたいなメッセージが出てきて止まります

なんかこう、もうちょっと楽な制御方法はないのでしょうか。
こういう場合の定石みたいのがあるなら知りたいです

501 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 04:26:28.46 ID:tEtmGt/9.net]
C#コード側でチェックボックスのコントロールを生成して配列にでもぶち込んでおけばいいんじゃまいか
forループでIsChecked調べればよろし

502 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 06:39:35.45 ID:E2PPlRvu.net]
>>500
WindowsFormアプリ?

503 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 08:17:56.09 ID:RYitu+qp.net]
涙目になりながらデザイナでイベントハンドラ設定してる所を想像した

504 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 08:21:21.05 ID:kbsxNcQ6.net]
そのチェックボックスに結びついている何らかのモデルがあるはずだから、それを走査すればいい。

505 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 08:39:41.98 ID:RYitu+qp.net]
スレッド云々に関しては、UI(WinFormsのタイマーも含む)は
作成したスレッド以外から操作してはいけない決まりがある
ControlはInvokeかBeginInvokeメソッドを持っているから
他のスレッドから触りたければそれらを経由して操作する

UIとスレッドのルールはWindows以外のプラットフォームでも大抵同じなので
覚えておくといつか役に立つかも
立たないかも

506 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 11:37:42.35 ID:5c0zO2hz.net]
linqについてですが
DataTableに列Aと列Bがあって、列AにはBを変換した文字列を入れてます
Linqで一気にやろうと
dt.AsEnumerable().Select(row => row["A"] = henkan(row["B"].ToString()));
としてみたのですが上手くいきません
何が悪いんでしょうか



507 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:29:24.57 ID:gpEp1eYY.net]
emitされてないって下らない理由だったらどうしよう

508 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:46:43.35 ID:5HhRd+zG.net]
LINQ厨、答えてやれ。

509 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:57:53.16 ID:+MN4l2JU.net]
emitって言葉有名ですか?
始めて聞いたんですが

510 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 13:09:48.84 ID:JrRFhuQq.net]
普通はSQLで書く仕事だな

511 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 14:07:32.88 ID:EM1+lJ6M.net]
エスパーじゃないんでうまくいきませんだけじゃちょっと

512 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 14:31:40.10 ID:mDltGRvi.net]
>>510
SQLじゃ遅いからじゃね?

513 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 14:45:30.79 ID:5c0zO2hz.net]
すみません、emitって初めてききました・・・
SQLに持っていく前に暗号化してUpdateしようとしてるんです
>>511
デバックで実行見てても変換処理に行く様子はなく、抜けたあとのdtについても
該当の列には変換後の値が入ってないんです

似たような一括置換の例見ていると .ToList()がついてるんですが、それが抜けてるせいでしょうか

514 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 15:04:28.61 ID:EM1+lJ6M.net]
Select呼び出した時点では列挙は実行されない(遅延評価)
foreachすることで初めて評価される
ToList()とかCount()とかは即時評価

副作用のある処理はLINQのメソッドチェーン内では書かないのが無難
素直にforeachでいいんじゃない?

515 名前:498 [2016/02/23(火) 16:27:16.88 ID:lkjUbvnh.net]
>>499
なるほど!と思ってwireSharkってのを使ってみたけど難しすぎます。
でもよく考えたらPDFは既にIEに表示されてるからメモリ上にはファイルが有るわけで・・・
そこからローカルフォルダに保存となるとadobeを操作することになるんですかね。
こっちもちょっと自分にはハードル高いです。
webBrowserクラスからファイルの保存ボタン押せないか探ってみます。
ありがとうございました。

516 名前:デフォルトの名無しさん [2016/02/23(火) 16:39:37.63 ID:DVYg3A+E.net]
www.kurumaerabi.com/shop/detail/40003946/



517 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 17:16:42.33 ID:5c0zO2hz.net]
>>514
Linq使い始めたところだったので勉強にになります
foreachで処理させました ありがとうございます

518 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 18:53:15.86 ID:MLn0TlkP.net]
>>500
FormにはControlsと言うプロバティーがあって、ここに全てのコントロールが格納されています
定石はこのコントロールからCheckBoxを抽出して、foreachループでハンドラをセットして処理するのが一般的かな?
全てのコントロールからチェックボックスを抽出する方法とかコードでイベントをセットする方法を知っていれば簡単です

519 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 20:08:51.57 ID:iF53IQph.net]
>>500です
みなさんのおかげで解決しました。
結局、コントロールを制御する関数をInvokeしてタイマの中に突っ込みました。
本来はこういう実装ならカウントアップスレッドを作ってその中でInvokeするのが正なのでしょうけどもスレッドは勉強することが多そうなのでとりあえずタイマで良しとします

いやあ、最悪MouseMoveをトリガにしようか悩んだのて助かりました

520 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 21:14:59.21 ID:OvWSY5Gq.net]
>>475
動かしてみてエラーしたらその時点で対策すればいいよ

521 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 18:30:48.11 ID:M2uXlhYi.net]
重たい処理をBackgroundWorkerにさせようと思うんだけど、
ネットで見てるサンプルはほとんど重たい処理のところに適当なループが書いてある
実際にやりたい処理は、別クラスのメソッドをいくつも呼び出すんだけど、
呼び出し先でWorkerReportProgressを更新するにはどうしたらいいの?

522 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 20:01:46.64 ID:m/jN0scy.net]
無理に決まってんじゃん

523 名前:498 mailto:sage [2016/02/25(木) 22:15:35.13 ID:nblLHdJf.net]
解決しました
普通に拡張子pdfにしたらダウンロードできました
こんな単純なことで3日も悩んじゃった

524 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 22:46:47.71 ID:bvnWfi3I.net]
>>521
更新処理を書いて渡すだけ

525 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 01:10:33.96 ID:+59ndj2V.net]
>>524
すみません・・・もう少し具体的に教えて下さいませ

526 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 09:11:43.07 ID:JdiTwSlc.net]
別クラスのメソッドとやらの仕様を具体的に教えてもらえないと教えてあげられません

そのメソッド変更できんの?できないの?
そのクラス進捗どうですか機能はあるの?ないの?



527 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 09:49:52.84 ID:fV5IfbGO.net]
どうせないないづくしだとおもったので
無理に決まってんじゃんっていったよ

528 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 10:21:22.48 ID:LwzDqGm0.net]
>>521
Taskを使ったら?

529 名前:デフォルトの名無しさん [2016/02/26(金) 11:04:27.42 ID:1jTGKv1k.net]
hatedaihatsu.web.fc2.com/2.html

530 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 22:33:21.13 ID:cpgi4D1s.net]
パラメータをフラットに扱いたいです。

tag type human
tag sex man

このように、種別や性別のメンバを持たせるのでなく、tagに統合して扱おうと思ってます。

obj.tag[sex]==man
obj.tag[sex]==man & woman
obj.tag[sex]+= woman

こんな感じで比較したり追加したいのですが、
こういう都合のいいコレクションってありますか?

比較の際に値が含まれてたらtrueでいいんですけど、たまに複数で比較したいときもあると思います。

531 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 23:04:36.18 ID:F0cA5DZY.net]
>>530
ここはC#のスレなんだけど

532 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/27(土) 23:54:34.85 ID:Bxm5eu58.net]
>>530
ビット演算

533 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 09:45:59.90 ID:5lqkohLH.net]
>>530
それはコレクションではなく、その要素の型の問題だべ。

534 名前:デフォルトの名無しさん mailto:sage [2016/02/29(月) 07:17:09.96 ID:nhRiUMTh.net]
doubleの数値aを条件式でa<10ならbみたいな処理ってどうするの?

535 名前:デフォルトの名無しさん mailto:sage [2016/02/29(月) 07:18:54.21 ID:s/kIhvzC.net]
if (a < 10) b;






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<136KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef