2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん :2017/11/29(水) 19:23:58.05 ID:GNLsbK4F0.net
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 :デフォルトの名無しさん :2017/11/29(水) 19:31:14.12 ID:rMr3voC10.net
(*゚∀゚)v2get!

3 :デフォルトの名無しさん :2017/12/05(火) 12:25:34.83 ID:cln+gySGp.net
今年の夏くらいからプログラミング勉強し始めたけど結局なーんも身についてなくて笑えない
ちょっと応用すれば出来るはずのことも全く同じサンプルがないと何も出来ないし頭の悪い奴ってのはほんとに必要ないなと実感したわ

こんなの身についてるってみんなすげーよ
ほんと尊敬する

4 :デフォルトの名無しさん :2017/12/05(火) 12:44:40.61 ID:WFyLCtnzM.net
趣味なら続けてればそのうちできるようになるよ
もし仕事にするつもりだったなら今すぐ考え直したほうがいい
向いてない人が業界入っても生涯最底辺確定だよ

5 :デフォルトの名無しさん :2017/12/05(火) 12:53:46.29 ID:C7A8AnoX0.net
今振り返るとプログラムを書けると自信を持って言えるようになるまで5年くらいかかった

6 :デフォルトの名無しさん :2017/12/05(火) 13:17:45.00 ID:x6DQdw1l0.net
はやいね…

7 :デフォルトの名無しさん :2017/12/05(火) 16:30:38.85 ID:wkVlcZxF0.net
レベル2の症状だろ
レベル3になると、実はまだまだヒヨコに過ぎなかったと気づく

8 :デフォルトの名無しさん :2017/12/05(火) 23:51:30.36 ID:3JpFSBB9p.net
最近始めたんやけど、ラムダ式がまだまだ身につかんな…
自称プログラマーもまだまだ遠いと感じる

9 :デフォルトの名無しさん :2017/12/06(水) 00:18:23.00 ID:NYn2QdoV0.net
LISPしなされ

10 :デフォルトの名無しさん :2017/12/06(水) 00:27:28.54 ID:WT/THAC00.net
レベル3の症状だろ
レベル4になると、実はプログラマに向いてないって事に気付き始める

11 :デフォルトの名無しさん :2017/12/07(木) 08:25:05.89 ID:AtZ2X5K5p.net
VS2015を用いてC#でアプリを作っています
現在テストを行う中でスタブを使おうと考えたのですがどういうものかの記述はしてあっても実装の仕方が見つけられないのでどう実装するべきものなのかアドバイスをお願い致します
なにか決まった構文などがありますか?
スレ違いなら申し訳ありません

12 :デフォルトの名無しさん :2017/12/07(木) 08:42:17.58 ID:15g2M7EDd.net
>>11
moq

13 :デフォルトの名無しさん :2017/12/08(金) 08:21:40.76 ID:PpC6VnTrM.net
>>11
普通に実装するんだよ
たとえばリポジトリクラスをモックするなら、DBの変わりにListやファイルを使うように実装する
Moqみたいなアドホックなモックに頼るのは都合のいい脳内彼女状態になりやすいからお勧めしないな

14 :デフォルトの名無しさん :2017/12/08(金) 10:48:33.70 ID:MNtGar8nd.net
>>13
頼るんじゃなくて賢く利用するんだよおバカ

15 :デフォルトの名無しさん :2017/12/08(金) 14:00:50.88 ID:qb513BYK0.net
ゲスい

16 :デフォルトの名無しさん :2017/12/08(金) 20:43:50.51 ID:0wYNAdO30.net
>>11
言語以前の問題だから板違いではないがスレ違いだな
「デバッグに何か決まった手順はありますか」って聞くようなもの
そして「使おうと考えた」のではなく「使えと指示された」と邪推

17 :デフォルトの名無しさん :2017/12/09(土) 09:15:02.44 ID:BBiO47QN0.net
>>14
その賢い利用というのが、テストが正しいかどうかはともかく、
なんでもいいからとにかくテストをパスさせて仕事から逃げることを意味するなら積極的にMoqを使うべきだな
プロダクトの機能に対して責任を持つのか、コーディング作業員として単体テストのレビューが通るところまでの責任なのか
プログラマの立場次第であり、絶対的にどちらが正しいとはいえない

18 :デフォルトの名無しさん :2017/12/09(土) 11:18:08.25 ID:ZhOJxZh30.net
Moqの使い方すら理解できないキチガイがわめいてる

19 :デフォルトの名無しさん :2017/12/09(土) 11:20:12.53 ID:4MNbsZWJd.net
xUnit自体のテストでもMoq使ってんのに何言ってんのこいつ

20 :デフォルトの名無しさん :2017/12/09(土) 11:59:32.42 ID:BBiO47QN0.net
>>19
xunit見てみたけど、内部的な依存関係の差し替えには全く使われてないね
テストツールをテストするという特殊な事情ゆえ、テストには(ユーザーにとっての)テスト対象コードが必要になる
その代わりとして極一部でMoqやNSubstituteが使われてるようだ
賢い使い方の一つだとは思うけど、リポジトリクラスやサービスクラスを差し替えたりするのとは全くの別物と考えるべきかと

21 :デフォルトの名無しさん :2017/12/09(土) 12:06:36.64 ID:JB9pjNrg0.net
またヤバそうなのが湧いてるなw
先週みたいになるのかな?
いやーゴミは世に憚るってホントだね

22 :デフォルトの名無しさん :2017/12/09(土) 12:17:46.40 ID:awJ9eWLVM.net
んな大袈裟な
俺は自分の経験(個人・チーム含む)からアドホックなモックは上手くいかないと思ってるけど、
実際に効果的に使われてるケースがあるならぜひ知りたいよ
xUnitのテストなんて超特殊な例じゃなくてもっと適切な例をplz

23 :デフォルトの名無しさん :2017/12/09(土) 12:19:44.13 ID:ZhOJxZh30.net
どうやらUnit TestとIntegration Testの違いさえ理解できないガイジのようだ

24 :デフォルトの名無しさん :2017/12/11(月) 20:41:46.07 ID:f/7OfSkR0.net
ワイクソ馬鹿
そもそも何のためにスタブとかモックとかがあってどういう時に有用なのか分からない
足りない所を補うみたいなイメージなんだけどプログラムが全部完成してからのテストなら必要ない?

25 :デフォルトの名無しさん :2017/12/11(月) 21:01:08.81 ID:cWpuydkA0.net
C#関係ねえ

26 :デフォルトの名無しさん :2017/12/11(月) 21:02:58.97 ID:xzgxDEt/0.net
>>24
たとえばあるメソッドをテストするとして、テスト目的の箇所以外の依存関係をモック/スタブで差し替えれば、目的のロジックに集中できるしパフォーマンス的にも有利

27 :デフォルトの名無しさん :2017/12/11(月) 21:20:39.43 ID:y3IM1v6ZM.net
>>24
例えばテスト対象のメソッドが何らかのAPI呼び出してるとして、そのAPIがエラーを返すケースのテストをする時にスタブを使ってエラーを返したりする

28 :デフォルトの名無しさん :2017/12/11(月) 21:38:59.51 ID:Y2G40TozM.net
>>24
テストしてて、ここ触りたくねえなあデータ用意すんの面倒臭えなあと思うことあるだろ?
正しいかどうかは別にして、とりあえず臭いものに蓋をしたまま手っ取り早くテストを終わったことにして帰宅できる

29 :デフォルトの名無しさん :2017/12/11(月) 21:50:44.91 ID:xzgxDEt/0.net
>>28
あほ

30 :デフォルトの名無しさん :2017/12/11(月) 21:54:52.65 ID:f/7OfSkR0.net
>>26
>>27
>>28

ありがとう
そしてC#じゃない話広げてごめん
テストの為にSQLだったりなんか色々条件準備するの大変だからスタブで置き換えちゃおうみたいな感覚なのかな

31 :デフォルトの名無しさん :2017/12/11(月) 21:57:48.40 ID:xzgxDEt/0.net
>>30
大変だからというか、テスト目的と関係ないAPIやDBアクセスに依存しないようにするため

32 :デフォルトの名無しさん :2017/12/11(月) 22:30:20.58 ID:oxZtEftd0.net
こういう奴らってサーバーがAWSとかGAEのサーバーが503で落ちてる時のテストとかどうやってんの?
DoS掛けて落としてるの?

33 :デフォルトの名無しさん :2017/12/11(月) 22:32:42.57 ID:xzgxDEt/0.net
>>32
テストしないんだろ

34 :デフォルトの名無しさん :2017/12/12(火) 12:55:00.41 ID:IcKwzfnVM.net
サーバーが落ちてる状態をスタブ/モックで再現すればいいんちゃう?

35 :デフォルトの名無しさん :2017/12/12(火) 13:38:31.25 ID:55mcEBCKM.net
そういう話をしてるんだが...

36 :デフォルトの名無しさん :2017/12/12(火) 14:04:29.84 ID:/mkMVrEb0.net
ニホンゴムズカシイネ

37 :デフォルトの名無しさん :2017/12/12(火) 22:16:10.60 ID:TlJgX2b/0.net
プログラミング始めたてなんだけど、CSVファイルの先頭何行を無視してそれ以外のデータをデータベースに入れたいって状況になったんだけど、経験者の人はめっちゃ簡単だよって言ってて、
でも俺には全く想像もつかなくて、プログラミング出来る人の頭の中はほんとどうなってるんだ…
やっぱみんなもこれくらいのコード書くのは楽勝なの?

38 :デフォルトの名無しさん :2017/12/12(火) 22:19:09.90 ID:lT+kB2MF0.net
>>37
一瞬でアルゴ思いつくけど、おまえやばくね?

39 :デフォルトの名無しさん :2017/12/12(火) 22:23:02.58 ID:TlJgX2b/0.net
>>38
やっぱ経験者からすると簡単なんだ
すげぇなぁ…
CSVなんて触った事ないしそこから先頭何行とか全く想像もつかん
始めて数ヶ月だけどオレ向いてないんだろなぁ

40 :デフォルトの名無しさん :2017/12/12(火) 22:33:48.31 ID:CW11BSat0.net
>>37
テキストの数行をスキップするのならすぐできるだろ。それがCSVになるだけ
CSVのパーサーについては
https://dobon.net/vb/dotnet/file/readcsvfile.html
にいくつもやり方が乗っている
ネットで調べればC#初心者でもできる案件

41 :デフォルトの名無しさん :2017/12/12(火) 23:21:09.16 ID:5Qo60rlq0.net
いっぺんに全部やろうとするんじゃなくて、小さい作業に分解して考えるんだよ
今回なら「先頭数行を無視してテキストファイル読み込む」にCSVは関係ないでしょ?まず欲しい分だけ読み込んで、CSVとしてパースするのはその後に考えればいい
ググって出てくるくらいまで分解すれば、あとは組み合わせておしまい

42 :デフォルトの名無しさん :2017/12/12(火) 23:28:56.01 ID:CW11BSat0.net
>>41
>今回なら「先頭数行を無視してテキストファイル読み込む」
要素内に改行がある場合(めったにないが)を想定しなきゃならないので先にパーサーを通す必要がある
元の要件が「CSVファイルの先頭何行を無視して」だから

43 :デフォルトの名無しさん :2017/12/13(水) 00:33:52.07 ID:dUmCylYF0.net
>>42
この場合、先頭数行はヘッダーでcsvじゃないのでは

44 :デフォルトの名無しさん :2017/12/13(水) 07:16:49.88 ID:55R6yVv7M.net
まずは
・CSV の先頭になんかワケわからん行がくっついてる
のか
・CSV のデータを何件か読み飛ばす
のかをはっきりしろって話だわな

45 :デフォルトの名無しさん :2017/12/13(水) 07:25:32.55 ID:Iqcr0fg80.net
どうせ読み飛ばすんだからどっちでもええやろそんなもんw

46 :デフォルトの名無しさん :2017/12/22(金) 02:36:25.35 ID:agnD/jLFa.net
向こう使い終わったな

47 :デフォルトの名無しさん :2017/12/22(金) 04:56:06.32 ID:6xfAUU/Sd.net
ここ数日ここ見てたんだが自称上級者様がドヤ顔してるだけのスレだな

48 :デフォルトの名無しさん :2017/12/22(金) 06:19:42.32 ID:agnD/jLFa.net
>>47
どんなのが理想なんだ?
ぶっちゃけほとんどの質問に回答がもらえてるようだが

49 :デフォルトの名無しさん :2017/12/22(金) 09:45:16.77 ID:Vx5ddxy90.net
ワードサラダボーイがいないスレ

50 :デフォルトの名無しさん :2017/12/22(金) 09:53:06.84 ID:8f8y8qIA6.net
それは何ですか?

51 :デフォルトの名無しさん :2017/12/22(金) 09:55:25.36 ID:oR3DRk2W0.net
会計システムはクラサバが最低限の要件なので、計算はDBでやるからクラス分けなど何の役にも立たないし却って邪魔だ
彼はクラサバと無縁なスタンドアローンの世界に住んでいるのかもしれんね

52 :デフォルトの名無しさん :2017/12/22(金) 10:08:25.66 ID:2CqGXpCvM.net
スタンドアロンだとして、どういうデータ設計したら費用項目ごとにクラスができるんだろうね
日付, 費用種別コード, 金額
まさかこんなタプルで管理してるんだろうか

53 :デフォルトの名無しさん :2017/12/22(金) 10:17:07.48 ID:sp7ymsVp0.net
自称上級者様ご降臨〜 w

54 :デフォルトの名無しさん :2017/12/22(金) 10:23:52.41 ID:lyRs/gAjM.net
そ、ギョーミーな戦場ではオブジェクト指向などと言う玩具の武器は役に立たない

55 :デフォルトの名無しさん :2017/12/22(金) 10:26:29.36 ID:xQ825djR0.net
>>54
いまだにこんな老害がいるからね

56 :デフォルトの名無しさん :2017/12/22(金) 10:32:48.81 ID:lyRs/gAjM.net
何をいっておる、LinqもLambdaも戦場の小火器として使えるが腐ったオブジェクト指向など使えぬわ

57 :デフォルトの名無しさん :2017/12/22(金) 10:56:00.35 ID:pMoYdCae0.net
関数型がいいって言いたいの?

58 :デフォルトの名無しさん :2017/12/22(金) 10:59:19.90 ID:lyRs/gAjM.net
腐ったオブジェクト指向脳で単純なものを複雑にするヤツが大嫌いなだけ

59 :デフォルトの名無しさん :2017/12/22(金) 11:05:05.39 ID:oEPXElot0.net
結局個人的感情か
毎回レスの最後に ※個人の感想です って付けとけよ

60 :デフォルトの名無しさん :2017/12/22(金) 11:10:42.54 ID:cOtumJc5a.net
>>59
全レスそうだから省略できる

もちろん個人の感想だが

61 :デフォルトの名無しさん :2017/12/22(金) 11:11:28.05 ID:lyRs/gAjM.net
オブジェクト指向は過去の遺物

62 :デフォルトの名無しさん :2017/12/22(金) 12:24:49.48 ID:4JyKqZfo0.net
>>61
じゃあ今流行りは何?

63 :デフォルトの名無しさん :2017/12/22(金) 12:29:43.88 ID:E5w5T/306.net
大きなスケール→ガチガチのオブジェクト指向
小さなスケール→手続き型、関数型

64 :デフォルトの名無しさん :2017/12/22(金) 12:35:16.71 ID:3WJNmOAXM.net
名前、住所、電話番号、みたいなデータがあったとして、
Aさんの住所を参照するのに、["A"]的なアクセスするやつ、なかったでしたっけ?

65 :デフォルトの名無しさん :2017/12/22(金) 12:41:08.55 ID:sp7ymsVp0.net
>>64
Dictionaryでいいんじゃね?

66 :デフォルトの名無しさん :2017/12/22(金) 12:47:31.71 ID:E5w5T/306.net
>>64
https://ideone.com/opVzhA

67 :デフォルトの名無しさん :2017/12/22(金) 13:06:22.96 ID:4dlvq16La.net
>>64
そういう仕組みはインデクサという

68 :デフォルトの名無しさん :2017/12/22(金) 19:32:54.21 ID:w6Zu6k6M0.net
ボタンを押すと処理を緊急停止するプログラムを作りたいのですがどのような方法がありますでしょうか?

69 :デフォルトの名無しさん :2017/12/22(金) 19:39:03.10 ID:Ta4DCaCP0.net
>>68
とりあえずthis.Close()でFormを閉じる
それでだめなら要件を挙げて

70 :デフォルトの名無しさん :2017/12/22(金) 19:46:47.55 ID:w6Zu6k6M0.net
今はbackgroundWorkerで処理を実行しているのですが
CancelAsync()で停止させても
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
というコードに到達するまで停止しないので停止までに時間があるのを改善したいです
このコードをたくさん差し込むしかないのでしょうか?

71 :デフォルトの名無しさん :2017/12/22(金) 19:51:25.63 ID:Ta4DCaCP0.net
>>70
親フォームでkillしたらbackgroundWorkerも止まるんじゃないの?

72 :デフォルトの名無しさん :2017/12/22(金) 19:53:12.14 ID:w6Zu6k6M0.net
どういうことでしょう
あらゆる処理をForm1に書いていまして
killの仕方がわからないです

73 :デフォルトの名無しさん :2017/12/22(金) 19:59:46.81 ID:Ta4DCaCP0.net
backgroundWorker以外の処理は生かしておきたいって話なら分からないな
>>70
というかキャンセル用のフラグ作って止めなきゃならないところに停止処理差し込むのがそんな大変だとも思えないけど
楽したいってのはわかるけど、それは他の人に聞いて

74 :デフォルトの名無しさん :2017/12/22(金) 20:00:08.26 ID:W8xzYPPc0.net
>このコードをたくさん差し込むしかないのでしょうか?
>あらゆる処理をForm1に書いていまして

まず、設計の仕方を覚えた方が良い

75 :デフォルトの名無しさん :2017/12/22(金) 20:10:01.65 ID:HDUqSz1r0.net
>>68
Application.Exit();

76 :デフォルトの名無しさん :2017/12/22(金) 20:31:26.17 ID:kA+szNzE0.net
自作プログラムでSemaphoreFullExceptionが発生したんだけど、これってSemaphore使って無くてもTaskやawait使っていれば発生するようなもんなの?

77 :デフォルトの名無しさん :2017/12/22(金) 20:34:55.44 ID:2CqGXpCvM.net
なぜスタックトレースを見ないのか

78 :デフォルトの名無しさん :2017/12/22(金) 20:39:08.36 ID:kA+szNzE0.net
>>77
Unhandledで拾ったは良いものの、例外詳細見たらスタックトレースに他の発生行が無くてその例外行だけだったのよ
どこかでthrowし直してたとしてもその行が表示されるのにな

79 :デフォルトの名無しさん :2017/12/22(金) 20:40:07.26 ID:4dlvq16La.net
まあ普通に使い方間違えてバグってんでしょ

80 :デフォルトの名無しさん :2017/12/22(金) 20:47:43.11 ID:G9MI+OvKa.net
>>70
なんか先週ぐらいも同じ質問してた人がいたけどw

だからさあ、メソッドを外から強制的に止めようって発想が間違ってる。
メソッド自身が何かをポーリングして自分で止まるように作る

81 :デフォルトの名無しさん :2017/12/22(金) 21:17:12.68 ID:w6Zu6k6M0.net
>>80
それ自分です!

82 :デフォルトの名無しさん :2017/12/22(金) 21:18:00.45 ID:UrkxRoCQ0.net
二度も同じことを聞くんじゃない

83 :デフォルトの名無しさん :2017/12/22(金) 21:27:30.25 ID:G9MI+OvKa.net
>>81
マジすかw

84 :デフォルトの名無しさん :2017/12/22(金) 21:30:54.07 ID:W8xzYPPc0.net
わろす

85 :デフォルトの名無しさん :2017/12/22(金) 21:46:10.24 ID:Kw0QQsKg0.net
潔くてすき

86 :デフォルトの名無しさん :2017/12/22(金) 22:28:43.29 ID:4JyKqZfo0.net
backgroundworkerとtaskの違いは何よ?

87 :デフォルトの名無しさん :2017/12/22(金) 22:41:34.49 ID:Iyc/J/sJ0.net
BackgroundWorkerはレガシー

88 :デフォルトの名無しさん :2017/12/22(金) 23:26:00.99 ID:vOV0CWVO0.net
>>81
ここで2回も聞くぐらいなら
やりたいことを英語にしてGoogleで検索した方がいいよ
ここにいる人が知らないか教えないだけで
やり方はちゃんとある
ポーリングとか今どきダサすぎるからやめとけ

89 :デフォルトの名無しさん :2017/12/22(金) 23:41:50.51 ID:G9MI+OvKa.net
いやいやないからアホかw
あるなら言ってみ。まあ無理せんでよろしい。

生スレッドは強制終了できるが普通は推奨されない。

90 :デフォルトの名無しさん :2017/12/22(金) 23:43:22.66 ID:G9MI+OvKa.net
そもそも外から強制的に止めるって発想に疑問を持たない時点でセンスがない

91 :デフォルトの名無しさん :2017/12/22(金) 23:43:31.65 ID:teKS3rfy0.net
>>88
スレッドの強制停止は推奨されないから、事実上ポーリング的な手法しか無いと思うけど。
(マルチプロセスは考えないとして)

92 :デフォルトの名無しさん :2017/12/22(金) 23:48:36.08 ID:teKS3rfy0.net
CancellationToken.ThrowIfCancellationRequested()使うけど、これもポーリングだしな。

93 :デフォルトの名無しさん :2017/12/22(金) 23:54:28.61 ID:oR3DRk2W0.net
>>88
つか、今標準のCancellationTokenもポーリングが基本だよ
そっから抜け出るのに例外使うのがミソではあるが

94 :デフォルトの名無しさん :2017/12/23(土) 01:24:21.53 ID:ti8BrBts0.net
スリープで時間かかってたり繰り返しスリープ入れてるなら
Interruptを使って無理矢理中断させることもできる

95 :デフォルトの名無しさん :2017/12/23(土) 08:12:59.96 ID:FPRjmoIB0.net
>>70
Async が付いている関数は、非同期処理だから、コンテキストが異なる。
だから、処理が実行される順番が確定しない

Sync なら同期処理だから、順番が1つに決まる。
つまり、ソースコードの上から下へ、順に実行される

コンテキストが異なるもの同士が通信するには、プロセス間通信(IPC)を使う。
基本的には、相手のキューに、投入することしかできない

1. 依頼する。A プロセス → OS → B プロセス
2. B が届いたメッセージを処理する
3. 返事する。B プロセス → OS → A プロセス

これを同期処理にすると、1〜3 の処理中、
アプリが止まる(ストール)から、GUI では嫌われる。
50ms 以上掛かる処理は、非同期処理にすべき

逆に、CUI では同期処理にして、コンソールが止まる

96 :デフォルトの名無しさん :2017/12/23(土) 08:22:18.86 ID:7ZChdQbJ0.net
このどことなくズレたレスをつける句読点過剰くんってのは、やはり糖質なのだろうか?

97 :デフォルトの名無しさん :2017/12/23(土) 08:23:33.88 ID:ti8BrBts0.net
句読点箇条君はすぐわかるな
そして必ず間違ってる
スレッドが違うだけならIPCなんか使う必要ない
普通は単にメモリを共有する
FormsのBeginInvokeなどで使われているSynchronizationContextのキューも普通にメモリを共有してるだけだ

98 :95 :2017/12/23(土) 08:24:22.31 ID:FPRjmoIB0.net
つまり、1〜3 は、OS が行っている事だから、何もできる事が無い。
OS レスのマイコンとかなら、自分でプログラミングするけど

何かをしようとしても、OS がCPU のタイムスライス、
プロセスの優先度・実行順番を決めているから、何もできない

それがOS。
OSレスなら、それらを自分でプログラミングしないといけないから、無理

99 :デフォルトの名無しさん :2017/12/23(土) 08:45:11.75 ID:ti8BrBts0.net
このアスペは>>97も理解してないんだと思うけど、初心者スレだから改めて否定しておく
スレッドが違うだけなら、>>95の123は正しくはこう
1. スレッドAがジョブの情報Jをメモリ上のキューQに登録する
2. スレッドBはQからJを取り出し、Jの内容に従って処理を実行する
3. Bは処理結果RをキューQ'に登録する
4. AはQ'からRを取り出し、後続処理を実行する
AとBの間で普通にQやQ'を直接共有してるだけで、OSなんか全く関係ない
そもそもマルチスレッドに限った話でもなく、例えば、ゲーム内で2つのキャラクターの間でやり取りしたい、
でも直接メソッドを呼ぶと長くなるとか、間にウェイトを入れたいとかで一旦処理をゲームループに戻したい、なんて時にも使える

100 :デフォルトの名無しさん :2017/12/23(土) 10:27:32.58 ID:AW7swrGi0.net
オレオレキューなんぞつかわずにTaskを使え
バックグラウンドといえどインプロセスで長大な処理を発生させるな
そういうのはジョブ管理サービスを使えHangfireとかな

101 :デフォルトの名無しさん :2017/12/23(土) 11:10:58.80 ID:7ZChdQbJ0.net
今回はTaskかどうかは問題ではなく
「BackgroundWorkerの処理を中断する方法で、ポーリングより面倒くさくない方法があったら教えて」
なので
Thread.Abortでも使え

102 :デフォルトの名無しさん :2017/12/23(土) 11:12:40.52 ID:7ZChdQbJ0.net
Task大好きッ子もなかなかスレの流れ読んでねえよな

103 :デフォルトの名無しさん :2017/12/23(土) 11:29:15.39 ID:m8DTIJvo0.net
asyncつけてるとエラー発生したらデバッグの実行位置の矢印の動きがおかしくなる

104 :デフォルトの名無しさん :2017/12/23(土) 11:42:39.57 ID:A76YiAtwM.net
RunWorkerCompletedでイベントオブジェクトのフラグをいじり、それを待機とかだめ?

105 :デフォルトの名無しさん :2017/12/23(土) 12:51:18.15 ID:kNBZIa630.net
Task関連は7標準のランタイムだと使えないからいまだにBackgroundWorker使ってる
まあ他ソフトの事情で.NET 4以降一切入れないってことはないんだけどさ

106 :デフォルトの名無しさん :2017/12/23(土) 13:21:31.65 ID:kNBZIa630.net
自分のBackgroundWorker使ってるソース見てみると、
処理単位でループして1処理終った後と、長い処理の途中でwk.CancellationPending == trueで抜けるか判定してる
イベント待ちはタイムアウト設定して一旦抜ける
という感じだった
Task使っても同じだろう

107 :デフォルトの名無しさん :2017/12/23(土) 13:24:28.81 ID:eJOJ1LQ5M.net
@Abortはしたくない
Aメインループのフラグチェックでは頻度が足りない
Bでもフラグチェック処理を書き足すのは嫌だ

要件はこれでいいか?
真面目に考えるとメタプログラミングの領域だな
チェック頻度とパフォーマンスのトレードオフも考えなきゃならん
初心者スレ民の実力では難しいんじゃないか?

108 :デフォルトの名無しさん :2017/12/23(土) 13:34:41.82 ID:ktMndlca0.net
>>107
この頻度が足りないって、メインループの記述が冗長とか別の理由ありそうな気がするわ

109 :デフォルトの名無しさん :2017/12/23(土) 13:41:27.68 ID:eJOJ1LQ5M.net
クッソ長いループ書いてんだろうな
マルチスレッドより先に基本的なコード整理術を覚えたほうがいい

110 :デフォルトの名無しさん :2017/12/23(土) 13:46:44.49 ID:suzKftpB0.net
たくさんレスありがとうございます。
わからない言葉がたくさんあるので調べてまた来ます。

111 :デフォルトの名無しさん :2017/12/23(土) 14:02:46.78 ID:suzKftpB0.net
キーボードをa,b,c,dと順番に5秒置きに押していくメソッドをBackgroundWorker内で無限ループさせていて
キャンセルボタンを押したときすぐに止まって欲しいのですが必ずdまで押されてから止まるので困っているという感じです

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
play_abcd();

if (backgroundWorker1.CancellationPending)
{
// イベントをキャンセルする
e.Cancel = true;
return;
}
}
}

112 :デフォルトの名無しさん :2017/12/23(土) 14:10:55.29 ID:saCRURuP0.net
そりゃそうだろって反応しか返ってこないと思う

113 :デフォルトの名無しさん :2017/12/23(土) 14:19:46.07 ID:suzKftpB0.net
キーボードをa,b,c,dと順番に5秒置きに押していってすぐ途中で止められるプログラムを作るには
どういう方法があるんでしょうか?BackgroundWorkerにはこだわりません。
play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあってBackgroundWorkerを使うと
プログラム実行中でもきちんと表示されるのでBackgroundWorkerを使っています

114 :デフォルトの名無しさん :2017/12/23(土) 14:42:50.03 ID:AW7swrGi0.net
private IEnumerable<Action> GetJobs(int sleepMilliseconds) {
/**/var buttons = new [] { btnA, btnB, btnC, btnD };
/**/while (true) {
/**//**/foreach (var button in buttons) {
/**//**//**/yield return () => button.Click();
/**//**//**/yield return () => Thread.Sleep(sleepMilliseconds);
/**//**/}
/**/}
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
/**/while (true) {
/**//**/foreach (var job in GetJobs()) {
/**//**//**/job();
/**//**//**/if (backgroundWorker1.CancellationPending) {
/**//**//**//**/e.Cancel = true;
/**//**//**//**/return;
/**//**//**/}
/**//**/}
/**/}
}

115 :デフォルトの名無しさん :2017/12/23(土) 14:43:52.99 ID:7NR5j+Xf0.net
play_aとplay_bとplay_cとplay_dを分ける
デリゲート配列にしてforeachで回せばチェックは一カ所で済む

116 :デフォルトの名無しさん :2017/12/23(土) 14:47:49.51 ID:97OmZxF20.net
メソッドの名前がメンタルに悪い

117 :デフォルトの名無しさん :2017/12/23(土) 14:57:49.84 ID:eJOJ1LQ5M.net
5chはいつになったらGFM対応するんだ

118 :デフォルトの名無しさん :2017/12/23(土) 15:46:06.35 ID:KAucFFwx0.net
BackgroundWorkerじゃなくてタイマー使うべきだよ

119 :デフォルトの名無しさん :2017/12/23(土) 16:17:28.04 ID:Nxx0V5wTa.net
>>111
>>113
>play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあって
ってことはたぶんplay_abcdの中でbackgroundWorker1.ReportProgressを呼んでいる、
つまりbackgroundWorker1を参照できる場所にplay_abcdはあるんだから、
素直にCancellationPendingをポーリングするだけじゃないの?
本当はよくないと思うけどねこういうの

本当は前も書いたみたいにplay_abcdのシグネチャを
void play_abcd(Func<bool> canceled){...}

とかにして、呼び出すときに、
play_abcd(() => backgroundWorker1.CancellationPending);

がいいと思う

っていうか、そもそも
>キーボードをa,b,c,dと順番に5秒置きに押していくメソッド
をビジーループで実弁する必要本当にある?w

それ、タイマーで十分実現できると思うんだけど...

120 :デフォルトの名無しさん :2017/12/23(土) 16:39:39.92 ID:eJOJ1LQ5M.net
タイマーとかめんどくさいだけだろ

121 :デフォルトの名無しさん :2017/12/23(土) 16:58:02.75 ID:oBD8VcBx0.net
BackgroundWorkerのほうが実装が綺麗になるよね

122 :デフォルトの名無しさん :2017/12/23(土) 17:54:59.64 ID:433UoltE0.net
>>117
スペース2つで改行だっけ?
普通のレスの書き方と分離するためにコマンドを先頭に付けるとかかな
専ブラが対応すれば専ブラだけでは見れるな

123 :デフォルトの名無しさん :2017/12/23(土) 18:17:28.09 ID:MO+dM8J20.net
>>121
どう言う理由で?

124 :デフォルトの名無しさん :2017/12/23(土) 18:52:05.60 ID:vwLvtl/C0.net
タイマーなら、キャンセルでタイマー止めればそれで終わりでしょ
実装が見苦しいようには見えんね

125 :デフォルトの名無しさん :2017/12/23(土) 18:57:13.19 ID:AW7swrGi0.net
ためしに書いてみてよ

126 :デフォルトの名無しさん :2017/12/23(土) 19:41:20.88 ID:vwLvtl/C0.net
>>125
https://ideone.com/bZPXyC
色々端折ったけどこんな感じでどう?

127 :デフォルトの名無しさん :2017/12/23(土) 19:47:21.47 ID:PvZdk9430.net
>>113
そもそも、なんで提示したコードがdまで実行しないとキャンセルされないか理解できてる?
理解出来てればBackgroundWorkerを別の手法に変えても意味がないことは分かると思うんだけど

128 :デフォルトの名無しさん :2017/12/23(土) 20:47:59.87 ID:afY4COyy0.net
>>107
>Abortはしたくない
元質問者はAbortしたくないとは言ってないと思うぞ

129 :デフォルトの名無しさん :2017/12/23(土) 21:18:44.75 ID:XrEDpSoU0.net
バックグラウンドなんちゃらってなんだ?
タイマーでいいじゃん

130 :デフォルトの名無しさん :2017/12/23(土) 21:19:57.12 ID:eJOJ1LQ5M.net
>>126
そんなに悪くないね
bの後2秒待ってコンソールにハゲと出力
3秒後にc
みたいな仕様変更があったとしたらどうなる?

131 :デフォルトの名無しさん :2017/12/23(土) 21:21:13.92 ID:XrEDpSoU0.net
>>130
アホなん?
そんなレアケース持ち出して何が楽しいんだ?
そんな風になったら別のコーディングするに決まってんじゃん

132 :デフォルトの名無しさん :2017/12/23(土) 21:26:21.49 ID:XrEDpSoU0.net
タイマーでもTickイベントを1秒おきにすればその実装できるし
while+sleepとかアホすぎるわ

133 :デフォルトの名無しさん :2017/12/23(土) 21:29:55.10 ID:eJOJ1LQ5M.net
>>131
推測でしかないが質問者のやりたい事ってAPIが提供されてないアプリのGUIオートメーションだと思うんだ
やってみるとわかるけど、等間隔キー入力の繰り返し、のような単調な操作のほうがむしろレアケースだよ

134 :デフォルトの名無しさん :2017/12/23(土) 21:31:02.84 ID:YgD70bUC0.net
態々スレッド分ける様な処理じゃないのは間違いない

135 :デフォルトの名無しさん :2017/12/23(土) 21:33:38.79 ID:XrEDpSoU0.net
バックグラウンドワーカーとかタイマーじゃなくてTask.Runの中にwhileとsleepとカウンタを全部ねじ込んだほうががまとまりがいいな

136 :デフォルトの名無しさん :2017/12/23(土) 21:37:57.32 ID:XrEDpSoU0.net
やっぱなんでもない
俺のレスはスルーで

137 :デフォルトの名無しさん :2017/12/23(土) 21:39:10.88 ID:oBD8VcBx0.net
相変わらず質問者抜きの議論が大好きだなお前らは

138 :デフォルトの名無しさん :2017/12/23(土) 21:42:59.27 ID:eJOJ1LQ5M.net
ちなみに>>114の実装ならマクロが多少複雑化しても可読性がそこそこ良いのでオススメ

IEnumerable<Action> GetJobs() {
while (true) {
yield return () => SendKeys("A");
yield return () => Sleep(5000);
yield return () => SendKeys("B");
yield return () => Sleep(2000);
yield return () => SendKeys("ハゲ");
yield return () => Sleep(3000);
yield return () => SendKeys("C");
yield return () => Sleep(5000);
yield return () => SendKeys("D");
yield return () => Sleep(5000);
}

この考え方を進化させてJobsをActionの列挙ではなく式木にしたら記述が楽そうだな、とかインタープリターパターンで実装したらユーザー目線で便利そうだな、とか発展していく

139 :デフォルトの名無しさん :2017/12/23(土) 22:13:16.73 ID:7ZChdQbJ0.net
百万年発展し続けてろバーカ

140 :デフォルトの名無しさん :2017/12/23(土) 22:20:22.98 ID:eJOJ1LQ5M.net
初心者用スレというか子供用スレだったのか

141 :デフォルトの名無しさん :2017/12/23(土) 22:36:15.16 ID:FPRjmoIB0.net
非同期処理は、コンテキストが異なるから、処理の実行順番は確定しない

ビジーループするのは、もってのほか。
ビジーループは同期処理

非同期処理は、コールバック関数を使う。
相手の処理が終わったら、コールバック関数を呼んでもらう

コンテキストが異なるものは、マルチスレッド・マルチプロセスでも、
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから、
プログラマーができる事は無い

複数のスレッド・プロセスは、無関係に同時に、異なるCPU で動く(並行処理)から、
処理時間が短くなるが、処理の実行順番は、OS が決めるから確定しない

同期処理とは異なる

142 :デフォルトの名無しさん :2017/12/23(土) 23:00:34.49 ID:vwLvtl/C0.net
一番の問題は、最悪5秒戻ってこないポンコツってことだと思う

143 :デフォルトの名無しさん :2017/12/23(土) 23:04:50.10 ID:eJOJ1LQ5M.net
結論はやっぱりTask使えって事だな

144 :デフォルトの名無しさん :2017/12/23(土) 23:31:47.43 ID:FPRjmoIB0.net
そもそも、ビジーループ(ポーリング)しても意味がない

例えば、スレッドA から、10ms 毎にポーリングしても、
スレッドB の処理が10秒掛かれば、千回のポーリングは無意味

ポーリングしても、異なるスレッドの処理を速めることはできない。
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから

プログラマーにできることは、コールバック関数を登録することだけ。
スレッドBの処理が終われば、それを呼んでもらうだけ

145 :デフォルトの名無しさん :2017/12/23(土) 23:34:38.24 ID:oRgQl+h80.net
鈴虫がまだ何か言ってるな
鈴虫は鈴虫の学校にでも通ってな

146 :デフォルトの名無しさん :2017/12/24(日) 02:28:49.95 ID:BEcZgz8A0.net
フリーズしない/しても問題ないUIにすればいいだけだと思うが

147 :デフォルトの名無しさん :2017/12/24(日) 07:08:55.16 ID:kiz3NtEj0.net
play_abcdって雑な作りから察すると5秒おきってのはaの動作が終わってから5秒なんじゃね?
本当に5秒感覚でキーを押したいならタイマーがいいけど、各動作を5秒感覚で実行したいならタイマーは使わない方がいいかな

148 :デフォルトの名無しさん :2017/12/24(日) 07:21:26.36 ID:ZzoS8BMq0.net
へー、そんなんだ。すごーい。

149 :デフォルトの名無しさん :2017/12/24(日) 07:22:49.50 ID:bwNsD4dr0.net
クリスマスぐらい女と過ごせよ

150 :デフォルトの名無しさん :2017/12/24(日) 14:33:03.85 ID:WF18n6kNM.net
2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータを扱いたいです。EXCELでいうvlookup関数みたいな参照を行いたいのですが、EntityFrameworkだとSQLserverのインストールが必要?なため別の方法を模索中です。
csvやtxtファイルを実行ファイルと同じフォルダにいれて参照するのがいいか、もしくは別の方法があればご教示いただきたいです

151 :デフォルトの名無しさん :2017/12/24(日) 14:33:41.85 ID:EoGwjq2qr.net
朝Hしてきたww

152 :デフォルトの名無しさん :2017/12/24(日) 14:39:27.53 ID:h6xl/PRx0.net
>>150
EF知ってるならSQLiteが現実的じゃね?

153 :デフォルトの名無しさん :2017/12/24(日) 14:40:54.62 ID:i8D7y6TzM.net
>>150
そんなもんコード埋め込みでいいよめんどくせえ
動きゃいいんだよ
C#erってそういうの好きだろ

154 :デフォルトの名無しさん :2017/12/24(日) 14:44:06.81 ID:BNj/0IJ2M.net
俺ならそんなもん一枚のHTMLとJavaScriptで作ってAWS S3に置くわ
その程度のことにデプロイの手間をかけるのはアホらしすぎる

155 :デフォルトの名無しさん :2017/12/24(日) 17:13:18.55 ID:LxzgKTLN0.net
>>154
いちいちブラウザひらくのめんどくさ
ブラウザだとウィンドウサイズでかいし

156 :デフォルトの名無しさん :2017/12/24(日) 17:45:11.77 ID:BNj/0IJ2M.net
今時一切ブラウザ使わない業務システムなんか存在するのか?
ブラウザくらい常に開いてるだろ

157 :デフォルトの名無しさん :2017/12/24(日) 18:29:58.39 ID:/uYLPwgV0.net
500×3でたかだが1500前後にデータベースは大げさだ
.resxファイルで済む量だろう

158 :デフォルトの名無しさん :2017/12/24(日) 22:22:23.70 ID:Pk6n0aea0.net
>>150
>2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータ

だったら500x3の二次元配列で行けると思う。

159 :デフォルトの名無しさん :2017/12/24(日) 22:47:41.55 ID:fqHoYjgG0.net
DataTableでいいんじゃね

160 :デフォルトの名無しさん :2017/12/24(日) 22:53:06.60 ID:MFJnXVyx0.net
てきとーなクラス作ってXmlSerializerで永続化すりゃOK
検索も500件程度なら速度を気にせずLINQで楽々実装可能

161 :デフォルトの名無しさん :2017/12/24(日) 23:03:51.51 ID:V0wW1gjw0.net
今時新規でXMLはないわ
このまま衰退して消えてくれ

162 :デフォルトの名無しさん :2017/12/24(日) 23:08:30.69 ID:T0V8golIa.net
>>161
最新だと何が人気?

163 :デフォルトの名無しさん :2017/12/24(日) 23:09:33.19 ID:8Z10fIlT0.net
読むだけだしJSONやYAMLでよくね?

164 :デフォルトの名無しさん :2017/12/24(日) 23:22:41.54 ID:Tzue5pu10.net
JSONの指定があればJSONでもいいけど
何も指定がなければXMLで書くけどな
別にレガシーでもなくね?

165 :デフォルトの名無しさん :2017/12/24(日) 23:22:45.70 ID:T0V8golIa.net
>>163
大してかわんねーじゃん

166 :デフォルトの名無しさん :2017/12/24(日) 23:29:42.77 ID:ZzoS8BMq0.net
結論:好きにしろ

167 :デフォルトの名無しさん :2017/12/25(月) 00:41:48.94 ID:eNXAkvu40.net
じゃprofileで

168 :デフォルトの名無しさん :2017/12/25(月) 01:51:22.86 ID:GOMg9JlCa.net
でも項目数多くなって激遅になったらCSVに戻せる構造なら戻したほうがいいよ

169 :デフォルトの名無しさん :2017/12/25(月) 03:41:46.71 ID:Jnt6vkvB0.net
jsonってxmlとくらべて何がおいしいの?

170 :デフォルトの名無しさん :2017/12/25(月) 07:08:19.08 ID:8aC1MlXsa.net
xml、resx、json、yaml、SQLiteといろいろ選択肢がありますね。少し調べてみて良さそうなもの選んでみます。ありがとうございました

171 :デフォルトの名無しさん :2017/12/25(月) 08:10:28.38 ID:r7ITo5Fnr.net
>>169
軽い

172 :デフォルトの名無しさん :2017/12/25(月) 08:12:45.88 ID:W15ZQhn00.net
>>169
XML比なら、
人間にとって扱いやすい
サイズが小さい
読み書きが速い
属性と要素の使い分けをしなくていい
JSON SchemaはXML Schemaより圧倒的に分かりやすく書きやすい
配列、マップ、数値、論理値、文字列という最低限の型付けがあるので、
プログラミング言語のデータ構造とのマッピングがしやすい(XMLは属性やXML Schemaで明示的にマッピングしてやらないと使い物にならない)

173 :デフォルトの名無しさん :2017/12/25(月) 10:12:18.83 ID:eSLpDS2SM.net
人間にとって扱いやすいだけはXMLの方が優れてると思うな
特にデータ量が増えるにしたがってjsonはそのまま読むのが不可能になってくる

174 :デフォルトの名無しさん :2017/12/25(月) 10:15:18.25 ID:rqAJYeIu6.net
どっちでもいい
好きな方を使えばいい

175 :デフォルトの名無しさん :2017/12/25(月) 11:30:37.90 ID:ny2AXHbu0.net
この案件だと、Excelで加工しやすいcsvがマッチしているんじゃないかな?
そりゃxmlだって出来るが、仕組みが大きくなる

176 :デフォルトの名無しさん :2017/12/25(月) 11:35:31.66 ID:FHswaYKc6.net
たしかに
終了

177 :デフォルトの名無しさん :2017/12/25(月) 11:47:08.20 ID:IEH/2als0.net
SYLKファイルにしたっていいんだぜ
どうせ作業量変わんないだろ

178 :デフォルトの名無しさん :2017/12/25(月) 12:20:28.09 ID:sz9H2GSPM.net
美容番長だっけ?

179 :デフォルトの名無しさん :2017/12/25(月) 12:22:02.34 ID:r7ITo5Fnr.net
今時パーサーやシリアライザが揃ってるんだからどれでも同じな気はする

180 :デフォルトの名無しさん :2017/12/25(月) 12:56:04.14 ID:OQg4hGpXa.net
>>175
データ量が多くなるとおせーんだよなxml,json
んで運用入ってから素人でも編集できるいいツールはないの?
って普通に無いからな(笑)
本気で作るものほどcsvやxls

181 :デフォルトの名無しさん :2017/12/25(月) 14:38:00.28 ID:MGc+vt78d.net
>>173
ねーよ

182 :デフォルトの名無しさん :2017/12/25(月) 18:37:57.59 ID:/b5JEuJS0.net
結局は小さいデータなら下手なDBとか使うより、
csvの方が丈夫さとか確認のしやすさで良いって言うw

183 :デフォルトの名無しさん :2017/12/25(月) 18:59:27.21 ID:8wInAEQh0.net
だから上手なDBとか使えばcsvの方より良いんだろ

184 :デフォルトの名無しさん :2017/12/25(月) 19:08:03.17 ID:OOxEDqwma.net
DBはトランザクションあるから規模に関係無く必要だと思ったら使っとけ

設定ファイル的な話としたら
xmlとjsonって微妙だよねと

185 :デフォルトの名無しさん :2017/12/25(月) 19:15:27.15 ID:8wInAEQh0.net
設定ファイル的な話だとしたらjsonって微妙だけどxmlはクソ
xmlはどんな用途向けにもクソ

186 :デフォルトの名無しさん :2017/12/25(月) 19:44:00.45 ID:OOxEDqwma.net
>>185
言うほど変わらんような気がするけど
何が嫌なんだ?

187 :デフォルトの名無しさん :2017/12/25(月) 19:48:52.98 ID:Mbt+5Db+6.net
※個人の感想です

188 :デフォルトの名無しさん :2017/12/25(月) 20:07:35.17 ID:y0MybC9Za.net
>>179
ぶっちゃけこれだろ

189 :デフォルトの名無しさん :2017/12/25(月) 20:13:26.84 ID:8wInAEQh0.net
>>186
嫌なのではなくクソだと言っとるのだが?

190 :デフォルトの名無しさん :2017/12/25(月) 20:18:39.56 ID:OOxEDqwma.net
>>189
じゃあ大好物じゃん

191 :デフォルトの名無しさん :2017/12/25(月) 20:18:59.89 ID:PGo3p3P9a.net
アホちゃいまんねんパーでんねんって言われてもどう違うのか本人にしか分からんよw

192 :デフォルトの名無しさん :2017/12/25(月) 20:24:10.15 ID:8wInAEQh0.net
>>190
何が気にいらんのか知らんけど変な絡み方するのやめてもらえんかな?

193 :デフォルトの名無しさん :2017/12/25(月) 20:27:44.84 ID:Mbt+5Db+6.net
クソって言いたいだけだろって言いたいんだろう

194 :デフォルトの名無しさん :2017/12/25(月) 20:27:48.56 ID:hykLc5AjM.net
むしろお前が無駄に絡んでる気がするが...
俺も>>179でFAだと思う

195 :デフォルトの名無しさん :2017/12/25(月) 20:31:09.26 ID:Mbt+5Db+6.net
好きなの使えって結論を昨日出しただろ
おわり

196 :デフォルトの名無しさん :2017/12/25(月) 20:35:26.95 ID:8wInAEQh0.net
>>194
同じって事はないよ
どの形式でも必要十分な機械可読性を得られるなら
選択の決め手になるのは速度などではなく人間可読性
ヒューマンリーダビリティ
xmlはこれが壊滅的にクソ

197 :デフォルトの名無しさん :2017/12/25(月) 20:54:00.52 ID:axpIwit20.net
可読性しか判断基準がないとか話にならん

198 :デフォルトの名無しさん :2017/12/25(月) 20:55:38.22 ID:HvFCkquc0.net
バックエンドだと設定ファイルは.csがベスト
貧弱なインテリセンスで間違えやすい設定なんか書きたくないっすわ
テストまで考えるとビルドなしで変更可能である意味がほとんどないしな

199 :デフォルトの名無しさん :2017/12/25(月) 21:26:28.09 ID:8wInAEQh0.net
今日は特別に俺からのクリスマスプレゼントの言葉を贈ってやろう

お前らはもう少し自分の無知無能と真剣に向きあった方が良い

200 :デフォルトの名無しさん :2017/12/25(月) 21:42:53.76 ID:NbKIcSglM.net
>>180
多くなるならJSON Linesの方が効率いいよ
ログとかで普通に使われるファイル形式
CSVはスキーマが変わると面倒なんだよな

201 :デフォルトの名無しさん :2017/12/25(月) 22:21:29.72 ID:NVmmOTaCa.net
今時csvはなんちゅう本中華
レガシーへ(から)の接続ならしょうがないが

202 :デフォルトの名無しさん :2017/12/25(月) 22:37:36.04 ID:6sU1sWLU0.net
次スレからスレタイに雑談を付加してくれ

203 :デフォルトの名無しさん :2017/12/25(月) 22:48:43.23 ID:VEnbH/i+a.net
>>202
いいアイディアだな
ただこのスレはこのまま残して
初心者雑談用として新しくスレが欲しいな

204 :デフォルトの名無しさん :2017/12/25(月) 22:50:13.06 ID:6sU1sWLU0.net
そんなことしても質問スレで雑談が始まるのは目に見えてるやん...

205 :デフォルトの名無しさん :2017/12/25(月) 22:54:47.74 ID:UoNk991a0.net
議論スレがあるじゃん
脱線しそうなら自発的に移動して

ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/

206 :デフォルトの名無しさん :2017/12/25(月) 22:56:14.63 ID:6sU1sWLU0.net
無理でしょ
どこまでが質問の答えなのか雑談なのか区切りが曖昧だし

207 :デフォルトの名無しさん :2017/12/25(月) 23:14:27.18 ID:B733ZmRI0.net
ID真っ赤の奴が出てきたら議論スレに誘導

208 :デフォルトの名無しさん :2017/12/26(火) 02:32:13.70 ID:pUXlD1DI0.net
>>199
ごめんなさい。

今日の朝、靴下にその言葉入ってたら読んでたよサンタさん!

209 :デフォルトの名無しさん :2017/12/26(火) 06:50:53.13 ID:tKLgMVXTM.net
>>207
>>199みたいに自覚ない奴がいる限り誘導しても無駄でしょ
まあXMLに親でも殺されたんだろうな w

210 :デフォルトの名無しさん :2017/12/26(火) 08:12:53.60 ID:cT/2Pkr20.net
ボクのおとうさんは、XMLというやつに殺されました


俺はWPFだなw

211 :デフォルトの名無しさん :2017/12/26(火) 09:02:34.41 ID:4/m6WkoIM.net
初心者なので教えてください。
xml ならDataSet.ReadXml()でお手軽に扱えてたんですが、jsonはどう読み込んで使うのですか?
ちょっとググったら、jQueryとか、webっぽいのが目についたのですが、ローカルexeでも使えるんでしょうか?

212 :デフォルトの名無しさん :2017/12/26(火) 09:11:46.70 ID:x+COpgJUM.net
>>211
NuGetでJson.NETを拾ってくる

213 :デフォルトの名無しさん :2017/12/26(火) 09:16:47.35 ID:zc8zApfr0.net
UWPならWindows.Data.Jsonが使えるのでダウンロードしなくてもよい

214 :デフォルトの名無しさん :2017/12/26(火) 11:03:19.55 ID:TKx0k9Mu0.net
XMLは無能ほど嫌うよな、わかりやすくていいわw

215 :デフォルトの名無しさん :2017/12/26(火) 12:28:40.93 ID:OUkXE0b1a.net
XML最高って言う奴がいるけどDTDとかちゃんと理解して使ってるのか疑問
俺はさっぱりわからなないので放置してる

XMLは賢い人が集まって俺って賢いだろを連発してクソ企画になったって本で読んだ

216 :デフォルトの名無しさん :2017/12/26(火) 12:32:57.48 ID:OUkXE0b1a.net
XMLは同じようなものが大量に並んでてゲシュタルト崩壊?してタグがタグに見えなくなる

217 :デフォルトの名無しさん :2017/12/26(火) 12:45:02.83 ID:VJsVtqG+0.net
jsonの問題はコメントだな、一応使える場合もあるけど本式はコメント使えない
ググると作者が原理主義者でどうにもならんようだ

218 :デフォルトの名無しさん :2017/12/26(火) 12:50:09.20 ID:oDLVQMSx6.net
もう飽きたよこの話題
次の質問マダー?

219 :デフォルトの名無しさん :2017/12/26(火) 18:42:54.83 ID:k2JgsGmBd.net
>>218
じゃあ折角だし
ListviewItemCollectionやCollection<T>をソートするいい方法ってなんかある?
別インスタンスにするのはNG
並び替えたやつをループしてRemoveとAddを繰り返しやる方法以外思いつかなかった

220 :デフォルトの名無しさん :2017/12/26(火) 19:16:47.40 ID:cWcYrW8d0.net
いいってのは何がいいんだ?
メモリ効率か?
ソート速度か?
コーディングの手軽さか?

221 :デフォルトの名無しさん :2017/12/26(火) 19:19:35.90 ID:biBlc3d/0.net
>>219
並び替えたやつをループとは?
どうやって並べ替えた?

222 :デフォルトの名無しさん :2017/12/26(火) 19:20:20.73 ID:tRG2bysKa.net
普通に関数作ればよくね?

223 :デフォルトの名無しさん :2017/12/26(火) 20:21:15.18 ID:V+MeXN2+0.net
そもそもICollection<T>に要素の並び順なんてものはない
IEnumerable<T>として列挙されるときの順番ならOrderBy
その順番を使い回したいならToArray

224 :デフォルトの名無しさん :2017/12/26(火) 20:24:15.51 ID:0luiAFcJ0.net
>>219
分かりづらかったんで質問を変える
private readonly Collection<string> hoge
のhogeを文字列順にするとき
foreach(var s in hoge.orderby()){
hoge.Remove(s);
hoge.Add(s);
}

でできたんだけど理由があってaddは使いたくなかった
add使わないで並び替えってできる?

225 :デフォルトの名無しさん :2017/12/26(火) 20:27:07.94 ID:zc8zApfr0.net
Comparison書いてSortすりゃいいのでは
この手の問題は並び順のルールの方に重点が置かれる、並び替え方なんてこの際どうでもいい

226 :デフォルトの名無しさん :2017/12/26(火) 20:30:23.64 ID:Nu277XVha.net
Collection<string>がICollectionの間違いならToListして代入するだけじゃないの?

227 :デフォルトの名無しさん :2017/12/26(火) 20:46:11.62 ID:0luiAFcJ0.net
>>225
Sortがあったら楽だったんだけどね

>>226
https://msdn.microsoft.com/ja-jp/library/ms132397(v=vs.110).aspx
読み取り専用だから代入できない
ICollectionは継承してるクラス
ToListした時点で別インスタンスだからそれに対してSortしても意味無い

>>223
気持ちは分かるんだけど使ってる先を修正できずこちら側で並び替えないといけない状況があってな
インデクサー定義されてるんだから並び替えできても良さそうなのに見つけられなかった

228 :デフォルトの名無しさん :2017/12/26(火) 20:58:13.89 ID:YcrPMu9B0.net
point(1,1)

axis(1,1)
に正規表現で置換したいのですがどうすればいいでしょうか?
visualstudio2015です

229 :デフォルトの名無しさん :2017/12/26(火) 21:01:11.62 ID:YcrPMu9B0.net
point\({.*}\)
axis(\1)
とやっても出来ないので悩んでいます

230 :デフォルトの名無しさん :2017/12/26(火) 21:01:50.76 ID:Nu277XVha.net
>>227
なるほどw
でもreadonlyにこだわる必要本当にあるの?

231 :デフォルトの名無しさん :2017/12/26(火) 21:07:02.01 ID:cWcYrW8d0.net
自分でソートロジックかいて要素入れ替えていけば良いだけ

おれならそうとうな量でない限り、ソート済みの別インスタンスと入れ替えるがな

232 :デフォルトの名無しさん :2017/12/26(火) 21:10:38.37 ID:biBlc3d/0.net
>>224
理論的に考えてインデクサを持たないICollectionをAdd無しに内部での並び順を変えるのは不可能だろ

233 :デフォルトの名無しさん :2017/12/26(火) 21:10:38.80 ID:cWcYrW8d0.net
もし元インスタンスにさわりたくないなら、元のコレクションとは別に
ソートした結果のインデックス位置をもつコレクションつくってそっちから引っ張るけど

234 :デフォルトの名無しさん :2017/12/26(火) 21:11:48.58 ID:biBlc3d/0.net
>>229
{}ではなく()では?

235 :デフォルトの名無しさん :2017/12/26(火) 21:20:16.36 ID:0luiAFcJ0.net
>>232
IListも継承してるクラスだからインデクサ持ってんじゃないかな

元インスタンスに触りたくないというよりは元インスタンスにも反映させたい
別クラスで作られたオブジェクトのインスタンスを渡してもらっていて、それをreaonlyにセットこっちのを並び替えたら同じ様に元のデータも並び替えられるって感じ

ここら辺の構成は弄れない
本当に勘弁してほしいわ

236 :デフォルトの名無しさん :2017/12/26(火) 21:21:35.79 ID:YcrPMu9B0.net
>>234
(にしてもだめでした
http://d.hatena.ne.jp/cjohn/20090105/1231156636
このページの通りにやっているのですが出来ません

237 :デフォルトの名無しさん :2017/12/26(火) 21:24:39.45 ID:biBlc3d/0.net
>>235
ICollectionはIEnumerableしか継承してないんだがIListも継承してるとは?

238 :デフォルトの名無しさん :2017/12/26(火) 21:33:32.33 ID:0luiAFcJ0.net
>>237
今議題にしてるのがCollection<T>クラスだからそっちの継承をみてくれ

239 :デフォルトの名無しさん :2017/12/26(火) 21:34:59.26 ID:biBlc3d/0.net
>>236
マイクロソフトのドキュメントみて\1を$1にしたらできた

240 :デフォルトの名無しさん :2017/12/26(火) 21:38:58.29 ID:biBlc3d/0.net
>>238
すまんな
じゃあ先頭から参照書き換えていけばいいのでは?

241 :デフォルトの名無しさん :2017/12/26(火) 21:43:23.19 ID:YcrPMu9B0.net
>>239
(にして$にしたらできました!有難う御座います!

242 :デフォルトの名無しさん :2017/12/26(火) 21:57:00.69 ID:0luiAFcJ0.net
なるほど、Add、Removeじゃなくてhoge[i]=s みたいな感じで順に設定し直せばいいのか
多分>>233も同じことを言ってたんだろうけど別の意味で捉えてた
次からそうするわ

243 :デフォルトの名無しさん :2017/12/26(火) 22:15:00.14 ID:Nu277XVha.net
車輪の再発明感全開だなw

public static class Extensions
{
  public static void CopyTo<T>(this IList<T> src, IList<T> dst)
  {
    int count = Math.Min(src.Count, dst.Count);
    for (int i = 0; i < count; i++)
      dst[i] = src[i];
  }

  public static void Sort<T, TKey>(this IList<T> x, Func<T, TKey> keySelector)
  {
    x.OrderBy(keySelector).ToList().CopyTo(x);
  }
}

244 :デフォルトの名無しさん :2017/12/26(火) 22:17:42.69 ID:DUnSIAzj0.net
>>235
いい機会だからリファクタしようぜ

245 :デフォルトの名無しさん :2017/12/26(火) 22:34:38.39 ID:OyWBWrx4p.net
>>243
親切杉ワロタ

246 :デフォルトの名無しさん :2017/12/26(火) 22:59:22.02 ID:OUkXE0b1a.net
srcやdistがnullの場合は?

247 :デフォルトの名無しさん :2017/12/27(水) 06:40:33.49 ID:8vUn4Dy4r.net
即死

248 :デフォルトの名無しさん :2017/12/27(水) 08:15:03.92 ID:F/ihue6L0.net
即死するべき

249 :デフォルトの名無しさん :2017/12/27(水) 17:55:28.81 ID:LR8quwCc0.net
C#はメモリ不足でコンパイルできないことはありますか?

250 :デフォルトの名無しさん :2017/12/27(水) 18:05:13.47 ID:P6EO0z0h0.net
>>249
該当するコンパイラのスレで聞いてください

251 :デフォルトの名無しさん :2017/12/27(水) 18:23:31.71 ID:BZ3b6503d.net
>>249
絶対にないとはいえないけど、そもそもそんなマシンじゃ開発なんてできやしない。

252 :デフォルトの名無しさん :2017/12/27(水) 20:06:48.22 ID:hg84Qb1oM.net
>>249
その前にVSが重すぎてまともに動かないから大丈夫

253 :デフォルトの名無しさん :2017/12/27(水) 20:47:39.32 ID:Jr44gGH00.net
>>252
コンパイルとVisual Studioは別問題

254 :デフォルトの名無しさん :2017/12/27(水) 20:53:22.02 ID:CubzVxEy0.net
>>253
コンパイルに何の問題があると?

255 :デフォルトの名無しさん :2017/12/27(水) 20:56:02.93 ID:gu8VevGS0.net
Windowsアプリケーションにおいて、ソースファイルのフォルダ分けはどのようにされていますか?

256 :デフォルトの名無しさん :2017/12/27(水) 22:08:35.73 ID:RcFlfCwd0.net
自前のクラスに、作成済みオブジェクトを探してオブジェクトを返すメソッドを作るにはどうすれば良いんですか?
Xamarin Androidにいうfindbyname()、UnityでいうGameObject.Find<T>()のようなものを自前のクラスにもつけたいんですが・・・・

257 :デフォルトの名無しさん :2017/12/27(水) 22:19:15.35 ID:ZvzZDw7/0.net
もっと詳しく

258 :デフォルトの名無しさん :2017/12/27(水) 22:21:38.34 ID:CubzVxEy0.net
もっと激しく

259 :デフォルトの名無しさん :2017/12/27(水) 22:27:50.77 ID:RcFlfCwd0.net
ときには情熱的に

260 :デフォルトの名無しさん :2017/12/27(水) 23:50:53.96 ID:INWFuiTDa.net
>>256
Dictionaryに名前でオブジェクト登録という方法があるけど
わざわざそんな無意味なことをする意味が分からない

UWPやWPFやwindows forrmsでは
xamarinのfindbynameみたいなものわざわざ使わないでもいいのに

261 :デフォルトの名無しさん :2017/12/28(木) 03:01:35.82 ID:OJX4Pfid0.net
>>254
コンパイルの質問なのにVisual Studioの問題にすり替えるのが不適切だと言ったまで

262 :デフォルトの名無しさん :2017/12/28(木) 07:08:39.80 ID:THqyhi+6M.net
データにメソッドをチェーンするのが関数型言語の特徴なのかなと解釈してるんですけど、c#は関数型言語も内包してると考えて良いのでしょうか?

で、F#は関数型専用言語という位置づけで

263 :デフォルトの名無しさん :2017/12/28(木) 07:22:15.38 ID:mHFTOa6Td.net
>>262
F#は関数型専用ではなく、マルチパラダイム

264 :デフォルトの名無しさん :2017/12/28(木) 07:27:00.29 ID:THqyhi+6M.net
>>263
そうなんですか
となるとc#にかなり接近してる気がするのですが、F#がなぜ作られたか不思議です

265 :デフォルトの名無しさん :2017/12/28(木) 07:43:07.29 ID:yMSttuCfa.net
>>262
まず大前提としてメソッドチェーンと関数型プログラミングは何にも関係ない
下手にオブジェクト指向とのマルチパラダイムから入るより、まずはML系とかHaskell, Schemeみたいなちゃんとした関数型言語を触って特徴を掴むのがいいと思う

266 :デフォルトの名無しさん :2017/12/28(木) 08:13:25.30 ID:ux20Gvlta.net
最終目的は何なん?

267 :デフォルトの名無しさん :2017/12/28(木) 08:24:33.51 ID:8DtRzb3L0.net
関数型言語やるとコードが綺麗になるから目的なんか関係なく一度は経験するべき

268 :デフォルトの名無しさん :2017/12/28(木) 10:07:38.23 ID:mHFTOa6Td.net
>>264
あくまでも専用ではないという指摘ね

269 :デフォルトの名無しさん :2017/12/28(木) 10:27:05.35 ID:UQgDKgtxr.net
>>255
ケースバイケース
一つの答は無い

270 :デフォルトの名無しさん :2017/12/28(木) 11:30:41.15 ID:MTDYAVo/0.net
>>249
>>251
パソコンのメモリは十分に余裕があると仮定してプログラム的な容量の限界が知りたいです。
C#は無限にコードが書きこめるということですか?

271 :デフォルトの名無しさん :2017/12/28(木) 12:42:40.91 ID:ISLNvVJt0.net
C#言語にはソースコードサイズの限界なんて定義されてない
むしろ定義されてる言語って存在するの?

272 :デフォルトの名無しさん :2017/12/28(木) 12:42:57.97 ID:kdbduM9Wd.net
>>270
無限にコードが書き込めるって、具体的にどういうことを想定してるの?

273 :デフォルトの名無しさん :2017/12/28(木) 13:03:29.10 ID:qTeBLGvd6.net
コンパイル可能なソースコードサイズがコンピュータのメモリ資源に依存するコンパイラがあるってことじゃね

274 :デフォルトの名無しさん :2017/12/28(木) 13:29:50.10 ID:MTDYAVo/0.net
>>271
VB6は数百万行で限界が来てコンパイルできなくなりました。
>>272
コードを千万行単位で書き込んでも大丈夫か知りたいです。

275 :デフォルトの名無しさん :2017/12/28(木) 13:37:17.01 ID:bfoeL7nqM.net
適宜プロジェクト分ければ楽勝だろ
VS自体のソースとかだと余裕で超えてるだろうし

276 :デフォルトの名無しさん :2017/12/28(木) 14:18:54.84 ID:2t6rj/eWH.net
銀行の基幹システムかよ

277 :デフォルトの名無しさん :2017/12/28(木) 14:28:23.21 ID:4EMpIOJ0M.net
>>271
コンパイラーの上限値を明記してる処理系はあるけどc#の見つからんな。
何処かにあるはず。

278 :デフォルトの名無しさん :2017/12/28(木) 15:01:10.61 ID:4EMpIOJ0M.net
コンパイラエラーCS1033の記述に
/debugオプションを指定した場合は16,707,556行。しない場合は268,435,454行って書いてある。
1つのソースコードファイルにそんな行数を想定してるんだw

279 :デフォルトの名無しさん :2017/12/28(木) 15:02:08.30 ID:Pbz8zTsrp.net
1ファイルの行数の制限はCで見たことあるけど
プロジェクトやモジュール単位での総行数の制限は見たことないな
本当にそんなのあるの?

280 :デフォルトの名無しさん :2017/12/28(木) 15:02:46.82 ID:4EMpIOJ0M.net
>>274
そんなサイズのVB6なんて見たことないw

281 :デフォルトの名無しさん :2017/12/28(木) 15:06:16.70 ID:4EMpIOJ0M.net
>>279
リンカーに上限値があるかもね。

282 :デフォルトの名無しさん :2017/12/28(木) 15:18:45.90 ID:0QpKKHbp0.net
約1600万行のcsファイル開きたくないな
どう考えてもGodClassですがな

283 :デフォルトの名無しさん :2017/12/28(木) 15:26:24.91 ID:4EMpIOJ0M.net
Visual Studioのエディタがハングするだろ

284 :デフォルトの名無しさん :2017/12/28(木) 15:29:15.32 ID:qUCulPnS0.net
>>267
lisp/scheme は関数型にはいりますか?

285 :デフォルトの名無しさん :2017/12/28(木) 15:46:38.41 ID:VwS/1tfY0.net
>>274
> コードを千万行単位で書き込んでも大丈夫か知りたいです。
試せばいいだけ

286 :デフォルトの名無しさん :2017/12/28(木) 15:47:41.32 ID:4ftZK9Tqa.net
>>285
そーでもない
もし本当に超えそうなら

287 :片山博文MZ :2017/12/28(木) 15:55:49.66 ID:4SlZSkiq0.net
OSが止まる可能性アリ。

288 :デフォルトの名無しさん :2017/12/28(木) 16:06:05.42 ID:HXzpTfmra.net
>>284
何をもって入らないにしたいのかわからないくらい入るじゃん

289 :デフォルトの名無しさん :2017/12/28(木) 16:33:31.43 ID:qUCulPnS0.net
>>288
lisp って太古の昔から存在しているじゃない、これに比肩するのは cobol とか fortran とか、位に
そんな昔に関数型が存在できたのか?

290 :デフォルトの名無しさん :2017/12/28(木) 16:52:34.19 ID:BvK/JshZa.net
コンパイラなんて自分で書いたことも理論勉強したこともないけど、
扱える識別子の数の上限とかは当然あるんだろうなあ

もっとも、恐らく全部がオンメモリで動いてるはずのインテリセンスの限界ですら
普通のプログラマはたぶん経験してないはずで、必要ならディスクも使えるはずの
コンパイラの限界なんて実用上は無限と想定してよいんじゃないかしら

291 :デフォルトの名無しさん :2017/12/28(木) 17:01:12.05 ID:4ftZK9Tqa.net
言語を二次コードとして
一次コードから生成する形のプログラムを組んだらそういう限界を超えやすいかもしれんな

292 :デフォルトの名無しさん :2017/12/28(木) 17:51:47.90 ID:Ub6XmzY9a.net
>>289
実装として問題ない性能が出たかは別として、関数型パラダイム自体は大昔からある
ラムダ計算も提唱された時期はチューリングマシンとあまり変わりなかったはず
関数型なんて要は文より式を多用する書き方ってくらいの認識でいいよ
初期Lispだって十分関数型といえる

293 :デフォルトの名無しさん :2017/12/28(木) 21:01:15.87 ID:0+I+cwib0.net
>>256
>作成済みオブジェクトを探してオブジェクトを返す
という点だけで反応するけど、シングルトンのオブジェクトを共有したいみたいな話なら
MEFとかUnity(ゲームじゃない方)とかのDIコンテナ利用すればいいんじゃないかな。

294 :デフォルトの名無しさん :2017/12/29(金) 09:36:53.74 ID:oOC6ueEnM.net
リフレクションしたいんだろ

295 :デフォルトの名無しさん :2017/12/30(土) 12:06:27.98 ID:fp/oHxe90.net
javascriptで生成後の値をスクレイピングして取得するにはどのような方法がおすすめですか?

296 :デフォルトの名無しさん :2017/12/30(土) 12:28:35.27 ID:fH0y6h0/M.net
>>295
普通にヘッドレスブラウザ & Seleniumでいいよ
今ならchromeやfirefoxがヘッドレス対応してる
C#はSeleniumライブラリの出来がイマイチなのでpythonやその他の言語を使ったほうがいいだろうね

297 :デフォルトの名無しさん :2017/12/30(土) 14:14:37.73 ID:fp/oHxe90.net
>>296
ベースはC#で行きたい場合、スクレイピングはpythonで作って、dllにでもして呼び出すイメージでしょうか?

298 :デフォルトの名無しさん :2017/12/30(土) 14:16:47.93 ID:fH0y6h0/M.net
C#でもSeleniumは動かせるよ
おすすめはしないってだけ

299 :デフォルトの名無しさん :2017/12/30(土) 14:21:49.39 ID:fH0y6h0/M.net
python使うならモジュールではなくサービスにしたほうがいいだろうね

300 :デフォルトの名無しさん :2017/12/30(土) 14:23:22.82 ID:IKvN98q1M.net
普通にProcess.Startでいいよ
スクレイピングなんかそれ自体クソ重いから連携はファイルベースで全く問題ない

301 :デフォルトの名無しさん :2017/12/30(土) 14:47:06.31 ID:gOML52to0.net
>>298
なぜ?

302 :デフォルトの名無しさん :2017/12/31(日) 01:25:27.69 ID:/ykdU4z00.net
出来がイマイチだから

303 :デフォルトの名無しさん :2017/12/31(日) 06:36:51.88 ID:5u0blHAo0.net
>>302
何に比べてどうイマイチなの?

304 :デフォルトの名無しさん :2018/01/01(月) 20:52:37.58 ID:G7LbeSvc0.net
oracleに接続するのはodp.net安定ですか?

305 :デフォルトの名無しさん :2018/01/02(火) 00:30:47.40 ID:TZO8s3980.net
>>304
それ以外に何を考えてんの?

306 :デフォルトの名無しさん :2018/01/02(火) 20:06:46.76 ID:c6AfmmkU0.net
ファイル、新しいプロジェクトを選びます
Windowsフォームアプリケーション
を選択したいのですが、見当たりません

visual studio 2017インストールし、C#の勉強をしようとしています
背景が真っ黒で白地にしたいですが、表示(V)を左クリックしても背景を変更する設定が分かりません

c#本を2010年に買って、8年かかってやっとインストールする気になり…当時はvisual studio2010をインストールしてね、でしたが…
2017をインストールしました

307 :デフォルトの名無しさん :2018/01/02(火) 20:12:18.10 ID:lWw7BAnPa.net
>>306
http://www.softantenna.com/wp/tips/visual-studio-2017-install/

ワークロードで.netデスクトップアプリ開発をインストールしてねんじゃね?

308 :デフォルトの名無しさん :2018/01/02(火) 20:33:51.04 ID:c6AfmmkU0.net
スタートボタンからblend for visual studio 2017を起動してました

vのvisual studio2017から起動したら、白背景、Windowsフォームアプリケーション(.net flamework)ボタンがありました

.NET Frameworkは外したいけと、外せないようですね

309 :デフォルトの名無しさん :2018/01/02(火) 21:59:17.87 ID:c6AfmmkU0.net
>>307
307さん、ありがとう
本のサンプルプログラム、1つ動かせました
早く.exe作りたいです
少しずつページを進めます!

310 :デフォルトの名無しさん :2018/01/02(火) 22:06:55.09 ID:NRmrCA2E0.net
楽しみにしているところ申し訳ないが、動かせたのなら既にお前は.exeを作っている

311 :デフォルトの名無しさん :2018/01/02(火) 23:08:41.27 ID:jqAIBNHq0.net
驚愕の事実だな

312 :デフォルトの名無しさん :2018/01/02(火) 23:11:08.00 ID:kv7Tqflpa.net
プロジェクトが作れない

こんなのがFAQなんだからMSはいろいろと見直したほうがいい

313 :デフォルトの名無しさん :2018/01/02(火) 23:37:02.78 ID:T7ovXE0Aa.net
初心者でも落ち着いて考えれば十分解決可能な問題のような気もするんだけどね

314 :デフォルトの名無しさん :2018/01/02(火) 23:42:05.33 ID:jqAIBNHq0.net
鳥には芋虫の考えなんてわからないよ

315 :デフォルトの名無しさん :2018/01/02(火) 23:53:32.38 ID:c6AfmmkU0.net
まったりとした雰囲気ありがとう、皆さん
自分は古く融通が利かないタイプです

フォルダ作ってコンパイラとリンカ放り込み、パスを通してbat作ってコンパイル
エラーが出たら、エラーリストをテキストエディタで読みタグジャンプ、エラー修正…
開発環境はFD1枚で持ち運び

だから今の開発環境インストール50GBに驚愕、ソースバックアップどうするの??開発環境はノーパソごと持ち運びか?とか
visual studio2000いくつかを過去にインストールした時はOSごと落ちてOS再インストールを味わって困惑してました

奮起してゆっくり覚えます

316 :デフォルトの名無しさん :2018/01/03(水) 00:01:56.60 ID:gYcQuPfn0.net
>>315
batでコンパイルならMSBuildはまだ現役だからそうそう焦ることは無いんじゃね
ソースバックアップは今ならオンラインでGit使えば履歴・差分管理も出来て楽だよ

317 :デフォルトの名無しさん :2018/01/03(水) 01:17:17.11 ID:E10k9nmq0.net
テスト

318 :デフォルトの名無しさん :2018/01/03(水) 01:36:11.94 ID:zucBe8Ms0.net
>>315
言うほど何個ものコンピュータで開発するか?
それぞれで環境作ればよくね?
プロジェクトは個人ならOneDriveかグループならGithubとか

319 :デフォルトの名無しさん :2018/01/03(水) 01:38:01.68 ID:E10k9nmq0.net
なんかcmd.exe←全部半角にすると書き込めないね

320 :デフォルトの名無しさん :2018/01/03(水) 01:44:24.84 ID:zucBe8Ms0.net
a.exe

321 :デフォルトの名無しさん :2018/01/03(水) 01:45:06.51 ID:zucBe8Ms0.net
cmd.exe

322 :デフォルトの名無しさん :2018/01/03(水) 01:47:07.02 ID:zucBe8Ms0.net
a.js

323 :デフォルトの名無しさん :2018/01/03(水) 01:48:25.71 ID:zucBe8Ms0.net
script

324 :デフォルトの名無しさん :2018/01/03(水) 01:48:44.83 ID:zucBe8Ms0.net
<>

325 :デフォルトの名無しさん :2018/01/03(水) 01:51:42.79 ID:zucBe8Ms0.net
<script> ←これも書き込めない

326 :デフォルトの名無しさん :2018/01/03(水) 03:03:39.73 ID:BLwnNh6e0.net
ここはテストスレではありません

327 :デフォルトの名無しさん :2018/01/03(水) 21:40:35.60 ID:4IoSL1o20.net
int a=2;
int b=3;
int c=9;
int d=11;
このうち10より小さいもののうちで一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?

328 :デフォルトの名無しさん :2018/01/03(水) 21:49:31.09 ID:asJzHhKy0.net
>>327
var list = new List<int> { a, b, c, d };
var result = list.Where(l => l < 10).Max();

329 :デフォルトの名無しさん :2018/01/03(水) 21:52:22.30 ID:4IoSL1o20.net
ありがとうございます。

330 :デフォルトの名無しさん :2018/01/03(水) 21:55:57.06 ID:zucBe8Ms0.net
var dict = new Dictionary<string, int>(){
{"a", 2},
{"b", 3},
{"c", 9},
{"d", 11}
};

var result = dict.Where(data=>data.Value<10).Max(data=>data.Value).Key;

331 :デフォルトの名無しさん :2018/01/03(水) 22:08:04.88 ID:4IoSL1o20.net
何度もすいません
int a=2;
int b=3;
int c=9;
int d=11;
同じアルファベットに対応したフラグ
bool a_flag=true;
bool b_flag=true;
bool c_flag=true;
bool d_flag=false;
このうちフラグがtrueの中のもので一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?

332 :デフォルトの名無しさん :2018/01/03(水) 22:21:19.29 ID:wQKC+m+qa.net
そういうことをやりたいなら

C#入門を全部終えてからやれ

333 :デフォルトの名無しさん :2018/01/03(水) 22:26:46.45 ID:wQKC+m+qa.net
処理内容を変数の名前に依存するのは悪いやり方

int aがbool a_fragに関連していると決めているのはコードを書いてる人間だけ

プログラム上は関連づけられてない
とんでもない愚かなコード

334 :デフォルトの名無しさん :2018/01/03(水) 22:28:33.33 ID:zucBe8Ms0.net
>>331
https://ideone.com/5Ob6vu

335 :デフォルトの名無しさん :2018/01/03(水) 22:30:30.27 ID:MV/bJa3c0.net
C#でなくパッパラパー向けの言語やればいい
Pなんとかっていう

336 :デフォルトの名無しさん :2018/01/03(水) 22:30:39.56 ID:asJzHhKy0.net
>>334
それだと最大値をもつものが複数あった場合が考慮されていない

337 :デフォルトの名無しさん :2018/01/03(水) 22:33:25.93 ID:zucBe8Ms0.net
>>336
うむ。
一応Valueは重複しないものとして最初に出現したやつを選ぶことにしておいた

338 :デフォルトの名無しさん :2018/01/03(水) 22:39:35.15 ID:zucBe8Ms0.net
最大値を持つアルファベットをすべて出力するVer
https://ideone.com/RfUhMp

339 :デフォルトの名無しさん :2018/01/03(水) 22:43:09.66 ID:4IoSL1o20.net
ありがとうございます
自分のコードにあてはめて書いてみます
また来ます

340 :デフォルトの名無しさん :2018/01/03(水) 22:47:32.12 ID:zucBe8Ms0.net
何故Max関数はリストの要素そのものではなく判別に使った式の値を出力する仕様にしたのか

341 :デフォルトの名無しさん :2018/01/03(水) 22:48:35.18 ID:zucBe8Ms0.net
と思ったけど最大値が複数あるときにそうじゃないと困るからか!初めて気付いた

342 :デフォルトの名無しさん :2018/01/03(水) 22:56:32.16 ID:wQKC+m+qa.net
いやいやそんな理由じゃないぞw
最大値を求める関数から要素返されても困るだろ

343 :デフォルトの名無しさん :2018/01/03(水) 22:59:13.78 ID:zucBe8Ms0.net
>>342
まあそうなんだけどさw
要素自体を抽象的な順序数として考えれば要素が返されてもおかしくないのにって思ってたは w

344 :デフォルトの名無しさん :2018/01/03(水) 23:02:45.49 ID:zucBe8Ms0.net
DateTimeオブジェクトみたいな w

345 :デフォルトの名無しさん :2018/01/03(水) 23:04:14.73 ID:a50vShvf0.net
どれか一個えらぶ関数じゃなくて一応演算の結果を返す関数だからな
SumとかAvgとかと挙動違ったら面倒くさい

346 :デフォルトの名無しさん :2018/01/03(水) 23:07:01.35 ID:wQKC+m+qa.net
そういう問題でもない…

347 :デフォルトの名無しさん :2018/01/03(水) 23:09:47.06 ID:kBuweVPR0.net
>>331
さっきの解を、swichで判定だな。
もしくはdictionary型をつかう。

348 :デフォルトの名無しさん :2018/01/03(水) 23:59:11.68 ID:4IoSL1o20.net
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(true));

trueの数を表示させたいのですがこの場合ラムダ式はどのように書けばいいでしょうか?

349 :デフォルトの名無しさん :2018/01/04(木) 00:05:25.85 ID:7evDO2yEa.net
それは「この場合ラムダ式」が分からないんじゃなくて、そもそもラムダ式がまるで分からないんだと思うw
質問する前にやることがあるんじゃないのかな

350 :デフォルトの名無しさん :2018/01/04(木) 00:08:30.14 ID:dskbzAHG0.net
すいません…
LINQ触るの初めてなもので…

351 :デフォルトの名無しさん :2018/01/04(木) 00:22:00.97 ID:jrk7LVb6a.net
ラムダ式以前にc#がわかってないだろ
コード書くには早すぎる
入門書を読み返せ
回答が出てないなら新しいのを買え

352 :デフォルトの名無しさん :2018/01/04(木) 00:28:30.17 ID:dskbzAHG0.net
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(n => n == true));

とりあえずこれで動きました
nはメソッドの引数みたいなものでなんでも構わないのでしょうか?

var list = new List<bool> { true, false, true, true, true, true };
textBox1.Text = list.Count(n => n == true).ToString();

また上の様にすると動かないのですが、これは何故でしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


353 :デフォルトの名無しさん :2018/01/04(木) 00:36:28.14 ID:uPERGx+M0.net
質問です
わたしはパッパラパーなりにC#を勉強してきて、自分用の初歩的なGUIアプリを作れる程度には覚えれたんですが
Pなんとかのほうが良かったんですか?
それがパッパラパーに向いてる理由をふくめて教えていただけるとありがたいです

354 :デフォルトの名無しさん :2018/01/04(木) 00:42:55.37 ID:T+TxDQDt0.net
>>352
そう、nは引数。

>>352
動かないとは具体的にどうなる?エラーとかでテルル

355 :デフォルトの名無しさん :2018/01/04(木) 00:43:17.15 ID:T+TxDQDt0.net
でテルルじゃなくて出てる?

356 :デフォルトの名無しさん :2018/01/04(木) 00:44:43.18 ID:dskbzAHG0.net
>>354
Tostringの後の;で
型 'System.NullReferenceException' のハンドルされていない例外が LINQtest.exe で発生しました
追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
と出ます

357 :デフォルトの名無しさん :2018/01/04(木) 00:45:23.69 ID:T+TxDQDt0.net
>>353
Pなんとか=Python?
Pythonだと高度な機能が無いから簡単ってことかな?
でもC#で簡単な機能だけ使えばいいのでは...

358 :デフォルトの名無しさん :2018/01/04(木) 00:46:43.86 ID:T+TxDQDt0.net
>>356
うーん...ideoneに全部貼ってうp頼む

359 :デフォルトの名無しさん :2018/01/04(木) 00:49:07.59 ID:dskbzAHG0.net
>>358
https://ideone.com/mDt50q
こちらになります
お手数おかけしますがよろしくお願い致します。

360 :デフォルトの名無しさん :2018/01/04(木) 00:52:04.58 ID:T+TxDQDt0.net
>>359
Form1メソッドはForm1クラスのコンストラクタなんだが、ここじゃなくてform1_Loadの中に書かないといけない。
デザイナーでフォームのウィンドウをダブルクリックすればform1_Loadが作成されるからその中に。

361 :デフォルトの名無しさん :2018/01/04(木) 00:59:42.00 ID:T+TxDQDt0.net
あと、コピぺするときに省略しただけかもしれないけどInitializeComponent();っていう文がForm1メソッドの中に書いてあったはずなんだがそれは必要

362 :デフォルトの名無しさん :2018/01/04(木) 01:01:20.45 ID:dskbzAHG0.net
>>361
出来ました!
有難うございます。
助かりました。

363 :デフォルトの名無しさん :2018/01/04(木) 04:02:02.66 ID:dskbzAHG0.net
>>334
同じ値の時はあらかじめ決められている優先順位を取りたかったのでこのコードが非常に参考になりました
有難う御座います。
優先度が高いものを上にすればいいんですね

var flaggedList = list.Where(data => data.Flag);
これだけよくわからないのですがif(true)とかと同じ様な書き方でtrueのものだけソート出来るんでしょうか?

364 :デフォルトの名無しさん :2018/01/04(木) 05:47:57.28 ID:+aPSEg6K0.net
上は下の省略形で下の括弧内で好きに条件をかけばいい
data => data.Flag
data => {return data.Flag;}
勿論ifも使えるしこんな感じで書きかえることもできる
data =>{
if(data.Flag){
return true;
}
else{
return false;
}}

365 :デフォルトの名無しさん :2018/01/04(木) 14:01:04.73 ID:Pa4sGEBaa.net
>>348
s => s

366 :デフォルトの名無しさん :2018/01/04(木) 14:02:40.76 ID:uPERGx+M0.net
>>357
ありがとうございます

367 :デフォルトの名無しさん :2018/01/04(木) 16:11:37.44 ID:dskbzAHG0.net
レス有難う御座います。
>>334
でFlagが全てfalseだった場合止まってしまうので、mavValueOwnerKeyに空である表示をしたいのですがどうすればいいでしょうか?

368 :デフォルトの名無しさん :2018/01/04(木) 16:14:27.34 ID:dskbzAHG0.net
list.Countで場合分けしてみます

369 :デフォルトの名無しさん :2018/01/04(木) 16:34:11.21 ID:v6C8tRIY0.net
そうだな。
てかmaxがmavになってた

370 :デフォルトの名無しさん :2018/01/05(金) 14:35:10.83 ID:vfHtPi/n0.net
ある文字列に特定の文字列が含まれていれば別の文字列に置換する、という処理を行いたいんですが
だぜ→です
ですわ→です
といった感じの置換したい文字列が数百パターン存在する場合はひとつひとつ置換を試していくしかないのでしょうか…?

371 :デフォルトの名無しさん :2018/01/05(金) 14:37:31.37 ID:1LmylbFqa.net
>>370
Replaceじゃダメなん?

372 :デフォルトの名無しさん :2018/01/05(金) 14:51:45.66 ID:vfHtPi/n0.net
>>371
基本的にはreplaceを使うことになると思うのですが、例えば
'今日はほんといい天気だぁ〜〜〜!!'
という文字列に対して
だぜ→です
だぁ→だ
ほんと→ほんとうに
といった変換ルールが複数ある場合は
ひとつひとつreplaceをかける(あるいはループで変換ルールすべてを試す)しかないのかなぁと思いまして

要するに実行速度が気になっているのです

373 :デフォルトの名無しさん :2018/01/05(金) 14:54:03.66 ID:1LmylbFqa.net
>>372
やってみろよ
問題なければそれでいいじゃん

374 :デフォルトの名無しさん :2018/01/05(金) 14:55:24.40 ID:mKj1Hxz16.net
>>372
そうするのが自然

375 :デフォルトの名無しさん :2018/01/05(金) 14:55:33.45 ID:vfHtPi/n0.net
>>373
それもそうですね
一度試してみます
ありがとうございました

376 :デフォルトの名無しさん :2018/01/05(金) 16:40:20.28 ID:/39Jd9H6a.net
>>372
そこに”今日はほんとうにいい天気だ”を突っ込むとどうなる?

377 :デフォルトの名無しさん :2018/01/05(金) 16:43:17.51 ID:L4TaysN80.net
うにうに

378 :デフォルトの名無しさん :2018/01/05(金) 16:52:08.84 ID:1LmylbFqa.net
変換済みワードは一旦固めてしまわないと駄目かもしれんね

379 :デフォルトの名無しさん :2018/01/05(金) 22:21:11.06 ID:zjfuYfzH0.net
インクリメンタルにトライ木に掛けると1走査でできるよ

380 :デフォルトの名無しさん :2018/01/05(金) 23:01:40.39 ID:FSL+3S710.net
なんぞそれ

381 :デフォルトの名無しさん :2018/01/06(土) 11:25:54.88 ID:A/n+HHYoa.net
switch c

case 'だ':
var n=nextWord();
if(n=='ぜ')
replace("です");
else if(n=='ぁ')

382 :デフォルトの名無しさん :2018/01/06(土) 15:58:34.34 ID:lrwhIMsB0.net
C♯のswitchってC♯6からint以外も扱えるようになってたのか知らなかった

383 :デフォルトの名無しさん :2018/01/06(土) 17:26:53.26 ID:lMgufIkRM.net
2008とかでも使えるけど?

384 :デフォルトの名無しさん :2018/01/08(月) 18:15:27.77 ID:N8MhEzoU0.net
"one"
"two"
"three"
の様な文字列が用意されていて

int keisan(2,"one")
→2*1
int keisan(2,"one","two")
→2*(1+2)
int keisan(2,"one","two","three")
→2*(1+2+3)
int keisan(2,"one","three")
→2*(1+3)
の様な結果を返すメソッドを作りたいのですが
引数の数が決まっていないメソッドを作るにはどうすればいいのでしょうか?

385 :デフォルトの名無しさん :2018/01/08(月) 18:17:47.15 ID:vvKSl3ZPM.net
params

386 :デフォルトの名無しさん :2018/01/08(月) 18:21:03.05 ID:oFrueEmX0.net
>>384
string[ ] args

387 :デフォルトの名無しさん :2018/01/08(月) 18:28:46.09 ID:6LQHZKeL0.net
シグネチャは int keisan(int x, params string[] xs) になるかな

388 :デフォルトの名無しさん :2018/01/08(月) 18:43:03.94 ID:5t6jHGkha.net
たぶんずっと同じ人だと思うけど、こういう人には質問するより前に
まず自分で一通り勉強したらって言ってあげるのが優しさだと俺は思うけどなあw

389 :デフォルトの名無しさん :2018/01/08(月) 18:44:35.51 ID:LRSoqKZx0.net
俺はそうは思わんわ
これも一種の勉強やろ

390 :デフォルトの名無しさん :2018/01/08(月) 19:00:26.28 ID:Jvqg6B4Y0.net
質問するより前にまず自分で一通り勉強した結果がお前らなのだから
俺は自分で勉強するより前に質問する方を選ぶよ

391 :デフォルトの名無しさん :2018/01/08(月) 19:29:32.05 ID:7hYpzMEE0.net
>>388
ここ質問スレだから

392 :デフォルトの名無しさん :2018/01/08(月) 19:38:26.81 ID:uSMEFASC0.net
これあれじゃん
printfっぽいやつじゃん

393 :デフォルトの名無しさん :2018/01/08(月) 19:42:36.36 ID:uSMEFASC0.net
c++のときの記憶だったw

394 :デフォルトの名無しさん :2018/01/08(月) 19:48:50.27 ID:YqcrQaEG0.net
例えばこんな感じのことがしたいのか
2の部分や演算順序が固定で気持ち悪い感じするが、簡易パーサーか何かかな
https://ideone.com/b4A3Hl

395 :デフォルトの名無しさん :2018/01/08(月) 21:05:58.44 ID:JPcKKnXVa.net
いや
同じ人なら
どうせまた変な事がしたいだけ

396 :デフォルトの名無しさん :2018/01/08(月) 21:33:14.77 ID:xV7in+AG0.net
自閉症かなんかっぽいよね

397 :デフォルトの名無しさん :2018/01/08(月) 21:40:08.24 ID:zg3P5Xfz0.net
勉強というよりもこの程度の内容をググれないのが心配だ
"引数の数が決まっていないメソッド"って感じの適当な検索でもかなりヒットするのに

398 :デフォルトの名無しさん :2018/01/08(月) 21:40:13.41 ID:bJftSVCJ0.net
おかげでスレの話題が新鮮に保たれてる

399 :デフォルトの名無しさん :2018/01/08(月) 21:45:51.25 ID:O8jIltI+0.net
ここは
>「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
て、ことだからねえ。
>>1 が気にいらないなら自分で自分の主義にあるスレを立ち上げればいいだけ。

検索するにも適切なキーワードを思いつけなくて1日悩み続けた挙げ句に、聞いたら一瞬で終わるなんて事もあるし。
今回のは簡単な方だったみたいだけど。

400 : :2018/01/08(月) 21:55:49.50 ID:F+Qn6y7R0.net
>>399
「VS2017 のプロジェクト(P)→プロパティ(E)のスタートアップオブジェクト(O) に相当する
eclipse や intelliJ のメニューってなんですか」
と、今も探しているが、そもそも適切なキーワードが思いつかない

自分の話ですまん‥

401 :デフォルトの名無しさん :2018/01/08(月) 22:07:40.25 ID:fM4iC4afa.net
(1) 勉強して理解できなかった疑問点や調べても解決しなかったことを質問する
のと

(2) 面倒くさいからとにかくお前ら手取り足取り教えてくれ

では全然違うと思うよw

誰でも変な思い込みや勘違いをすることがあるから、(1)であるならくだらない質問でも問題ないと思う。
でも(2)は見ててあんまり気分がよくないなと思う人もいると思うけどね。

っていうかそういう道徳的話はともかく、それって学習効率悪いよね絶対。
優しさ云々はそういう意味

402 :デフォルトの名無しさん :2018/01/08(月) 22:11:51.21 ID:4Iuopxo1M.net
くだらない調査に時間かけるより聞いた方が良い
答える方もグダグダ言わずに知ってることを教えてやれ
そういうネットワークができれば社会全体の生産性が上がるんだよ
日本にはなくて外国には当たり前のようにあるシステムだ
日本人は性格が排他的すぎるからITに向いてない
だから負けるんだ

403 :デフォルトの名無しさん :2018/01/08(月) 22:29:20.81 ID:N8MhEzoU0.net
>>385
>>386
>>387
有難う御座います。
後でやってみます。

入門書は一冊終わらせてはいるのですが作りたいものを作ろうとした時、その本に載っていないことの方が多くて…
ここのスレの方々のおかげで今作っているプログラムもだいぶ形になってきました
非常に助かっています
可変長引数についても一応事前に調べて存在は知っていましたが説明を読んでもいまいちわからなく
もっと簡単な方法があるかも…と思って聞いてみました
でもやっぱりparamsと答えられたのでそれがベストなんだなと知ることが出来て
説明をもう一度読み直したらなんとか理解出来ました

404 :デフォルトの名無しさん :2018/01/08(月) 22:32:02.44 ID:N8MhEzoU0.net
>>394
ありがとうございます。
参考にします。

405 :デフォルトの名無しさん :2018/01/08(月) 22:34:04.87 ID:7hYpzMEE0.net
くだらん質問だと思うならスルーするなり他のスレに行けよ
ここは

> 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

だよ

406 :デフォルトの名無しさん :2018/01/08(月) 22:40:28.65 ID:N8MhEzoU0.net
ちなみにこういう書き方はできるのでしょうか?
int keisan(params string[] xs,int x)

int keisan("one","two","three",2)

407 :デフォルトの名無しさん :2018/01/08(月) 22:44:04.38 ID:LRSoqKZx0.net
無理です
ちょっと考えればそれができたら困ったことになるのは分かるはず

408 :デフォルトの名無しさん :2018/01/08(月) 22:45:14.32 ID:zg3P5Xfz0.net
>>406
paramsは最後のみ
エラーでるから試してみるといい

>>405
スルーも何も質問は2分後に解決してる
その後はこういったプログラミング初心者対して別アプローチをした方がって話で質問とは関係ないと思うんだが

409 :デフォルトの名無しさん :2018/01/08(月) 22:51:04.77 ID:Jvqg6B4Y0.net
>>407、408
よう初心者クン
で何を教えて欲しいのかね?

410 :デフォルトの名無しさん :2018/01/08(月) 23:37:32.94 ID:evPy5QQs0.net
>>407
最後にint型が来るって指定なんだから別に困らない
パターンマッチではよくあるでしょ

411 :デフォルトの名無しさん :2018/01/09(火) 00:41:16.91 ID:5Fj63PJf0.net
>>410
この場合は困らんけど一般的には困るだろ
こんな文法が許されてたら。

412 :デフォルトの名無しさん :2018/01/09(火) 03:29:04.52 ID:V7ZjzcjU0.net
>>411
デフォルト引数の順番の制限もなくなったことを考えてみ?

413 :デフォルトの名無しさん :2018/01/09(火) 04:57:15.02 ID:/Jm0Q1+w0.net
>>408
> 質問とは関係ないと思うんだが
スレ違いだとは思わないのか?

414 :デフォルトの名無しさん :2018/01/09(火) 05:02:51.20 ID:A/ESCl++0.net
可変長は一種類だけで、最後に定義しないといけないみたいですね
無事に機能を実装できました。
質問に答えて下さった方有難う御座いました。

415 :デフォルトの名無しさん :2018/01/09(火) 08:16:40.42 ID:5Fj63PJf0.net
>>412
おまえに言われなくてもそんなこと考えてるし
そのパターンは非現実的だって分かるだろ

416 :デフォルトの名無しさん :2018/01/09(火) 08:29:24.71 ID:yV0bRmzSd.net
>>415
なぜ?

417 :デフォルトの名無しさん :2018/01/09(火) 08:58:27.18 ID:jhkCquMi6.net
>>416
hoge(arg=1, args=2, arcs=3, n=2)

argsの配列感がない上に1,2,3っていう順番付けが曖昧

hoge((arg=1, 2, 3,) n=2)

こんな文法を作ったとしても、もう配列で良いよねってなる

説明させんなよメンドくせえな

418 :デフォルトの名無しさん :2018/01/09(火) 12:19:24.01 ID:EqlP/XAyr.net
なぜ>>417はこの程度の理解で答えたがるのか?
他人事と思わず皆考えてみよう

419 :デフォルトの名無しさん :2018/01/09(火) 12:47:31.69 ID:p+9rZZ3s6.net
具体的に指摘できないなら喋んな

420 :デフォルトの名無しさん :2018/01/09(火) 12:48:02.08 ID:xZogmC5hM.net
>>419
同意する

421 :デフォルトの名無しさん :2018/01/09(火) 12:48:04.59 ID:tXr0nFdK0.net
rubyも昔は可変長引数は最後の仕様だったけど、今は途中でも大丈夫になってる
結局は作ってる人のやる気次第だな

422 :デフォルトの名無しさん :2018/01/09(火) 12:59:33.58 ID:jhkCquMi6.net
>>421
無理矢理でもやってるやつもあんだな。

ま、>>407
「ちょっと考えれば分かるだろ質問すんな」じゃなくて、
『は?なんで可変長だけ順番変えねえの?キモッ。』って思われるかもしれないから、納得できるように付け加えただけな。

423 :デフォルトの名無しさん :2018/01/09(火) 17:14:14.89 ID:GTddlW8V0.net
rubyってオーバーロード出来るの?

424 :デフォルトの名無しさん :2018/01/09(火) 18:29:21.69 ID:TMj71yN00.net
async/awaitを使った際の実行の流れの図があったら誰か見せてくれんかな

425 :デフォルトの名無しさん :2018/01/09(火) 18:34:44.72 ID:KiSnx3XP0.net
>>424
https://www.google.co.jp/search?q=c%23+async+await+sequence&tbm=isch

426 :デフォルトの名無しさん:2018/01/09(火) 18:38:13.58 .net
awaitのコードがコンパイラでどう変形させられるかの記事見たほうが分かりやすい
http://tech.blog.aerie.jp/entry/2015/08/29/022932

427 :デフォルトの名無しさん :2018/01/09(火) 18:57:43.08 ID:TMj71yN00.net
ありがとうございます
図はよくわからなかった点も多いので、ゆっくり記事を読んできます

428 :デフォルトの名無しさん :2018/01/09(火) 21:30:26.03 ID:ENZhQsZea.net
>>424
@ITの記事にはシーケンス図っぽいのが載ってるよ
http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_02/masterasync_02_01.html

429 :デフォルトの名無しさん :2018/01/10(水) 01:25:16.09 ID:rjHbKDY9a.net
>>428
こう言う間違った図が人を惑わせる

430 :デフォルトの名無しさん :2018/01/10(水) 01:27:32.14 ID:rjHbKDY9a.net
よくみたら間違った図ではないが
使う上でなんの説明にもなってない図に訂正

この図だけをみると初心者がハマる

431 :デフォルトの名無しさん :2018/01/10(水) 01:37:54.23 ID:9VtjyWrsa.net
↑の人はたぶんコードと図で1セットになってることに気付かずに
図だけ見てそう言ってるか、あるいはなんか思いっきり勘違いしてるだけだと思うから
安心して参考にしていいと思うw

432 :デフォルトの名無しさん :2018/01/10(水) 01:50:58.29 ID:rjHbKDY9a.net
説明するのが非常に難しいんだけど

async/awaitの挙動をまともに書いてる記事が少ない
有名人でも間違った解説をしてる

433 :デフォルトの名無しさん :2018/01/10(水) 01:55:51.66 ID:rjHbKDY9a.net
>「メソッドを一時中断し、awaitされた処理の完了を待って残りの処理を再開する」
非常にグレーな表現

>@に続けてAの処理が別スレッド上で開始される
非常にグレーな表現

HevyWork()の中身が必ずすべて別スレッド上で行われてるわけではない

434 :デフォルトの名無しさん :2018/01/10(水) 01:58:10.55 ID:av8HDoY10.net
正しい図を描いてアップしてもらえませんか

435 :デフォルトの名無しさん :2018/01/10(水) 01:59:38.89 ID:rjHbKDY9a.net
出来たら苦労しない

場合訳が複雑なので
非常にめんどくさい

436 :デフォルトの名無しさん :2018/01/10(水) 02:01:30.99 ID:9VtjyWrsa.net
言っちゃ悪いけど、これも立派な2ch脳だね
羊たちの沈黙にあった台詞だけど、その批判的精神を自分自身に向けるだけの理性はないのかw

437 :デフォルトの名無しさん :2018/01/10(水) 02:02:34.65 ID:9VtjyWrsa.net
>>434
いや、>>428の記事は十分わかりやすいし間違ってもいないから安心していいよw

438 :デフォルトの名無しさん :2018/01/10(水) 02:03:23.76 ID:rjHbKDY9a.net
それぞれがそれぞれの心の中でお前が言うなと思う

上にあった図を参考にしてるといつか全然思った通りに動かなくなり?マークになる

439 :デフォルトの名無しさん :2018/01/10(水) 05:30:31.38 ID:t7WvUySz0.net
UnityってC#どのくらい使えると触れるの?

440 :デフォルトの名無しさん :2018/01/10(水) 07:12:09.78 ID:8FRtzSYP0.net
初めてのJavaScript 第3版、オライリー、2017

JS には、async/await が無いから、
この本では、generator runner の仕組みを説明している。
co, Koa というライブラリを使う

非同期処理は異なるコンテキストで、
別のスレッド・プロセスだから、どこを実行しているのか分からない。
実行順番も制御できないし、例外処理も使えない

generator runner は非同期処理を、yield で待つように作る。
これにより、非同期処理を同期処理のコンテキストに当てはめるから、
実行順番を制御できるし、例外処理も使える

try{
yield promise 非同期処理
} catch {
}

441 :440 :2018/01/10(水) 07:52:38.82 ID:8FRtzSYP0.net
異なるコンテキストとは、同じソースコードに書いていても、
OS から見ると、別のプロセス・スレッド・実行単位になる

OS は、1秒間に数万回も、実行単位を切り替える(コンテキストスイッチ)から、
今、別の実行単位の、どのコードが実行されているかは、全く分からないし、制御もできない

別の実行単位に対してできることは、
タスクの終了を待つか、タイムアウトするか、タスクを止めてもらうかだけ

442 :デフォルトの名無しさん :2018/01/10(水) 07:54:58.52 ID:dKgg5RtTd.net
>>440
>JSには、async/awaitが無い
何言ってんの?

443 :デフォルトの名無しさん :2018/01/10(水) 08:02:12.05 ID:hRyz+G9b0.net
句読点君のレスを判定するアルゴリズムを作ろう
機械学習の勉強によさそう

444 :デフォルトの名無しさん :2018/01/10(水) 08:27:22.17 ID:fLUpXSTQ0.net
>co, Koa というライブラリを使う

あぁ、このアホか。C#スレまで出張ってきてうざいな。

445 :デフォルトの名無しさん :2018/01/10(水) 10:57:56.79 ID:zuSWugfya.net
話の流れが見えない
非同期処理的

446 :デフォルトの名無しさん :2018/01/10(水) 15:47:45.43 ID:0NEBj+IAa.net
C#始めて1カ月程度の初心者です

trackbarの値をBackgroundWorkerに渡して、その値を使って別スレッドで画像を生成して、whileとReportProgressでtrackbarの変更に合わせて画像を表示していくプログラムを作っているんですが、

trackbarの値をBackgroundWorker_DoWorkに渡すのってどうやるんですか?

別スレッドなので、trackbar.Valueでそのまま使う事ができなくて…
デバッグ無しの実行ならよく分からないですが、そのまま使っても実行できて上手く画像表示されている事が確認できたので、
スレッド間でtrackbarの値を渡すのだけが上手くいかなくて悩んでます

447 :デフォルトの名無しさん:2018/01/10(水) 15:54:42.58 .net
トラックバーの値変更イベントのイベントハンドラでフォームのフィールドにトラックバーの値を保持しておく
それをバックグラウンドワーカーで読み取る

448 :デフォルトの名無しさん :2018/01/10(水) 16:15:46.81 ID:+iIpBJgq6.net
>>447
それって両スレッド共通の変数を作っておいてトラックバーが動いた時のイベントハンドラでその変数に値を保存していくって事ですよね?
それも試したんですが、よくわからないエラーが発生して動作が止まってしまいました

449 :デフォルトの名無しさん:2018/01/10(水) 16:16:37.99 .net
それか、Invokeでアクセスする



// コントロールが破棄されてないかチェック
if (trackbar.IsDisposed)
return;


var value = 0;

// Invokeが必要かチェック
if(trackbar.InvokeRequired) {
Invoke((MethodInvoker)(() => {
value = trackbar.Value;
}));
} else {
value = trackbar.Value;
}

450 :デフォルトの名無しさん:2018/01/10(水) 16:19:33.71 .net
>>448
じゃあ、値変更イベントハンドラ内でトラックバーの値をフィールドに設定するところと、バックグラウンドワーカーでそのフィールドから値を読み出すところを、lock{...}で囲む

451 :デフォルトの名無しさん :2018/01/10(水) 16:24:33.20 ID:yZjeHBZDM.net
その処理は別スレッドでないと出来ないのか?
という身もフタもない突っ込み

452 :デフォルトの名無しさん:2018/01/10(水) 16:33:02.39 .net
lock (トラックバーの値を保持してる変数) { ... } のミスでした

453 :デフォルトの名無しさん :2018/01/10(水) 16:33:27.10 ID:+iIpBJgq6.net
>>450
ちょっと用事ができたので今は試せませんが、両方試してみます

>>451
割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついてしまったので、分離したいんです

454 :デフォルトの名無しさん:2018/01/10(水) 16:35:01.84 .net
>>453
async/awaitでいいのでは?

455 :デフォルトの名無しさん :2018/01/10(水) 17:01:05.31 ID:+iIpBJgq6.net
>>454
課題でバックグラウンドワーカー指定されてたので、
それ初めて聞いたんですが、同じような事が出来るんですか?

456 :デフォルトの名無しさん :2018/01/10(水) 17:06:36.89 ID:5BQfLz2R0.net
>>455
BackgroundWorkerは、標準機能で専用のeventargを使ってオブジェクトを一つ引き渡せたはずだが
マニュアルしっかり見たほうが良いよ

457 :デフォルトの名無しさん :2018/01/10(水) 17:17:37.84 ID:+iIpBJgq6.net
>>456
それってバックグランドワーカーを開始する時に値を渡す事ですか?
WhileとReportProgressで画像表示していて、バックグランドワーカーは止まらないので開始時の値を引き渡すのだけでは、トラックバーの値変更に対応できなさそうですが、できるんですか?
的外れな事言ってたらすみません。
まだ学び始めたばかりでわからない事だらけなので

ちなみに画像生成に使うトラックバーは7本あります

458 :デフォルトの名無しさん:2018/01/10(水) 17:18:24.71 .net
>>455
async/awaitならイベントハンドラの中に1行で非同期処理書ける
課題なら仕方ない

459 :デフォルトの名無しさん :2018/01/10(水) 17:42:20.90 ID:8CBJwk4h0.net
>>448
処理イベントを多重呼び出ししていない?
busyのときは呼ばないように
>>446
>whileとReportProgressでtrackbarの変更に合わせて
ReportProgressでは元のスレッドのコントロールにアクセスできるからこの意味がいまいちわからないが
とりあえず
・BackgroundWorker_DoWorkに渡す
https://dobon.net/vb/dotnet/programing/displayprogress.html#backgroundworker
呼び出す側
int value=trackbar.Value;
BackgroundWorker1.RunWorkerAsync(value);
Do_Work側
int value=(int)e.Argument;
>>453
>割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついて
かくつかない程度に仮処理用の縮小画像を作る
>>457
>トラックバーの値変更に対応できなさそうですが
リアルタイムに反映は理屈から言うと無理
処理量が少なければそう見えるようにも作れるから画像が大きければトラックバー動作中は縮小画像で

460 :デフォルトの名無しさん :2018/01/10(水) 17:43:56.21 ID:ZlAR0fHNa.net
>>455
>>446と同一人物?

仕様の詳細が分からんので断定はできないけど、
断片的な情報から判断すると

(1) 無限ループでTrackbar.Valueをポーリングして

(2) 変化を検出したら画像生成を開始

(3) 完了したらBackgroundWorkder.ReportProgressを呼んで
UIスレッドで画像を表示

こういうこと?
もしこうなら、スレッドで無限ループ回すって発想がたぶん間違ってる。

諸事情でBackgroundWorkderを使う必要があるにしても
Trackbar.ValueCangedイベントでBackgroundWorker.RunWorkerAsyncを
呼んで都度画像生成処理を開始するようにした方がいいんじゃないの?

それならTrackbar.ValueはRunWorkerAsyncの引数で渡せる

461 :デフォルトの名無しさん :2018/01/10(水) 17:51:28.39 ID:8CBJwk4h0.net
>>460
ブラウザ部分同じだから同一人物で間違いない
>>457
次からレス番でコテハン付けて
一応捕捉でRunWorkerAsyncの引数はobjectなので
https://msdn.microsoft.com/ja-jp/library/f00zz5b2(v=vs.110).aspx
受ける側でキャストしたらListでも配列でも使える

462 :デフォルトの名無しさん :2018/01/10(水) 17:54:40.44 ID:ZlAR0fHNa.net
ただこの場合でも、ValueCangedはたぶんユーザーがつまみを動かかしている間は
逐次的にイベントが発生しちゃうと思うから、BackgroundWorker.RunWorkerAsyncを
コールするのは、例えばValueCangedが発生しなくなってから1秒後、みたいな工夫がたぶん必要になるのかな

知らんけど

463 :デフォルトの名無しさん:2018/01/10(水) 18:00:54.81 .net
>>459
起動時にRunTaskWorkerを呼び出す。

doWorkでは無限ループでトラックバーの値の変更を監視

こういうことだと思う。
知らんけど。

464 :デフォルトの名無しさん :2018/01/11(木) 01:51:14.39 ID:fK8uCW920.net
public void testA()
{
bool error=false;

error=true;
if (error == true) { return; }

textBox1.Text = "ok";
}

error=true;
if (error == true) { return; } をまとめてメソッドtestBにするにはどうすればいいでしょうか
testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
textBox1.Text = "ok";を実行しない
というプログラムを作りたいのですが

465 :デフォルトの名無しさん:2018/01/11(木) 02:26:04.02 .net
これじゃダメ?
―――――――――
...
var error = testB();
if(error) return;
...
―――――――――
public bool testB(){
var error=false;
error=true;
if(error) return true;
retrun false;
}
―――――――――

466 :デフォルトの名無しさん :2018/01/11(木) 02:53:49.75 ID:fK8uCW920.net
>>465
やはりtestBメソッドの後で判定するしかないですよね。
ありがとうございます。

467 :デフォルトの名無しさん :2018/01/11(木) 04:20:02.74 ID:9ePH9NvT0.net
Janeでいう画像のようなフォームを作りたいのですが、
フォームにはどのようなコントロールを配置しているのでしょうか?
列名にはButton、一覧はListBoxのように見えます。

https://imgur.com/a/mOqw6

468 :デフォルトの名無しさん :2018/01/11(木) 07:57:27.54 ID:W1ryMExAM.net
>>464
> testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
> textBox1.Text = "ok";を実行しない
例外で一気に抜ければいいだろ

469 :デフォルトの名無しさん:2018/01/11(木) 09:55:11.66 .net
>>467
ListBoxのViewプロパティをDetailsにしたやつと同じ
上のボタンはColumnsプロパティで編集できる

470 :デフォルトの名無しさん:2018/01/11(木) 09:58:05.61 .net
あと、多分FullRowSelectプロパティをオンにしないと行をクリックしたときに一列分しか色が付かない

471 :デフォルトの名無しさん:2018/01/11(木) 11:50:13.87 .net
ListBoxじゃなくてListViewだったわ

472 :デフォルトの名無しさん :2018/01/11(木) 18:47:50.43 ID:9ePH9NvT0.net
>>469,>>470
ありがとうございます
1つのコントロールで実現できるのですね
作るときにFullRowSelectも意識してみます

473 :デフォルトの名無しさん :2018/01/12(金) 02:16:04.35 ID:gpUPMxg50.net
今ってC#なら何でもできる時代か?webページもゲームもWindowsアプリもandroidも

474 :デフォルトの名無しさん :2018/01/12(金) 08:59:21.85 ID:uVEH64eZ0.net
初めて目にしたものに万能感を感じてるだけ、刷り込みという

475 :デフォルトの名無しさん :2018/01/12(金) 09:11:32.29 ID:2hN5vnhI0.net
でもここまで全部作れる時代ってないんじゃん?
全部c言語の時代以来だな

476 :デフォルトの名無しさん:2018/01/12(金) 09:13:00.90 .net
さすが大企業

477 :デフォルトの名無しさん :2018/01/12(金) 09:23:53.14 ID:4yLgM4ukM.net
アプリ開発言語としてはWebのフロントエンドを除けばほぼ何でもできるので
目下最も万能な言語であることには違いないが、道具を前提にして物事を考える癖がつくと頭悪くなるから一つに拘るのはお勧めしないな

478 :デフォルトの名無しさん:2018/01/12(金) 09:27:14.08 .net
>道具を前提にして物事を考える
解説頼む

479 :デフォルトの名無しさん :2018/01/12(金) 09:28:54.75 ID:4fjc3EU00.net
金のハンマーか
ハンターチャンス

480 :デフォルトの名無しさん :2018/01/12(金) 09:48:35.89 ID:2hN5vnhI0.net
まあ、なんでもいいしね
msにはsilverlightに騙されたのでこの辺の信用は薄い

481 :デフォルトの名無しさん :2018/01/12(金) 09:54:47.82 ID:1+438Ej9M.net
>>477
WebのフロントエンドはhtmlとJavaScriptという道具を前提とするしか無いが。

482 :デフォルトの名無しさん :2018/01/12(金) 09:58:40.77 ID:1+438Ej9M.net
>>480
騙されたと言うかJavaScriptの進化が速くてJavaアプレットもオワコン

483 :デフォルトの名無しさん :2018/01/12(金) 12:31:07.50 ID:nUBs6Y0Hp.net
なんかWeb系の人多いね
Webとは一切関わらずに来たから
色々と世界の違いを感じるわ

484 :デフォルトの名無しさん :2018/01/12(金) 12:34:17.17 ID:OH7R1+qFd.net
でぇじょうぶだ。wasmがくる。

485 :デフォルトの名無しさん :2018/01/12(金) 12:55:06.39 ID:sc59V6rza.net
直接の原因はセキュリティ対策を名目にしたプラグイン排除の動きでしょ

486 :デフォルトの名無しさん :2018/01/12(金) 14:37:46.31 ID:2hN5vnhI0.net
>>483
そっちはついで
サーバー側がメインに決まってんじゃん
片手間で意外と時間がかかるのがムカつく
画面なんかデザインと相談しろよ

487 :デフォルトの名無しさん :2018/01/12(金) 14:42:53.15 ID:VxcDYdZu0.net
職につくために限定的な開発だけじゃあ厳しいなってC#なら何でも作れるようにならないとなって思って

488 :デフォルトの名無しさん:2018/01/12(金) 14:44:49.67 .net
使う言語はおまえが決められないけどな

489 :デフォルトの名無しさん :2018/01/12(金) 14:44:55.45 ID:2hN5vnhI0.net
>>487
逆引き辞典でも買っとけ
〜できる?って聞かれたときいいぞ

490 :デフォルトの名無しさん :2018/01/12(金) 16:00:59.66 ID:C/maxB41p.net
スタブってのがほんとに分からん…
どんな知識が必要でどんな風に使うのかイメージ出来ん
DAO?とかの概念が自分になくてSQLを扱う部分とロジックがごっちゃになってるとそもそもスタブでなんとかしようってレベルですらないのかな
なにか猿でも分かるような記事とかないですか…

491 :デフォルトの名無しさん :2018/01/12(金) 16:11:30.81 ID:mLvyYLexM.net
>>490
スタブってテスト用のダミーの事?

492 :デフォルトの名無しさん :2018/01/12(金) 18:24:00.26 ID:C2fpfp9ga.net
>>490
スタブはテストのためのダミーだよ

完成まで一時的にいれておいてビルド通したり
テストで実際の環境に影響をおよぼさないために使う

テストしない
完成まで途中で実行しない
ならいらない

493 :デフォルトの名無しさん :2018/01/12(金) 18:39:16.58 ID:2hN5vnhI0.net
酢豚

494 :デフォルトの名無しさん :2018/01/12(金) 19:18:31.62 ID:Oe9MQ/U/0.net
裸の豚がいる、素豚

495 :デフォルトの名無しさん :2018/01/12(金) 19:54:46.80 ID:Q+CtiLx/0.net
>>494
それは地雷踏んでるし素マ○だし。

496 :デフォルトの名無しさん :2018/01/12(金) 20:48:40.23 ID:sVH4h8AJ0.net
ここ雑談所とかロビーじゃないんで
リンクテンプレにあるんだからワッチョイの無い相談室でやればいいのに

497 :デフォルトの名無しさん :2018/01/12(金) 20:54:57.06 ID:Oe9MQ/U/0.net
>>495
http://nicogame.info/watch/sm4260808
所さんのスブタ

498 :デフォルトの名無しさん :2018/01/13(土) 01:59:49.10 ID:zim/eiwV0.net
sqlserverからレコード取得する処理で、dataReaderを別関数に渡して、
そっちでdataReader.Iten("hogehoge")するのってありですか?

一部のカラム名だけが異なる類似レコードの取得処理をまとめたいなあと

499 :デフォルトの名無しさん :2018/01/13(土) 08:43:16.67 ID:YXV8ZXe20.net
>>498
それ自体は特に問題はないけど、可能ならDapperとか使った方がいい

500 :デフォルトの名無しさん :2018/01/13(土) 08:44:56.00 ID:GojsaP7Y0.net
>>498
その手の仕事なら、拡張メソッドで書くとスッキリ書けるよ

501 :デフォルトの名無しさん :2018/01/13(土) 10:33:11.79 ID:8qhapkmN0.net
>>498
Itenがなにかはわからんけど、dataReader を渡すのはありでしょ

502 :デフォルトの名無しさん :2018/01/13(土) 11:39:34.05 ID:bohsitgJ0.net
Itemなんだろうなぁとは思ったよ

503 :デフォルトの名無しさん :2018/01/13(土) 15:48:07.46 ID:J9QLRP4o0.net
ItemItemって考えてるとあいてむってなんだっけ?ってなるよね

504 :デフォルトの名無しさん :2018/01/13(土) 16:27:23.47 ID:bohsitgJ0.net
普通省略するからな

505 :デフォルトの名無しさん :2018/01/13(土) 17:00:38.69 ID:jdkhpG2m0.net
データが大量の場合は予めカラム名から序数取得しておいて、序数指定にするんだっけか
今はDapperばかりだから忘れたわ

506 :デフォルトの名無しさん :2018/01/13(土) 17:42:17.67 ID:GYwe1Ej/0.net
ダッパーってなあに?

507 :デフォルトの名無しさん :2018/01/13(土) 17:43:12.24 ID:LGXgKIg90.net
結局、DB扱わせたらCOBOL最強という結論か。

508 :デフォルトの名無しさん :2018/01/13(土) 18:22:41.37 ID:2EuaVelH0.net
一時期ORMが流行ったがメモリ食いすぎと重すぎて今じゃBI以外で使う機会がない
軽量wrapperを挟んでクエリ直書きの負担を軽減するというのが最近のスタイル
有名なのはDapper、Massive、PetaPocoとか

509 : :2018/01/13(土) 19:33:09.67 ID:9/EYlaQy0.net
>>508
Micro-ORM ですか、Java にはあまりなさそうですね
BI ってなんの略ですか?

510 :デフォルトの名無しさん :2018/01/13(土) 22:23:31.56 ID:zim/eiwV0.net
498だす
いろいろありがとう
Dapperって知らなかったので調べてみます

511 :デフォルトの名無しさん :2018/01/14(日) 11:58:36.30 ID:6wMaD5Pe0.net
質問させてください
まず、やりたいことは以下です
@c#からネイティブライブラリの関数を呼び出す
A引数としてマネージ側で実装した関数を渡し、ライブラリ側でその関数を呼び返す

Aでマネージ関数と一緒にマネージドオブジェクトを渡したいのですが、そのオブジェクトをGC対象から除外する方法が分かりません
GCHandle.Alloc では blittable なオブジェクトでないとダメだと怒られます
List<int> とかを渡したいのですが…… どうしたらいいでしょうか?

512 :デフォルトの名無しさん :2018/01/14(日) 12:44:23.20 ID:DNkTPWoH0.net
>>511
普通にデリゲートをマーシャリングして渡す
呼び出す先が同期的な関数ならGCは考慮不要
非同期的にコールバックしてくるならデリゲートをフィールドに入れておいてGCを防ぐ
デリゲートのマーシャリングは非常に優秀で、メソッド内から外のローカル変数を参照してたりインスタンスフィールドを参照してたりしても問題ない
だからList<int>とかをわざわざ渡す必要はない

513 :512 :2018/01/14(日) 12:45:29.88 ID:DNkTPWoH0.net
補足
メソッドから参照されてるオブジェクトはデリゲートが生きてる限りはGCされないので、
GC対策としてはデリゲートだけフィールドで保持しとけば十分

514 :511 :2018/01/14(日) 13:56:18.92 ID:6wMaD5Pe0.net
>>512
ありがとうございます!
解決しました。変数をキャプチャしてるラムダ式でもOKなんですね
これって実行時にコードを生成してるんでしょうか?

515 :デフォルトの名無しさん :2018/01/15(月) 08:04:36.45 ID:wzT+kwGj0.net
visualstudio2015でifの条件式の部分が
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
b>1&&
c>1&&
d>1)
ときれいに揃える方法はないでしょうか?
ctrl+k,ctrl+dではこの部分だけきれいにならず困っています

516 :デフォルトの名無しさん :2018/01/15(月) 08:05:35.73 ID:wzT+kwGj0.net
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

517 :デフォルトの名無しさん :2018/01/15(月) 08:06:30.11 ID:rRRRUjz40.net
>>514
ない
そんな非生産的なコーディング規約は今すぐ撤廃しなさい

518 :デフォルトの名無しさん :2018/01/15(月) 08:34:59.05 ID:wzT+kwGj0.net
条件式がたくさんある場合はどうすれば見やすく書けるのでしょう…
横に伸びると見にくくて

519 :デフォルトの名無しさん :2018/01/15(月) 08:44:15.19 ID:6fJ2ahWY0.net
自分にあったフォーマッタを
自分で開発すればいいんじゃないの?
出来合いで我慢できないならそれしかないでしょ
幸いにもあなたはプログラマーだ
頑張れ

520 :デフォルトの名無しさん :2018/01/15(月) 09:00:59.11 ID:vPE1QZCU0.net
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

521 :デフォルトの名無しさん :2018/01/15(月) 09:02:06.54 ID:vPE1QZCU0.net
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

522 :デフォルトの名無しさん :2018/01/15(月) 09:28:26.41 ID:dZYU88oU0.net
>>515
その前に書くなら
if(a>1
&&b>1
&&c>1
&&d>1)
って揃えるべきじゃね?
そういう視点で見るとどうよ?

523 :デフォルトの名無しさん :2018/01/15(月) 09:34:40.52 ID:wzT+kwGj0.net
522

それでもいいんですが
____if(a>1
&&b>1
&&c>1
____&&d>1)
貼り付け繰り返してるうちにこうなっちゃったりしてるんですよね

524 :デフォルトの名無しさん :2018/01/15(月) 09:37:21.51 ID:MBkuLX1yd.net
俺だったらIsXXXみたいなboolを返すメソッドに分けちゃう。

525 :デフォルトの名無しさん :2018/01/15(月) 10:03:58.56 ID:E8Ly8wa60.net
おれは諦めた。もう好きにフォーマットしてくれたまえ

526 :デフォルトの名無しさん :2018/01/15(月) 14:27:32.00 ID:wzT+kwGj0.net
すっぱい葡萄
手に入れたくてたまらないのに、人・物・地位・階級など、努力しても手が届かない対象がある場合、その対象を「価値がない・低級で自分にふさわしくない」ものとみてあきらめ、心の平安を得る。
フロイトの心理学では防衛機制・合理化の例とする。
また、英語圏で「Sour Grapes」は「負け惜しみ」を意味する熟語である。
wikiより

527 :デフォルトの名無しさん :2018/01/15(月) 14:28:13.93 ID:wzT+kwGj0.net
誤爆

528 :デフォルトの名無しさん :2018/01/15(月) 14:30:17.74 ID:H/ZiF0K36.net
わざとらし

529 :デフォルトの名無しさん :2018/01/15(月) 14:55:45.45 ID:AxPygC8od.net
ふふってなった

530 :デフォルトの名無しさん :2018/01/15(月) 23:31:54.06 ID:D5A33j6W0.net
>>515
if(
 a>1&&
 b>1&&
 c>1&&
 d>1
)
じゃダメ?

531 :デフォルトの名無しさん :2018/01/15(月) 23:38:16.13 ID:dZYU88oU0.net
>>530
俺的には条件が長くなったときに
&&が後ろに隠れるのは納得行かないぜ
横が揃うなんて些細な問題だ

532 :デフォルトの名無しさん :2018/01/15(月) 23:46:30.01 ID:D5A33j6W0.net
>>531
個人的には
if(
 1 < a
 && 1 < b
 && 1 < c
 && 1 < d
)
って書くけど>>515に合わせてあるだけ

533 :デフォルトの名無しさん :2018/01/15(月) 23:51:57.61 ID:NNVQY+KWa.net
もう書いてる人いるけど、こういうのは結局自分の(ほとんどの場合はくだらない)
こだわりの方を修正する方が早い。

っていうか頭を揃えたら見やすいって感覚はちょっと理解不能
間違いなくただの思い込みだと断言できる

534 :デフォルトの名無しさん :2018/01/15(月) 23:52:49.97 ID:6y3nyQLRa.net
もうbool返すメソッド作れよ

bool AllUnderOne(a,b,c,d)

535 :デフォルトの名無しさん :2018/01/15(月) 23:58:52.41 ID:NNVQY+KWa.net
んなことしなくてもifに長い式書くのが嫌なら適当な使い捨ての変数を導入するだけでしょ

536 :デフォルトの名無しさん :2018/01/16(火) 13:31:13.30 ID:i7+6byhr0.net
でかくて長い画面を買うってのが一番の解決法かも

537 :デフォルトの名無しさん :2018/01/16(火) 15:15:48.68 ID:ugMFq+erp.net
結局staticって何が有用でどういう時に使うものなの?
解説読んでもこれが何に活かされるのか分からない…

538 :デフォルトの名無しさん:2018/01/16(火) 15:30:00.66 .net
おまえMathクラス使わんの?string.Joinも?

539 :デフォルトの名無しさん :2018/01/16(火) 15:37:01.06 ID:a4mp8S6Kd.net
>>523
Code alignmentって拡張機能があるから使ってみれば?

540 :デフォルトの名無しさん :2018/01/16(火) 15:56:31.20 ID:MHWq/GyWd.net
ちなみにstaticな変数の話?
staticなメソッドの話?

541 :デフォルトの名無しさん :2018/01/16(火) 16:04:17.06 ID:PrX1Owa0a.net
インスタンスおじさん誕生の瞬間であった

542 :デフォルトの名無しさん :2018/01/16(火) 16:15:22.10 ID:CjJlQTmDM.net
それはスタティックおじさん誕生じゃないのかと突っ込む

543 :デフォルトの名無しさん :2018/01/16(火) 18:17:52.02 ID:KK3jsa+Da.net
ここだかどうだかわすれたけど
staticの質問をしてた人が過去にいた

そしてなぜかCの話になったりしていちゃもんつけるだけつけて帰って行った
同じ人かもしれない

544 :デフォルトの名無しさん :2018/01/16(火) 22:11:32.35 ID:augwvgTX0.net
string型の文字列を配列で持ちたいときはlistboxに
文字列をコピーしていく方法よりカッコいい方法ある?

545 :デフォルトの名無しさん :2018/01/16(火) 22:21:10.24 ID:d5RFkyAg0.net
それは難問だな。

546 :デフォルトの名無しさん :2018/01/16(火) 22:21:16.14 ID:6G3H5uZu0.net
stringの文字列を配列で持ちたいというのはstring[]ってこと?

listboxに文字列をコピーしていくとは?もうちょっと詳しく。

カッコいい方法というのはC#のコードの書き方という意味で?

547 :愛知人:2018/01/17(水) 00:53:02.20 ID:BsDn1sQu.net
>>544
string[]型を使う

548 :デフォルトの名無しさん :2018/01/17(水) 12:17:12.42 ID:bthN5Jmqr.net
カッコよさが分からない人たちばかりだな

549 :デフォルトの名無しさん :2018/01/17(水) 12:20:30.00 ID:LEuV8dOXM.net
SQLを外部ファイルに出したいのですが、そういうライブラリやフレームワークってあるでしょうか

それとも皆さんオレオレフレームワークを作っているのでしょうか

550 :デフォルトの名無しさん :2018/01/17(水) 12:22:20.17 ID:kFuDYWJQM.net
エスパーはよ

551 :デフォルトの名無しさん :2018/01/17(水) 12:26:19.54 ID:bthN5Jmqr.net
オレオレフレームワークもみんなが使えばワレワレフレームワークになる
そーゆーこと

552 :デフォルトの名無しさん :2018/01/17(水) 12:30:08.90 ID:kFuDYWJQM.net
みんなで使える優れたフレームワークはオレオレフレームワークと呼ばれない

553 :デフォルトの名無しさん :2018/01/17(水) 12:33:43.83 ID:1hVmVOYN0.net
>>551
phpでいいじゃん。何が不満?

554 :デフォルトの名無しさん :2018/01/17(水) 12:43:27.55 ID:0DWA9qEvd.net
優しくレスしても返答返してくれないからつれぇわ

555 :デフォルトの名無しさん :2018/01/17(水) 13:07:25.77 ID:WDfY9ZKSa.net
>>549
何について言ってるのか理解しづらいけど
SQLを外に出すのは悪いことなのでそういうライブラリやフレームワークはない

SQLってただの文字列でしかなくてコンパイル時に間違いがわからない
それを埋め込んでテストを繰り返すことでバグの可能性を限りなく低くしてる

でもORMなどを使っても必ずバグを洗い出せるわけじゃない

556 :デフォルトの名無しさん :2018/01/17(水) 13:17:11.57 ID:ouCdAj12M.net
>>549
ストアドでも

557 :デフォルトの名無しさん :2018/01/17(水) 13:19:50.11 ID:ouCdAj12M.net
よく考えると形だけ外出ししてもデータ取得後のソースが
SQLによって変わるからあんまり意味ないっつか見にくくなるだけだな

558 :549 :2018/01/17(水) 17:56:42.19 ID:hVz/jIKcM.net
質問が下手ですみません

javaのibatisのようなxmlでクエリを外部ファイルに置くようなフレームワークはC♯にあるのでしょうかという質問でした

自分は文字列でコード上に直接クエリを書いており、悪手をやっているのではと不安になり質問しました

ご教示よろしくお願いします

559 :デフォルトの名無しさん :2018/01/17(水) 18:11:05.45 ID:XareNapid.net
>>558
iBatisって相当昔だと思うけど…C#でもiBatis(MyBatis)は使える
絶対やめた方がいいけど

560 :デフォルトの名無しさん :2018/01/17(水) 18:11:53.34 ID:XareNapid.net
普通にDapper使っとけ

561 :デフォルトの名無しさん :2018/01/17(水) 18:20:48.34 ID:Hv4w1dTIM.net
今時は全部ソース内に書くのが普通

562 :デフォルトの名無しさん :2018/01/17(水) 18:25:50.70 ID:0DWA9qEvd.net
個人的にクエリは定数で宣言して、クラスにまとめる感じで書く。

リフレクション使ってクエリ文字列を引っ張れば管理資料もチョチョイのチョイやで。

563 :549 :2018/01/17(水) 18:33:33.76 ID:2pD1HrQI0.net
むしろクエリを外部ファイルに書き出すのは古いのですね
参考になります

564 :デフォルトの名無しさん :2018/01/18(木) 15:36:13.66 ID:UDaQCIW60.net
すみません。この場を借りて質問させていただきます。
C#初心者なのですが、wpfで動画再生アプリを作っています。コピペメインです。

MediaElementを使って動画のコントロールはほぼ実装できたのですが、
動画のフルスクリーンからの復帰の仕方が良くわかりません。
(元の画面にうまく戻せません)

フルスクリーンにするときは、こちらを使っています。
layoutRoot.Children.Remove(myMediaElement);
this.Content = myMediaElement;
this.WindowStyle = WindowStyle.None;
this.WindowState = WindowState.Maximized;

戻すときは以下のようにしてみましたが、
this.Content = layoutRoot;
layoutRoot.Children.Add(myMediaElement);
this.WindowStyle = WindowStyle.SingleBorderWindow;
this.WindowState = WindowState.Normal;
System.ArgumentException: '新しい親 Visual に関連付ける前に、指定された子と現在の親 Visual との接続を切断する必要があります。'
と怒られますw 親子の縁はどのように切ったら良いのでしょうか?
よろしくお願いいたします。

565 :デフォルトの名無しさん :2018/01/18(木) 16:39:37.64 ID:qgo/qNlCa.net
>>564
上と下を見比べて対応してないものをまず見ろ

それにしてもひどいやり方だ

566 :デフォルトの名無しさん :2018/01/18(木) 17:04:33.90 ID:vq0hr/63M.net
まずはフルスクラッチだな

567 :デフォルトの名無しさん :2018/01/18(木) 19:23:42.55 ID:UDaQCIW60.net
ぜんぜんわかりまへん。。

568 :デフォルトの名無しさん :2018/01/18(木) 19:44:28.00 ID:64hUXuXa0.net
private void savedata()
{
string name = "aaa.txt";
system.IO.StreamWriter sw;
try
{
sw = new IO.StreamWriter(name, false, System.Text.Encoding.GetEncoding("shift_jis"));
sw.WriteLine("aaaa");
}
catch (Exception ex)
{
MsgBox("Savedata error:" + ex.Message);
}
finally
{
sw.Close();
}
}
Newでエラーした場合にはSw.Closeすると落ちるが、何とかならないものだろうか?

569 :デフォルトの名無しさん :2018/01/18(木) 19:49:35.26 ID:pMlUf2sf0.net
if(sw != null) sw.Close();
じゃダメなのかしらん?

570 :愛知人:2018/01/18(木) 19:54:23.83 ID:9519fNi8.net
知らんけどusingステートメントでよくね

571 :デフォルトの名無しさん :2018/01/18(木) 19:54:45.69 ID:tGyPdxm00.net
>>569
Dispose()とかでもそうするのが基本だと思うが
>>568
Fileが無い場合やサイズが0とかの対応全く考えてないのも問題だと思う

572 :デフォルトの名無しさん :2018/01/18(木) 20:15:34.43 ID:64hUXuXa0.net
あっそうか Nullで検出できたのか。ありがと。Useingってのもあるんだね。

開発モードではエラーしないのに、Setupファイルでインストールすると、書き込み禁止がかかっているような
エラーになるんだがなにが原因だろ。
System.UnauthorizedAccessException: パス 'C:\Program Files (x86)\test14\あああああ.ini' へのアクセスが拒否されました。

573 :デフォルトの名無しさん :2018/01/18(木) 20:16:33.01 ID:tGyPdxm00.net
>>572
管理者権限は?

574 :デフォルトの名無しさん :2018/01/18(木) 20:18:58.56 ID:k+CX8kgw0.net
>>572
WindowsフォルダやProgramFilesフォルダに書き込むには管理者権限が必要

575 :デフォルトの名無しさん :2018/01/18(木) 20:29:36.57 ID:YPPczFY+0.net
フォームのデザイナが以下のエラーを吐くのですがどうすればいいですか。

"***.dll"を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)

プロジェクトは以下の4つです。
MainForm(C#)
MainView(C#) (MainFormの中でNewされる。DLLsを利用する。)
DLLs(C#) (DLLImportする。)
Drawer(C++) (DLLExportする。dllファイルはビルド後に実行ファイルがある場所にコピーされる。)

コールスタックでは、MainViewのDLLsを使用しているところでエラーがでており、
それをコメントアウトすると、デザイナが表示されます。

576 :デフォルトの名無しさん :2018/01/18(木) 20:50:42.63 ID:64hUXuXa0.net
>WindowsフォルダやProgramFilesフォルダに書き込むには管理者権限が必要

ありがとう。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
をいれたら動き出した。しかし立ち上げ時に毎回「この不明なアプリが実行することを許可しますか?」って
Windowsの確認画面がでるんだが、なんとかならないのでしょうか?

577 :デフォルトの名無しさん :2018/01/18(木) 21:17:58.11 ID:6vAFeThoa.net
>>576
ユーザーコードで対処するのは無理でしょう。
そのためのUACなんだし。

リスク覚悟でUACを無効にするしか
Vista出たのも10年前だし、UACが何だか知らない人も多くなってるのかな

578 :デフォルトの名無しさん :2018/01/18(木) 22:00:15.46 ID:Zc8v9cFo0.net
Program filesにインストールするようなアプリで今時.iniとかちょっと…

579 :デフォルトの名無しさん :2018/01/18(木) 22:25:20.18 ID:hlxKOq/D0.net
>>576
コードサイニング証明書取得して、プログラムに署名。

580 :デフォルトの名無しさん :2018/01/18(木) 22:50:24.38 ID:YPPczFY+0.net
>>575
質問取り下げます

581 :デフォルトの名無しさん :2018/01/18(木) 23:30:22.02 ID:64hUXuXa0.net
管理者権限でいつも立ち上げるようにすると確かにアクセスできるようになった。
しかしインストール先 パス を'C:\Program Files (x86)、これをやめれば管理者権限で立ち上げる必要はないのでは?

582 :デフォルトの名無しさん :2018/01/18(木) 23:33:43.60 ID:64hUXuXa0.net
>コードサイニング証明書取得して、プログラムに署名。

最高だ。これはいい。

とおもったら金がかかるのか? 残念。

583 :デフォルトの名無しさん :2018/01/18(木) 23:58:27.78 ID:x+1bimBw0.net
>>582
普通はアプリケーションフォルダにデータを置きます
てか、設定ファイルは.iniを使わなくなって10年以上経ちます
[C# 設定]で、普通の設定ファイルの使い方調べた方がいい

584 :デフォルトの名無しさん :2018/01/19(金) 00:03:38.34 ID:b8VvEepP0.net
訂正アプリケーションデータフォルダ(AppDataってやつね)

585 :デフォルトの名無しさん :2018/01/19(金) 00:13:18.76 ID:S8TUMubta.net
最近流行らないと思うけど、バイナリと同じ場所に設定ファイルを置くのは
バイナリ自体をUSBメモリに入れて持ち歩くような特殊な用途ぐらいだよね

iniファイルでも悪くないと個人的には思うけど、せっかく便利なシリアライザがいろいろあるのに
わざわざ機能的に劣るiniファイルを使う意味はないわなあ

読み書きするコードも自分で書かなきゃならんし

586 :デフォルトの名無しさん :2018/01/19(金) 00:21:35.85 ID:reZAGsN60.net
AppDataってVsのSetupプロジェクトでは作ってくれないですね。Apllicationフォルダーに設定用のデータも入れています。

「iniをつかわない」ってのがあまり意味がわかりませんがいま使っているのは単なるテキストファイルです。
(*.iniという名前にしていますが、)StreemWriterで書いています。XMLに落とすのが普通なのでしょうか?
 しかし単に改行だけのファイルで十分なのでXMLにはしていません。
XMLは設定ファイルとしてはわかり難いですし無駄が多いように思います。
それにエディターで気楽に追加ができないです。

587 :デフォルトの名無しさん :2018/01/19(金) 00:26:38.77 ID:reZAGsN60.net
>niファイルでも悪くないと個人的には思うけど、せっかく便利なシリアライザがいろいろあるのに
>わざわざ機能的に劣るiniファイルを使う意味はないわなあ

慣れなんですかね。どうも直観的にわかり難いように思います。だからJsonとかを使う人も多いんではないですか?

588 :愛知人:2018/01/19(金) 00:30:36.53 ID:5Myz+qXq.net
VisualStudioの機能だが

589 :デフォルトの名無しさん :2018/01/19(金) 00:32:41.68 ID:reZAGsN60.net
”設定”, 20,
とかをStreemReaderで読みこむと何で ””設定””になるんですかね。ストリングにするためにわざわざ「”」をNULLにReplaceしています。
なんかいい方法はないですかね。

590 :デフォルトの名無しさん :2018/01/19(金) 00:38:29.54 ID:d7UJaemd0.net
>>586
俺はええと思うな
XMLは編集するツールがない
プログラマでない人間がぶっ壊したら
自分で直すのは至難の技だ

591 :デフォルトの名無しさん :2018/01/19(金) 00:45:09.29 ID:reZAGsN60.net
>VisualStudioの機能だが

・AppDataフォルダ:このフォルダは「C:\Users\ユーザー名\AppData」にあります。ほとんどのプログラムの設定ファイル
はここに置かれています(サブフォルダ「Roaming」の中)。プログラム名か開発企業名のフォルダの中に、設定ファイルや
関連データが保存されていますので、フォルダごとバックアップしておきましょう。

こういうもののようですね。だからSetupプロジェクトにはここに入れる設定データのフォルダーがあってしかるべきですがない?みたいですね。

592 :デフォルトの名無しさん :2018/01/19(金) 00:46:26.55 ID:reZAGsN60.net
すいません。ありました。w

593 :愛知人:2018/01/19(金) 00:51:07.58 ID:5Myz+qXq.net
これな
https://dobon.net/vb/dotnet/programing/mysettings.html

594 :デフォルトの名無しさん :2018/01/19(金) 01:25:20.86 ID:LT72Z3Kia.net
バイナリと同じフォルダにiniファイルだと…

アプリケーション1つにつき設定が一個しかないのでユーザーが複数いると困る
たとえば年賀状ソフトで差出人が全てのユーザーで一つしか設定できない

595 :デフォルトの名無しさん :2018/01/19(金) 02:08:01.69 ID:IgZPOGcu0.net
今時複数ユーザーなんか考慮しなくていいだろ
健全なファミリーがお前の作ったアプリを使うとでも?

596 :デフォルトの名無しさん :2018/01/19(金) 02:36:53.35 ID:fKBFwOmr0.net
j時代の産物だよなあ >1PC複数ユーザ

597 :デフォルトの名無しさん :2018/01/19(金) 05:47:10.29 ID:FgdJ6DNZ0.net
すまんが、列挙型って関数の引数の型に指定することはできないの?
enum A {B, C ,D};
void E(A a){}//ここでエラー
これを書く事ができれば、エディタのアシストが効きまくってミスが減る気がするんだけど・・・・・

598 :デフォルトの名無しさん :2018/01/19(金) 06:28:55.06 ID:0J18wCJz0.net
できるはず
エラーメッセージはどのようなものですか?

599 :デフォルトの名無しさん :2018/01/19(金) 09:34:28.81 ID:NgQA6vsH0.net
同名enumが複数あってエラーとなっているに一票

600 :デフォルトの名無しさん :2018/01/19(金) 09:49:45.42 ID:6WrKIIOGa.net
関数内に書いててpublicメソッドにしてるんだろうな

601 :デフォルトの名無しさん :2018/01/19(金) 10:03:10.79 ID:6WrKIIOGa.net
クラス内に書いててpublicメソッドの引数にしてるの間違い

それかenumをpublicにしてないか

602 :デフォルトの名無しさん :2018/01/19(金) 15:16:19.49 ID:6h+BHP540.net
Windows Form のコントロールたちって、ここ10年くらい全くもって変わり映えしてない気がするんだけど
もう改善する気がないのかねぇ

グレープシティ壊滅させるまでやらずとも
テキストボックスの縦位置とか枠線スタイルとか複数列コンボとか、そのくらい対応してくれてもいいと思うんだけど

603 :デフォルトの名無しさん :2018/01/19(金) 21:40:19.48 ID:o57JVoz30.net
>>602
UWPに注力してる以上まずやらんだろ。

604 :デフォルトの名無しさん :2018/01/19(金) 21:52:43.88 ID:AYT1nS2wa.net
XPに対応したVS2005の時代から変わってないのに何をいまさら感w

605 :デフォルトの名無しさん :2018/01/19(金) 22:00:59.10 ID:NgQA6vsH0.net
>>603
Windows 10 Mobile が事実上終了したんだからUWPに注力する必要ないよね

606 :デフォルトの名無しさん :2018/01/19(金) 22:02:05.49 ID:4CF5m12I0.net
Chartがその後で増えたよ
いやまあBCLに入っていなかっただけで前からあった奴だけど

607 :デフォルトの名無しさん :2018/01/19(金) 22:27:33.99 ID:o57JVoz30.net
>>605
GoogleやAppleのまねしたいみたいだから、あがき続けるんじゃないか。

608 :デフォルトの名無しさん :2018/01/19(金) 23:30:36.57 ID:199CJjI/0.net
WinFormsって長いこと触ってないが
今でも線引くのにLabel使うとかアホなことしてるの?

609 :愛知人:2018/01/19(金) 23:45:07.67 ID:5Myz+qXq.net
線なんか引くか?
無い物は使わなくてよくね?

610 :デフォルトの名無しさん :2018/01/19(金) 23:59:59.32 ID:6WrKIIOGa.net
底辺の人は底辺の環境で不思議なことをしてる


普通の人は普通の環境で普通なことをしてる

611 :デフォルトの名無しさん :2018/01/20(土) 00:13:34.30 ID:2ckAjxI3a.net
>>608-609
ラベルでヘアライン引くのはよくあるしアホでも何でもない

612 :デフォルトの名無しさん :2018/01/20(土) 00:20:13.00 ID:1eaJngIj0.net
MSがUWPの宣伝しているのを見る度に
ユニバーサルプラットフォームっていうけど
お宅の会社ってPC以外のプラットフォーム持ってましたっけ?
って煽りたくなる

613 :デフォルトの名無しさん :2018/01/20(土) 00:23:44.04 ID:2ckAjxI3a.net
実態はともかく構想的にはMS以外ノプラットフォームも対象なんで
その批判は当たらないかと

614 :デフォルトの名無しさん :2018/01/20(土) 00:26:56.64 ID:j23dmrcl0.net
とは言え、ギョーミーなアプリ書く上で、マストなものは粗方揃ったわけだし
クライアントがWindows10で揃えられるなら選択肢として悪くない

615 :デフォルトの名無しさん :2018/01/20(土) 01:06:06.62 ID:5JusgAfv0.net
とはいえUWPで作れるアプリならWebで十分なんだよね
タッチパネルでの利用を想定しないのであれば、現実的にはあえて選ぶメリットはほとんど無い

616 :デフォルトの名無しさん :2018/01/21(日) 06:37:48.04 ID:eh2o3Efy0.net
解像度2560×1440のモニタを使っているのですが、Formアプリの解像度が合いません。
原因はサイズを125%に拡大していることで、通常の倍率に戻すとぼやけません。
FormのAutoScaleModeをDpiに設定してみましたが改善されませんでした。
対策をご存知の方がいましたら教えてください。

617 :デフォルトの名無しさん :2018/01/21(日) 08:46:46.21 ID:0JbPJogq0.net
VSの吐くWinformsのテンプレだと自分でdpiAware仕込まなあかんのじゃなかったっけ

618 :デフォルトの名無しさん :2018/01/21(日) 09:07:41.53 ID:eh2o3Efy0.net
>>617
app.manifestを設定したらモニタの解像度に対応できました。
ありがとうございます!!

619 :デフォルトの名無しさん :2018/01/21(日) 09:16:30.01 ID:dyzIneF20.net
>>616
exeを右クリしてプロパティの中の互換設定を弄ると直る

620 :デフォルトの名無しさん :2018/01/21(日) 09:41:48.00 ID:eh2o3Efy0.net
>>619
なるほど、互換の設定でも対応できるのですね。
勉強になります。

621 :愛知人:2018/01/21(日) 12:27:01.84 ID:w5iluM1L.net
つまり他のソフトもボヤけてるんだな。
XPExplorerインストールすればいいのに。

622 :デフォルトの名無しさん :2018/01/21(日) 19:16:00.62 ID:eh2o3Efy0.net
>>621
さっそくインストールしました
ありがとうございます!

623 :デフォルトの名無しさん :2018/01/21(日) 19:17:14.71 ID:eh2o3Efy0.net
早速インストールしたら好調でした
ありがとうございます!

624 :デフォルトの名無しさん :2018/01/21(日) 19:18:01.63 ID:eh2o3Efy0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

625 :デフォルトの名無しさん :2018/01/22(月) 01:46:46.64 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

626 :デフォルトの名無しさん :2018/01/22(月) 01:47:44.83 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

627 :デフォルトの名無しさん :2018/01/22(月) 01:48:45.74 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

628 :愛知人:2018/01/22(月) 01:49:30.11 ID:f1RuTEDX.net
うっせーよカス

629 :デフォルトの名無しさん :2018/01/22(月) 01:50:19.37 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

630 :デフォルトの名無しさん :2018/01/22(月) 01:51:06.43 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

631 :デフォルトの名無しさん :2018/01/22(月) 01:52:13.61 ID:B9qWH8zv0.net
>>621
早速インストールしたら好調でした
ありがとうございます!

632 :デフォルトの名無しさん :2018/01/22(月) 07:20:56.54 ID:2aQrNvno0.net
普通にNGID

633 :デフォルトの名無しさん :2018/01/22(月) 15:17:28.34 ID:rsQqa0Zv0.net
public static SqlConnection connect = new SqlConnection("接続文字列");
public static SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Table", connect);
public static DataTable dt = new DataTable();

private void Form_Load(object sender, EventArgs e)
{
sda.Fill(dt);
DataGridView1.DataSource = dt;
}

private void button_publish_Click(object sender, EventArgs e)
{
connect.Open();
〜Tablesへの改変処理
connect.Close();

dt = new DataTable();
sda.Fill(dt);//★
}

Table内容をSqlDataAdapterを使い、データテーブルに入れ込んで、DataGridViewに表示させた後、

Table内容を変更後、再びDataGridViewに表示させるとき、例外がスローされます。

★の部分で、「System.InvalidOperationException: 'ConnectionString プロパティは初期化されていません。'」が出ます。

最新のデータを同じDataGridViewで見るには、どのようにすればよいのでしょうか?

634 :デフォルトの名無しさん :2018/01/22(月) 15:55:14.43 ID:O29q6QQC0.net
>connect.Close();
接続切ったらそりゃエラーになるでしょ

635 :633 :2018/01/22(月) 16:09:10.00 ID:rsQqa0Zv0.net
connect.Open();//★
sda.Fill(dt);
connect.Close();
としたら、★マークのところで、またエラーが出ました。

636 :デフォルトの名無しさん :2018/01/22(月) 16:33:20.49 ID:R+95xE7/0.net
まずコネクション以下全てのオブジェクトはクローズしたら再度newしないと使えません
よってスタティックじゃなくて普通のインスタンスとして管理
使う度にnewで新たに作ります

637 :633 :2018/01/22(月) 16:46:28.18 ID:rsQqa0Zv0.net
そうだったんですね、使いまわせると思ってました・・・

638 :633 :2018/01/22(月) 17:15:57.30 ID:rsQqa0Zv0.net
インスタンス内で、宣言したら、うまくいくようになりました。
ありがとうございます。

639 :デフォルトの名無しさん :2018/01/23(火) 08:14:55.18 ID:y6LiRRs70.net
デバッグで完全に動作するのにインストールして動かすと、途中で落ちる。多分データベースのアクセスではないかなと
思っているんだが、インストールした実行プログラムのデバッグをやろうとしているんだがどうやるのか不明。

VS2013の「デバッグ」から「インストールされているアプリケーションパッケージのデバッグ」に入ってもリストに何もでてこない。
なにか設定があるのだろうと思うが、どこを設定すればいい?
アタッチするまでが分からない。

640 :デフォルトの名無しさん :2018/01/23(火) 08:58:36.28 ID:Un6nXOVAd.net
>>639
どうやってインストールしたん?
結局Console.WriteLine()をあちこちに埋め込むのが早かったりする

641 :デフォルトの名無しさん :2018/01/23(火) 09:29:37.11 ID:2MiHwZpp0.net
>>640
ConsoleよりTraceの方が使い勝手良いぞ。
Trace.WriteLine()とかの情報をDebugViewで時間情報付きで見れる。
フィルターやハイライトとかもかけられる。

642 :デフォルトの名無しさん :2018/01/23(火) 09:36:15.82 ID:XJEe+tMu0.net
CallerMemberNameAttribute class

643 :デフォルトの名無しさん :2018/01/23(火) 09:37:24.58 ID:XJEe+tMu0.net
っていうか
リリース版でデバッグしたいって聞いてるんでしょ?

644 :デフォルトの名無しさん :2018/01/23(火) 09:50:04.23 ID:2MiHwZpp0.net
Trace出力でのデバッグはリリース版でやることが多いぞ。
ビュワー立ち上げなければ、ユーザーからは見えないし。

645 :デフォルトの名無しさん :2018/01/23(火) 09:59:10.73 ID:iDuW9Lrl0.net
mono入れたLinuxでmscでコンパイルした実行ファイルを
WindowsにもってこようとするとMicrosoft Defenderでトロイ扱いされてブロックされます
同じコードをWindowsでcscでコンパイルした場合は問題ありません
WindowsでコンパイルしたものはmonoでLinuxでもちゃんと実行できます
なんでmscでコンパイルしたものがトロイ扱いされるんでしょう?

646 :愛知人:2018/01/23(火) 11:14:45.36 ID:ZHqgRH1x.net
どうやって受け渡してる?
zipで渡したらどうなる?

647 :デフォルトの名無しさん :2018/01/23(火) 11:48:58.28 ID:iDuW9Lrl0.net
>>646
scp(ssh)とhttp経由でダウンロードしましたがだめで
その後拡張子を変えたりしましたがだめでした
アーカイブは試しませんでしたが
ダウンロードできても解凍するところでアウトと思われます
軽いプログラムだったのでbase64エンコードした文字列を
Windows側でデコードして出力しようとしたのですが
ファイルに出力した時点でウイルス判定され隔離されました

648 :デフォルトの名無しさん :2018/01/23(火) 12:35:41.92 ID:IdUgpQhE0.net
C#アプリからCTRL+V以外のホットキーでSendMessageでWM_PASTEを送っても
ペーストできるアプリとできないアプリがあるのですが
ペーストできない原因とどうすればペーストできるのか
分かる方がおられましたらお教えいただけないでしょうか

自作C#アプリ ○
FireFox ○
ThunderBird ○
IE11 ○
Mery ○
秀丸ファイラ ○
MDIE ○


V2C ×
Chrome ×
Vivaldi ×
Everything ×


649 :デフォルトの名無しさん :2018/01/23(火) 12:43:02.47 ID:+k2ngROKa.net
いやいや、原因は普通に当該アプリがWM_PASTEを処理しないからでしょうw
泥臭いけど素直にSendKeysを使ったらよいのでは?

650 :デフォルトの名無しさん :2018/01/23(火) 12:43:45.53 ID:w7MKK31Na.net
シリアル通信のプログラムで問い合わせ付のコマンドを送信する場合に、送信結果(bool)とレスポンス結果(string)を取得したいのですが、返り値boolでレスポンス結果をoutで返すといった感じにすればいいでしょうか

651 :デフォルトの名無しさん :2018/01/23(火) 12:44:53.41 ID:S3NIjRwTM.net
WM_PASTEじゃなくて直接キーをハンドリングしてるんだろ
最近のメジャーなアプリは開発者がMacをメインで使ってるケースが多かったりして、
ファッキンドザのために必要以上の特殊な対応はしないというスタンスのものが増えてるよ

652 :デフォルトの名無しさん :2018/01/23(火) 12:50:10.67 ID:X0br0i8Q0.net
>>650
ValueTuple

653 :デフォルトの名無しさん :2018/01/23(火) 13:01:37.24 ID:P/8oxsShM.net
>>650
送信結果は例外で

654 :デフォルトの名無しさん :2018/01/23(火) 13:31:40.71 ID:+k2ngROKa.net
>>650
成否だけ分かればいいなら、失敗した時はnullを返せば十分じゃない?

enum Acknowledgement {ACK,, NAK, NoResply, Offline};
みたいなのを返したいなら、

Class Response
{
  public string Received{get; private set;}
  public Acknowledgement Acknowledgement{get; private set;}
}

みたいなのを返すとか

655 :デフォルトの名無しさん :2018/01/23(火) 14:27:23.36 ID:jwCBe9IF0.net
メインメニューにコピーの項目ないなら
直接ペーストするウインドウに送らんと

656 :デフォルトの名無しさん :2018/01/23(火) 21:20:31.90 ID:doIreqsya.net
>>652-654
ありがとうございます
試してみます

657 :デフォルトの名無しさん :2018/01/24(水) 22:02:38.70 ID:pOW1jrho0.net
classをforeachで回したいのですがGetEnumeratorの書き方はこういう形が一般的なのでしょうか?
プロパティが増える度にGetEnumeratorのyield return追加しないといけないですが
うっかり追加し忘れてバグの元になるから別の書き方があるのかも?と少し気になったので
https://ideone.com/etKQWk

658 :デフォルトの名無しさん :2018/01/24(水) 22:13:23.39 ID:N2tfbGLJM.net
>>657
普通はそんなことはしない
まともな作り方をしていれば、次元の異なるものを列挙することはない

659 :デフォルトの名無しさん :2018/01/24(水) 22:16:06.84 ID:BwYqU5Fv0.net
>>657
リフレクション使う
https://qiita.com/dolls/items/c7b3cf2520baae158a3a

660 :デフォルトの名無しさん :2018/01/24(水) 22:21:49.07 ID:pOW1jrho0.net
>>658
すっごい単純なものだと
int id
string name
みたいなものでクラス保持してて、そこに他にも付属品が付いてるイメージです
たまにforeach使えないと不便な時があるのでその為に継承させてるのですが

DBから読み出したデータをそのままforeachで出力させたいって時とかに使います
わざわざ全部の項目を関数で読み出して表示ってのも大変な時があるので

661 :デフォルトの名無しさん :2018/01/24(水) 22:38:24.91 ID:pOW1jrho0.net
>>659
Typeの使い方色々調べましたけど、指定方法がイマイチわからなかったのでもうちょい調べておきます

662 :デフォルトの名無しさん :2018/01/24(水) 22:51:55.14 ID:V1Cqs6+da.net
>>660
質問してるんだから人の言うこと素直に聞いた方がいいと思うよw
少なくとも>>658は正しい。

一般的なのでしょうか?
一般的どころかそんなこと誰もしないよw

どうやったらそんなアホなことをせずに目的の仕様を実激できるかを考えた方がいい

663 :デフォルトの名無しさん :2018/01/24(水) 23:04:36.97 ID:pOW1jrho0.net
>>662
すいません、目的の事をしたいのにそうではないと提示してもらったのはありがたいのですが
他の実現方法が分からなかったのでとりあえず現状何をしてるかを更に明確に伝えた方がいいと思ったで

その回答がただ否定してるだけに見えたのなら少し発言が悪かったでしょうか?

>>659
で更に回答いただけたのでTypeの使い方を調べています
とりあえず動くものだけ>>657で暫定で動かしておいて、使い方を理解したら置きかえて行く予定です
個人的に作ってるものなのでとりあえずは手の届く範囲で扱えるので

664 :デフォルトの名無しさん :2018/01/24(水) 23:07:14.93 ID:E4B4d2jG0.net
>>660
やりたいことはこんな感じかな?
https://ideone.com/EfpdAq

665 :デフォルトの名無しさん :2018/01/24(水) 23:23:34.07 ID:pOW1jrho0.net
>>664
ビルドして動作確認しました
この通りの動きです、ありがとうございます
Linqの渡してるところ調べながら読み直して何してるか理解します

666 :デフォルトの名無しさん :2018/01/25(木) 12:22:13.44 ID:bvB9i9l+r.net
>>662
質問されてるんだから屁理屈いってないで素直に答えろよw低能らしいなw

667 :デフォルトの名無しさん :2018/01/25(木) 12:32:11.99 ID:867zoX3ca.net
こうしてまた一人変態プログラマーが世に放たれた

668 :デフォルトの名無しさん :2018/01/25(木) 14:20:59.96 ID:uboI0CmN0.net

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//画像ファイルを読み込んで、Imageオブジェクトとして取得する
Image img = Image.FromFile(@"C:\test\1.bmp");
//画像のサイズを2倍にしてcanvasに描画する
g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
//Imageオブジェクトのリソースを解放する
img.Dispose();

//Graphicsオブジェクトのリソースを解放する
g.Dispose();
//PictureBox1に表示する
PictureBox1.Image = canvas;


g,imgはNEWしてないのに何でdispose()する必要があるの?

669 :デフォルトの名無しさん :2018/01/25(木) 15:01:28.26 ID:rd0qfL0Fa.net
>>668
Graphics.FromImageもImage.FromFileも直接コンストラクタ呼んでないだけのこと。
中で非公開のコンストラクタが呼ばれてインスタンスが作られてることに変わりないじゃん

お片付けしていいタイミングが分かるのは作った人だけ。
だから作った人がお片付けする責任を負うのが合理的

670 :デフォルトの名無しさん :2018/01/25(木) 15:12:28.67 ID:uboI0CmN0.net
そういうことなの。
Graphics g = Graphics.FromImage(canvas);
こいつが内部のコンストラクタでNewしてるかどうかなんてどうしたらわかるの? 分からんよな。
マニュアルをみると確かにこいつだけ「Creates a new Graphics from the specified Image.」と
なってるな。わかり難く紛れ込んでるんだね。

しかも
g.dispose()
PictureBox1.Image = canvas;
と御片付けした後に表示するとはまた不思議な気がする。なんで片づけてから表示するん?
どのみちNEWしたCanvasはDisposeしないといけないでしょ。それならそのときに自動的に全部Dispose()する
とかできないのか?

671 :デフォルトの名無しさん :2018/01/25(木) 15:29:46.72 ID:uboI0CmN0.net
これはGraphicsクラスの説明にあるMSのサンプルだけどImageもulCornerもDispose()していないのは何故。
private void DrawImagePointF(PaintEventArgs e)
{
// Create image.
Image newImage = Image.FromFile("SampImag.jpg");
// Create point for upper-left corner of image.
PointF ulCorner = new PointF(100.0F, 100.0F);
// Draw image to screen.
e.Graphics.DrawImage(newImage, ulCorner);
}

672 :デフォルトの名無しさん :2018/01/25(木) 15:31:19.68 ID:867zoX3ca.net
別に使い終わってもリソース気にしないなら放置でいいよ
実害は普通の使い方してる限りでない

一個二個リソースが握られただけでは問題ないけど
数千数万とかレベルだと問題がでる
でもわざわざ勘定したり場合わけしながらコード書いているのか?
だったら正しいコードを書こう

newしてるかどうかわからなくても使ってることはわかるだろ?
いつかは自動で解放されるけどタイミングが不明
コード書いてる途中にg,imagを使い終わったと判断できるのは自分だけだから

片づけた後に使うのは当たり前だな
基本的にgなどはつかみっぱなしが良くないので短い範囲で手放してるだけ

673 :デフォルトの名無しさん :2018/01/25(木) 15:35:45.15 ID:867zoX3ca.net
これは基本的にwindowsのGDIという仕組みに乗ってるだけなので
他でも使ってる

c#に文句を言うのは筋違い
でもc++スレに行くのも筋違い

30年近くさかのぼってMSの設計者に文句を言ってくればいい
どうしても嫌ならwindowsの仕組みに乗ってないものを使えばいい

674 :デフォルトの名無しさん :2018/01/25(木) 15:46:40.99 ID:y1oROuxV0.net
こういう自分とこでインスタンス作成しといて始末しない設計ってクソだね

って話で終わりだな

675 :デフォルトの名無しさん :2018/01/25(木) 15:56:14.66 ID:867zoX3ca.net
もう少し説明
>と御片付けした後に表示するとはまた不思議な気がする。なんで片づけてから表示するん?
仮にgをファイル操作に置き換えたとしよう

ファイル開く
ファイル読み書き処理
ファイル閉じる
表示

これを
表示
ファイル閉じる
にした場合、表示がもし5年かかった場合、ファイルは意味もなく5年間開かれっぱなしで他から操作できない

676 :デフォルトの名無しさん :2018/01/25(木) 15:59:37.81 ID:867zoX3ca.net
さらに言えば自動でファイルを閉じる仕組みを作ったにせよ
表示が終わるまで5年間ファイルは閉じられる機会がない

これでもすべて自動でやれという意見は変わらないかな?

677 :デフォルトの名無しさん :2018/01/25(木) 16:00:10.16 ID:uboI0CmN0.net
そういう話ではなくて意味が解らないという話だね。
例えばこれは何故当たり前なのかが不明。

>片づけた後に使うのは当たり前だな
>基本的にgなどはつかみっぱなしが良くないので短い範囲で手放してるだけ

折角グラフィック表示するためにgを作ったのに、表示する前に解放するというのが意味不明だ。
Msのサンプルコードではまさにこのgに対してDRAWしている。これで表示が機能しているのに
この例では、PictureにCanvasを代入して表示が完了することになっている。表示する前にg
をdisposeしているから、gの役割が二つの例で意味が不明だ。

678 :デフォルトの名無しさん :2018/01/25(木) 16:04:31.21 ID:867zoX3ca.net
gは数が限られている

鉛筆みたいなもの
鉛筆が5本あってみなで共有している
使い終わったらすぐ放棄しないと絵が描けない人がでて困る

必要なくなったのに5年鉛筆を持ちっぱなしが望ましい状態だろうか?

679 :デフォルトの名無しさん :2018/01/25(木) 16:08:15.76 ID:867zoX3ca.net
鉛筆5本をそれぞれが持ちっぱなしで
6個目のアプリが起動したらどうなるか?

鉛筆がないのでまともに動かない

680 :デフォルトの名無しさん :2018/01/25(木) 16:14:06.03 ID:rPbpnmYW0.net
一つ勘違いがあるけど、newやコンストラクタとDispose()は直接関係ないよ
C#にdeleteは無いし、それに相当するものでもないので、インスタンスを解放する訳じゃない
Dispose()は主にガベージコレクション管理外となるアンマネージリソース等を解放するためのメソッド

そしてGraphicsはBitmapというキャンバスを弄るために用意したに過ぎない、表示するのはBitmapの中身
モノによってはDispose()すると内部バッファとかの書き出しとかもやるし、using等も使いつつ明示的にやりましょう

ちゃんとしたIDispose実装クラスならデストラクタ(ファイナライザ)でもDispose()を呼び出すコードが入ってるけど
タイミングがガベコレ次第になるし高コストなので明示的に呼ばれるとファイナライズキューから外すように設計されてる

681 :デフォルトの名無しさん :2018/01/25(木) 16:20:19.01 ID:rd0qfL0Fa.net
>>670
だから、「Disposeする必要があるのは自分がnewしたもの」という勝手な思い込みが間違ってる。
Disposeは作成したオブジェクトが必要なくなった時に呼ぶ。
オブジェクトを作成する方法はコンストラクタ呼び出しだけじゃない。

MSDNの説明にある通り、Graphics.FromImageもImage.FromFileも新しく作成されたオブジェクトを
返す。使いまわしされる共有オブジェクトを返すわけじゃない。

> どのみちNEWしたCanvasはDisposeしないといけないでしょ。それならそのときに自動的に全部Dispose()する
> とかできないのか?
usingステートメントを使う
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement

682 :デフォルトの名無しさん :2018/01/25(木) 16:22:44.43 ID:867zoX3ca.net
C#でたころにGDIの限界までオブジェクト作ったことがあったな
画面がおかしくなって黒いところがあちこちにできる
リソースがないと怒られる

それともc++だったかないずれにせよ20年ぐらい前かな

683 :デフォルトの名無しさん :2018/01/25(木) 16:22:53.90 ID:rd0qfL0Fa.net
あら、更新してない間にえらいレス増えてたw

684 :デフォルトの名無しさん :2018/01/25(木) 16:27:14.19 ID:uboI0CmN0.net
要するに
Canvas(これはBItmapと同じ?)
Image (これは、Bitmap以外にも多種多様な表示を扱う?)
Graphics (これは描画するための、関数群のようなもの?)
の違いが不明ってことかな。
上の例(DOBON)では
 Picture.Image=Canvas
 これでImageにビットマップを代入して描画が完了することになっている。
 g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
ここでgを使ってimgに描画したのでもうgはいらない。だからgはdisposeした。
ならわかるが、ここでimgをDsiposeするからわけがわからない。

685 :デフォルトの名無しさん :2018/01/25(木) 16:34:42.10 ID:uboI0CmN0.net
あっ、コメントにちゃんと書いてあった。

//画像のサイズを2倍にしてcanvasに描画する
g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
ここですでにCanvasに書いているんだな。

686 :デフォルトの名無しさん :2018/01/25(木) 16:37:20.54 ID:867zoX3ca.net
はい
解決したね良かったね

写真(img)を見て画用紙(canvs)に鉛筆(g)で絵を描いた
終わったので写真と鉛筆を片付けた

画用紙を額(picturebox1)に入れて飾りました

687 :デフォルトの名無しさん :2018/01/25(木) 16:43:44.03 ID:uboI0CmN0.net
DOBONの例の機序
PictureBox1のサイズで空のBITMAPを作成する。
そのビットマップから描画オブジェクトのGraphics gを作成する。
ファイルからBitmapのImageを作成する。
gでそのImageをBITMAPに描画する。(BITMAPに描画したのでg、imgはいらない)
描画したBITMAPをPictureBOxにコピーする。

こういうことか。わかった。お騒がせしました。ペコリ

688 :デフォルトの名無しさん :2018/01/25(木) 16:46:23.63 ID:y1oROuxV0.net
やっぱりuingとか言ってた奴はガイジだっただろ?

689 :デフォルトの名無しさん :2018/01/25(木) 16:47:36.29 ID:uboI0CmN0.net
>gは数が限られている

それはおかしい。そんなことはどこにも書いてない。
もしそうだとしたら
Graphics g = Graphics.FromImage(canvas);
このコードが間違いってことになる。ここで数量をチェックしないといけない。

690 :デフォルトの名無しさん :2018/01/25(木) 16:48:50.78 ID:867zoX3ca.net
ガイジって言葉を使う奴のほうがどうかしてると思いますよ

691 :デフォルトの名無しさん :2018/01/25(木) 16:52:18.84 ID:uboI0CmN0.net
>C#でたころにGDIの限界までオブジェクト作ったことがあったな
>画面がおかしくなって黒いところがあちこちにできる 。リソースがないと怒られる

これはどういう意味? メモリーの限界ではなくて、GDI(ハードウエア)がもつレジスタの限界ってこと?
Graphicsって要するにGDIのリソースを確保するという意味なの?

692 :デフォルトの名無しさん :2018/01/25(木) 16:53:13.35 ID:867zoX3ca.net
ググればいいよ思うよ
ここはチャットじゃない

693 :デフォルトの名無しさん :2018/01/25(木) 16:56:18.20 ID:y1oROuxV0.net
ユーザフレンドリーと見せかけてウンコの代表みたいなクラスなので
真面目に考えないほうがいい

結局仕組みを理解するにはwin32の描画文化から知る必要がある

694 :デフォルトの名無しさん :2018/01/25(木) 16:56:28.77 ID:rd0qfL0Fa.net
>>689
しょうもないことに突っかかるなあw
数が限られてるって言い方が気に入らないなら高価な共有リソースって言えば分かる?

例えば巨大な配列とか、通信ポートとか、
そういった類のものを「一人」がずっと占有したら他の人が使いたい時に使えないよね?

695 :デフォルトの名無しさん :2018/01/25(木) 16:57:30.81 ID:y1oROuxV0.net
>>694
そんなくだらない例え話じゃなくてちゃんと現象を説明してあげればいいじゃない

696 :デフォルトの名無しさん :2018/01/25(木) 17:00:16.17 ID:rPbpnmYW0.net
>>691
GDIはハードウェアっつーより…Windowsでの実装が気になるならReference Sourceでも読んで
メソッド内部では色々チェック入ってるし、しくじったら例外ぶん投げるようになってるから

697 :デフォルトの名無しさん :2018/01/25(木) 17:14:44.08 ID:uboI0CmN0.net
例外ね。それならわかる。

698 :デフォルトの名無しさん :2018/01/25(木) 17:19:27.46 ID:uboI0CmN0.net
MSの説明はたったのこれだけw
■Graphics クラス
 Encapsulates a GDI+ drawing surface. This class cannot be inherited.

GDI+って要するに、グラフィックコントローラを使うってことでしょ。でも鉛筆5本ってほどしょぼいことはないだろ。

699 :デフォルトの名無しさん :2018/01/25(木) 17:20:48.94 ID:867zoX3ca.net
まだググってないのかよ…

700 :デフォルトの名無しさん :2018/01/25(木) 18:18:42.61 ID:bbltRTAq0.net
結局リソースリリースタイミングを制御しないといけなくなるわけで、ほんとGCって糞だよな。

701 :デフォルトの名無しさん :2018/01/25(木) 18:20:51.02 ID:bbltRTAq0.net
最近のMSのドキュメントはほんと不親切だよな。
幸運なことGDI+は不親切になる前に開発されたものだから、ググればMSも含めて大量にドキュメントが残ってる。

702 :デフォルトの名無しさん :2018/01/25(木) 18:22:45.01 ID:lTsrogoKd.net
>>700
論理的に

703 :デフォルトの名無しさん :2018/01/25(木) 19:02:27.22 ID:uboI0CmN0.net
ググってみた。
Application.SetCompatibleTextRenderingDefault(false);
というのが設定されるようになっていて、GDI+は糞だからGDIを使いなさいってことらしい。w

704 :デフォルトの名無しさん :2018/01/25(木) 19:09:48.12 ID:MFAun2Gg0.net
>>703
文字列の描画の話だけ持ってきて何がしたい
https://dobon.net/vb/dotnet/control/setcompatibletextrenderingdefault.html
質問じゃないのならチラシの裏にでも書いてくれ

705 :デフォルトの名無しさん :2018/01/25(木) 19:23:49.81 ID:bbltRTAq0.net
よく鉛筆5本とか言うけど、Win16ではDCは同時に使用できるのは5つまでだった。
だからDC取得したらその関数内ですぐ開放するのが当たり前だった。

706 :デフォルトの名無しさん :2018/01/25(木) 20:28:49.03 ID:y1oROuxV0.net
c#の{ }って中身が1文の場合、省略できるものとできないものってどうやって決まってるんでしょうか?

namespace、class、
for、switch、while、try、checked、fixed、unsafeなど

707 :デフォルトの名無しさん :2018/01/25(木) 20:53:14.29 ID:uboI0CmN0.net
省略しないこと。それが賢いプログラムスタイル。

708 :デフォルトの名無しさん :2018/01/25(木) 21:11:21.97 ID:LWlSA0E2a.net
>>706
知らんけどこの辺?
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/statements-expressions-operators/statements#embedded-statements

709 :愛知人:2018/01/25(木) 22:57:58.27 .net
PictureBoxのMouseMoveイベントハンドラ内にInvalidate()を入れるとTimerのTickが止まります。何故ですか?
https://ideone.com/fWNMPP

710 :デフォルトの名無しさん :2018/01/25(木) 22:59:36.29 ID:867zoX3ca.net
コード見てないけど
そんな暴れん坊見たいことはしないほうがいいと思う

711 :愛知人:2018/01/25(木) 23:02:00.73 .net
マウスの位置をフィールドに入れて間隔の短いタイマーで描画しますか?

712 :デフォルトの名無しさん :2018/01/26(金) 01:44:30.98 ID:TUeBIint0.net
すみません質問です。
C#でエクセルを複数起動させるプログラムを書いているのですが、解決できない問題があります。
例えば既にa.xlsxが開かれていて、追加で3つのエクセルファイル(b.xlsx, c.xlsx, d.xltm)を立ち上げるとします。
その場合、process.start("excel", "b.xlsx c.xlsx d.xltm");
とすると、a~dまでが一つのプロセスにまとまるのはいいのですが、テンプレートが編集モードで開いてしまいます。
仕方ないので、
process.start("excel", "b.xlsx c.xlsx");
process.start("d.xltm");
とテンプレートだけ"excel"を抜いて起動すると、ちゃんとテンプレートは新規ファイルで開かれますが、プロセスが3つに分かれてしまいます・・[a.xlsx], [b.xlsx, c.xlsx], [d1]
(何故かa.xlsxまで孤立しちゃうんですよね・・・)

色々試したところ、
process.start("excel", "b.xlsx c.xlsx");を実行して一度処理を終了させた後(この時点ではa~cが一つのプロセスになっている)、
また起動し直しでprocess.start("d.xltm");を単独実行させると、a~cと同じプロセスにdが加わってくれました。
であれば、全部起動完了待ちすればうまくいくか?と思って、
Process p = new Process();
p.StartInfo.FileName = "excel";
p.StartInfo.Arguments = "b.xlsx c.xlsx";
p.Start();
p.WaitForInputIdle();
p.StartInfo.FileName = "d.xltm";
p.Start();
と、インスタンスを作ってからp.WaitForInputIdle();を加えたうえで実行させると、
プロセスは3つじゃなく今度は2つにまとまりましたが、一つになってくれませんでした・・。
[a.xlsx, b.xlsx, c.xlsx], [d1]
という具合で、何れにせよテンプレートだけプロセスが分かれちゃいます。

色々試しましたが、テンプレートファイル含む複数のエクセルファイルを、テンプレートファイルは新規ファイルとして開きつつ、全て一つのプロセスとして起動させる方法が分かりませんでした・・

方法があれば教えてくださいお願いいたします(m_m)

713 :712 :2018/01/26(金) 02:02:53.98 ID:TUeBIint0.net
712です。
p.WaitForInputIdle();
の後に、System.Threading.Thread.Sleep(1000);
を強引に追加したら上手くいきました・・。
(うまくいったというのはつまり、
a.xlsxだけが最初に開いてあって、
b.xlsx, c.xlsx, d.xltmをC#で開いた時、a~dまで一つのプロセスにまとまり、
d.xltmも新規ファイルで開いてくれたという事です)
でもこれ、絶対正規の解決方法じゃないですよね?
きっともっといい方法ありますよね?・・
ご教授下さい。お願いいたします。

714 :愛知人:2018/01/26(金) 02:18:07.66 .net
長すぎて目が回る

715 :デフォルトの名無しさん :2018/01/26(金) 02:55:01.83 ID:o5aK9JZ1a.net
>>712
コマンドラインオプションで"/t"でも指定してみるとか
知らんけど
https://support.office.com/ja-jp/article/Microsoft-Office-%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-079164cd-4ef5-4178-b235-441737deb3a6#ID0EAABAAA=Excel

オートメーションでやった方がいいんじゃないの?

716 :デフォルトの名無しさん :2018/01/26(金) 05:52:15.43 ID:YXUTlXJp0.net
>>713
システムハングアウトなめんな。
スリープは大事。

717 :712 :2018/01/26(金) 12:19:07.12 ID:TUeBIint0.net
>>715
オートメーションってつまり、コムオブジェクト使うって事ですかね?
ちょっと調べてみます。
>>716
スリープも効果的に使えば立派なコードですかね!
ミリ秒時間の調整行って、確実に上手くいく範囲で秒数縮めてみようかと思います。
もっといい方法見つかればそれで実装しますが、それまでスリープで対応しようかと思います。
有難うございました。

718 :デフォルトの名無しさん :2018/01/26(金) 17:21:24.22 ID:YG13MR3r0.net
Form1のデータから、Form2を呼び起こして、
Form2のPrintDocument1_PrintPageを印刷しています。

Form2を閉じて、2回目にForm1から別のデータを印刷すると、
DrawStringで印刷したデータが重複してしまいます。

PrintDocument1_PrintPageを初期化するような方法はないでしょうか?

719 :デフォルトの名無しさん :2018/01/26(金) 17:29:15.32 ID:SCIRVI+W0.net
getcommandlineargs()で引数を渡すと
スペースとダブルクォーテーションが消えてしまいますがどうすればいいですか?
大文字にしても消えます

720 :愛知人!id:ignore :2018/01/26(金) 17:36:10.53 ID:56XeCPud0.net
>>718
意味不明

721 :愛知人:2018/01/26(金) 17:41:29.04 .net
>>719
ダブルクォーテーションは""に置き換える
スペースの入った文はダブルクォーテーションで囲む

722 :デフォルトの名無しさん :2018/01/26(金) 18:01:50.81 ID:SCIRVI+W0.net
>>719
すいませんかんちがいしました

723 :デフォルトの名無しさん :2018/01/26(金) 18:48:32.92 ID:AIK2YVo40.net
>>708
ありがとう
自分でやってみた結果
埋め込みステートメントができるのは

do,if,else,fixed,for,foreach,lock,using,while

だった

724 :愛知人:2018/01/27(土) 13:34:52.88 .net
pictureBoxに線を引いたり色々描画した後に指定位置のピクセルの値を取得する方法はありますか?
CopyFromScreen?を使うしかないですか?

725 :愛知人:2018/01/27(土) 13:48:07.76 .net
>>724は取り消し

726 :デフォルトの名無しさん :2018/01/28(日) 00:10:09.85 ID:fNHvxuhr0.net
(12345).ToString("D8") = "00012345"
だけど、”    12345"にする方法はないのか?

727 :デフォルトの名無しさん :2018/01/28(日) 00:27:28.05 ID:89noKjbb0.net
>>726
0を半角スペースにしたいならPadLeft(桁数)でいいんじゃね

728 :デフォルトの名無しさん :2018/01/28(日) 08:12:58.16 ID:fNHvxuhr0.net
なるほど
" 123"
" 123.0"
" 123.00"
~
みたいなのをformat登録しておいて一括処理したいんだが,,,,
PadLeftをつかうには、独自フォーマットを作って解析して分解するひつようがあるな。
"8,D","12,F1","10,F2","10,F3","8,D"
これをSplitで分解して桁と表示にわけるとできる。みんなこんなことをやってるんだろうか?

729 :デフォルトの名無しさん :2018/01/28(日) 09:10:44.54 ID:KQzDOLbA0.net
設計ミスだな
出力の幅なんて最終的な出力の段階で自ずと決まるもんだろ
普通そんなもん必要ない

730 :デフォルトの名無しさん :2018/01/28(日) 10:28:13.08 ID:6EjFtDvJ0.net
文字列は空白埋めできたような
Formatを2回する
あるいはカスタムフォーマッタを作成

731 :デフォルトの名無しさん :2018/01/28(日) 11:07:52.48 ID:DjJaMqeu0.net
String.Format("{0,8:d}", 12345);

732 :デフォルトの名無しさん :2018/01/28(日) 12:35:12.10 ID:fNHvxuhr0.net
>設計ミスだな

ToStringとString.Formatでいちいち仕様を変えるなんざ設計ミスもいいとこだ。

733 :デフォルトの名無しさん :2018/01/28(日) 12:45:46.83 ID:Tf1PDahga.net
別物を同じように思う脳がおかしい

734 :デフォルトの名無しさん :2018/01/28(日) 13:15:50.33 ID:ExF5GMWy0.net
$"{12345,8} 6.0になってからString.Formatを使わなくなったな

735 :デフォルトの名無しさん :2018/01/28(日) 13:38:54.52 ID:fNHvxuhr0.net
>>734
残念。VS2013ではそのスタイルは動かんな。

736 :デフォルトの名無しさん :2018/01/28(日) 13:44:27.34 ID:AvNbdCpkM.net
最新のVSって毎週バージョンが上がってて、アップデートしたら突然ビルドが通らなくなったりとか時々あるんだよね
自社開発でパパっと対応できる体制の開発が前提になってて、もうジャパニーズドカタには手を出せない代物

737 :デフォルトの名無しさん :2018/01/28(日) 13:50:09.26 ID:FrmPXjIGa.net
質問者が何言ってるのか俺にはさっぱりわからんけどみんなよく分かるなw

738 :デフォルトの名無しさん :2018/01/28(日) 13:51:15.96 ID:N5xGT/cM0.net
HAP使ってますか?

739 :デフォルトの名無しさん :2018/01/28(日) 13:51:41.80 ID:Tf1PDahga.net
俺も正しい意味はわからないけど憶測で判断してる

文章も書けないくらい幼稚だけど偉そうなレスしてるとだけわかる

740 :デフォルトの名無しさん :2018/01/28(日) 13:54:41.80 ID:8+IXgyMg0.net
お前もやろがw

741 :デフォルトの名無しさん :2018/01/28(日) 13:56:13.99 ID:Tf1PDahga.net
>>728
これが特に意味不明だけど考えてわかるレベル

>>735
これが偉そう

742 :デフォルトの名無しさん :2018/01/28(日) 14:11:02.89 ID:fNHvxuhr0.net
List<string> a = new List<string> {
"x3" ,
"x4" ,
"x5" ,
"x6" ,
"x7" ,
"x8" ,
};
foreach (string el in a)
{
combox1.Items.Add(el);
}

combox1の初期化ってこんな方法しかないのか? 直接は初期化できんのか?

743 :デフォルトの名無しさん :2018/01/28(日) 14:12:38.19 ID:fNHvxuhr0.net
>>236
ちゃうちゃう、$”  { valuえ} ”の記述はVs2017しかサポートしとらん。

744 :デフォルトの名無しさん :2018/01/28(日) 14:15:41.42 ID:Jve/QRxt0.net
AddRange()使えば

745 :デフォルトの名無しさん :2018/01/28(日) 14:15:49.45 ID:EAfEAz/a0.net
>>742
デザイナのコード見ろよ。あれが基本だ

746 :デフォルトの名無しさん :2018/01/28(日) 14:16:07.45 ID:Tf1PDahga.net
配列でAddRange初期化出来なかった?

747 :デフォルトの名無しさん :2018/01/28(日) 14:43:45.42 ID:fNHvxuhr0.net
Addrange でできた。サンクス。

748 :デフォルトの名無しさん :2018/01/28(日) 15:01:38.15 ID:fNHvxuhr0.net
int w = (int)((double)pic.Width / (double)(1 + x ) / 1.3);
doubleとintを混在するときにdoubleに自動的に型推論する機構ってないの?
いちいちキャストするのはメンドクサイよな。

749 :デフォルトの名無しさん :2018/01/28(日) 15:44:15.18 ID:AvNbdCpkM.net
>>748
int w = (int)(pic.Width / (1.0 + x ) / 1.3);
でいけるはず

750 :デフォルトの名無しさん :2018/01/28(日) 16:53:15.56 ID:fNHvxuhr0.net
あっ、ほんとだ。いけた。ありがとう。

751 :デフォルトの名無しさん :2018/01/28(日) 17:12:56.15 ID:fNHvxuhr0.net
Fontをファイルに保存したい。この場合name,style,sizeに分解して保存するのだろうか?
他に何かいい方法は?

752 :デフォルトの名無しさん :2018/01/28(日) 17:14:48.84 ID:WjjZpgjO0.net
>>745
バーカw

753 :愛知人 :2018/01/28(日) 17:18:54.87 ID:X+CD44G50.net
>>751
多分VSのアプリケーション設定のところでシリアライズして保存できるようにできる

754 :デフォルトの名無しさん :2018/01/28(日) 17:20:49.97 ID:EAfEAz/a0.net
>>751
もう少し意味が通じるようにまとめろよ
Font.Familyname:string
FontStyle:int
FontSize:float(single)

755 :愛知人 :2018/01/28(日) 18:07:26.86 ID:QV+bfV+F0.net
これな
https://i.imgur.com/ZyRzEn7.png

これで保存
Properties.Settings.Default.*** = font;
Properties.Settings.Default.Save();

これで読み出し
var font = Properties.Settings.Default.***;

ユーザーのアプリケーションデータフォルダの中にxmlで保存されるようになってる

756 :デフォルトの名無しさん :2018/01/28(日) 20:22:00.44 ID:DjJaMqeu0.net
var conv = TypeDescriptor.GetConverter(typeof(Font));
var text = conv.ConvertToString(font);
font = (Font)conv.ConvertFromString(text);

757 :デフォルトの名無しさん :2018/01/28(日) 20:23:59.60 ID:fNHvxuhr0.net
それがあるのは知っていたけど、Settingsってそんなふうに使うのか。初めて知った。
便利そう。ありがとう。

前に設定してみたけど、ビルドすると直ぐに消えてしまうので、どうやって使うのか
わからなかった。

758 :デフォルトの名無しさん :2018/01/28(日) 20:29:18.90 ID:siYtS87s0.net
>>757
バージョンアップすると設定が消えちまうのは仕様です
で、https://qiita.com/hbsnow/items/0d19910a46bb6d902cd5のように回避します

759 :デフォルトの名無しさん :2018/01/28(日) 21:15:10.28 ID:fNHvxuhr0.net
Properties.Settings.Default.DispFont = lblFont.Font ;
エラー 1 プロパティまたはインデクサー 'Properties.Settings.DispFont' は読み取り専用なので、割り当てることはできません。

フォントはリードオンリーになるので設定は無理ぽい。

760 :デフォルトの名無しさん :2018/01/28(日) 21:47:20.89 ID:Tf1PDahga.net
それコピーした?
なんかおかしいけど?

761 :愛知人:2018/01/28(日) 23:47:37.92 ID:QV+bfV+F.net
>>759
え〜。こっちだと問題ないよ〜
https://i.imgur.com/WY2Y4Qb.png

762 :デフォルトの名無しさん :2018/01/29(月) 00:40:38.31 ID:YDWVgvG40.net
>>761
スコープのところをアプリケーションにしたのが間違いだった。ユーザーにしたら
いけた。

でも暫くやって意味がわからなかったので結局はJson.netを使って保存した。
クラスをそのままシリアライズしたらFontもなにもかも一切合切勝手にシリアライズ
してくれた。W
これは分かりやすい。一発でわかった。

763 :愛知人:2018/01/29(月) 01:03:38.61 ID:pcTu+bOr.net
だよなぁ〜

764 :デフォルトの名無しさん :2018/01/29(月) 01:50:11.03 ID:0ju9RGha0.net
class 年齢 {
public string 名前{ get; set; }
public int 年齢{ get; set; }
}
List<年齢> 年齢リスト = new List<年齢>();
このような年齢型の年齢リストがあったとして、
年齢が21のリストだけを抽出したい場合、ラムダ式ではどのように書けば良いのでしょうか?

765 :愛知人:2018/01/29(月) 01:56:46.26 ID:pcTu+bOr.net
list.FindAll(x=>x.年齢==21)

766 :デフォルトの名無しさん :2018/01/29(月) 02:06:43.62 ID:0ju9RGha0.net
>>765
ありがとうございます。明日試してみます!

767 :デフォルトの名無しさん :2018/01/29(月) 06:31:31.02 ID:1VUu5V2b0.net
>>761
関係ないけどフォントって何?

768 :>>767 :2018/01/29(月) 06:32:39.08 ID:1VUu5V2b0.net
あ、VSの表示に使っているフォントね

769 :愛知人:2018/01/29(月) 13:34:43.26 ID:pcTu+bOr.net
メイリオ

770 :デフォルトの名無しさん :2018/01/29(月) 16:33:40.56 ID:FA24LoNZ0.net
配列の要素すべてが0もしくは1000でなかったらという論理式を書きたいのですが

771 :デフォルトの名無しさん :2018/01/29(月) 16:59:53.70 ID:p1yk/NdGa.net
で、っていう

その文章、「でない」がどう掛かるのかあいまいで二通りの解釈が可能だから、
解釈の余地がなくなる別の表現を工夫した方がいいと思うよ

772 :愛知人:2018/01/29(月) 17:05:56.81 ID:pcTu+bOr.net
>>770
arr.All(x=>x!=0&&x!=1000)

773 :デフォルトの名無しさん :2018/01/29(月) 17:42:29.88 ID:vA4dMQ1gM.net
>>771
ドキュメントでよくあるよなこれ
この種のミスをする奴は何度注意しても直らないんだよ

774 :愛知人:2018/01/29(月) 18:26:02.43 ID:pcTu+bOr.net
反射的にレスしてすまん
たしかに2通りあるな

775 :デフォルトの名無しさん :2018/01/29(月) 18:58:15.23 ID:z90g+lRG0.net
ねえわwリアルでもこんなアスペばかりで困るけどなw

776 :愛知人:2018/01/29(月) 19:04:54.22 ID:k6Igz8nX.net
arr.All(x=>!(x==0||x==1000))
!arr.All(x=>x==0||x==1000)

777 :デフォルトの名無しさん :2018/01/29(月) 19:08:04.50 ID:vO9vHw7qM.net
日本語で書くから間違える
最初からコード書けばいいのにね

778 :デフォルトの名無しさん :2018/01/29(月) 19:10:08.17 ID:CbBWbMhk0.net
>>775
お前の読解力が絶望的だってのはわかった

779 :デフォルトの名無しさん :2018/01/29(月) 19:48:59.46 ID:4EZh8ZpyM.net
>>777
なるほど、つまり>>770は、

arr.All(x=>!(x==0||x==1000))
を書きたいのですが

もしくは、

!arr.All(x=>x==0||x==1000)
を書きたいのですが

と質問すべきだったと。
確かにこれなら解釈が割れる心配ないね!

780 :デフォルトの名無しさん :2018/01/29(月) 20:09:39.08 ID:Ml84jtHT0.net
anyのことも、偶には思い出してやって下さい

781 :愛知人:2018/01/29(月) 21:07:54.20 ID:pcTu+bOr.net
解ってます

782 :デフォルトの名無しさん :2018/01/31(水) 06:50:26.36 ID:ywuJndNd0.net
>>689
どーせ、CreateCompatibleDCみたいな話

783 :デフォルトの名無しさん :2018/01/31(水) 07:23:04.73 ID:NBRruYI30.net
>>782
それどっかにまとめないかな?

784 :デフォルトの名無しさん :2018/01/31(水) 12:33:39.58 ID:Hr5M/E+Xa.net
初心者だからわからないんだろうけど
そういうリソース系は数量をチェックしても無駄だよ

チェックした時点で大丈夫かもしれないけど
使うとき限界に達してるかもしれない
どこも保証しない
実行して失敗なら失敗

785 :デフォルトの名無しさん :2018/01/31(水) 12:36:13.73 ID:Hr5M/E+Xa.net
鉛筆の数をチェックしてあまり1本あっても自分が使うまでのわずかな間に
別のアプリがその鉛筆を使うと自分は使えない

786 :デフォルトの名無しさん :2018/01/31(水) 12:37:16.98 ID:202u6MlTM.net
開放のルールがワカンネ

787 :デフォルトの名無しさん :2018/01/31(水) 12:40:26.06 ID:Hr5M/E+Xa.net
いきなり鉛筆をつかもうとする
つかめなかったらwindowsは異常な事態になってるので回復は不能
アプリを落とす

自分で鉛筆を使ってる場合使わなくなったら即座に開放
たったこれだけ

788 :デフォルトの名無しさん :2018/01/31(水) 12:51:37.68 ID:YgPJ7UgLD.net
c♯固有の話では無いですがインターフェースのファイルとクラスのファイルは一般的に同じフォルダに入れてるのでしょうか?

インターフェース用フォルダ、抽象クラス用フォルダ、クラス用フォルダと分けた方が見やすいとかあるのかなと思いまして

789 :デフォルトの名無しさん :2018/01/31(水) 12:54:49.47 ID:Hr5M/E+Xa.net
c#固有じゃないとは言い切れない

ご自由にというか
その時のルールがあるならそれに従えばいい
c#はjavaのようにフォルダ構造が名前空間じゃないから

790 :デフォルトの名無しさん :2018/01/31(水) 13:01:03.78 ID:5zei4l0gM.net
>>788
普通は名前空間に合わせる
ソースにオリジナリティを出すな

791 :デフォルトの名無しさん :2018/01/31(水) 18:20:28.08 ID:SANOK0fjM.net
>>790
なるほど名前空間で別けるのですね

独学初心者には思いもつきませんでした
参考になります

792 :デフォルトの名無しさん :2018/01/31(水) 18:51:07.07 ID:K5Al/IGma.net
いや、それは単にVSがそういう前提で作ってある(ソリューションエクスプローラから
新規にファイルを作った時のスケルトンの名前空間がプロジェクトの規定の名前空間に
フォルダ階層がくっついたものになる)ってだけの話で、別に必要なら単に分類のために
フォルダ作ってもいいと思うよw

そんなケースはあんまりないとは思うけど

793 :デフォルトの名無しさん :2018/01/31(水) 19:49:36.61 ID:Hr5M/E+Xa.net
そういう前提には作ってないよ
設定があってチェック外せばどのフォルダで作っても同じ名前空間になる

794 :愛知人:2018/01/31(水) 19:50:28.99 .net
このエラーの原因が分りません、教えてください(>_<)
https://i.imgur.com/0hN1rC0.png

795 :デフォルトの名無しさん :2018/01/31(水) 19:52:10.31 ID:Hr5M/E+Xa.net
>>794
スペルミス
クラス名見てみろ

796 :愛知人!id:ignore :2018/01/31(水) 19:54:02.69 ID:3eBSylxa0.net
>>795
ありがとうございます!

797 :デフォルトの名無しさん :2018/01/31(水) 19:54:19.37 ID:Ul/zaXpy0.net
>>794
マゲガー

798 :デフォルトの名無しさん :2018/01/31(水) 19:58:03.82 ID:Hr5M/E+Xa.net
おかしいと思ったらコピーして検索してみろ

799 :デフォルトの名無しさん :2018/01/31(水) 20:41:19.03 ID:6Q7+onpXM.net
>>798
最大で140℃くらいまでしか開かないので、コピー機に入りません(>_<)

800 :デフォルトの名無しさん :2018/01/31(水) 21:11:48.89 ID:uhY/QizFd.net
>>783
昔、GDI+とMFC or Win32APIから.netに移行する表とその説明があったけど、検索で調べきれないわ。

さかのぼると、WM_PAINT, BeginPaintとか古典的な描画APIとかの話になるから

今、ディスプレイドライバーのソースを見てるけど、なかなか説明が難しいわ

ごめんなさいね

801 :デフォルトの名無しさん :2018/02/01(木) 03:40:13.00 ID:J9JLK/T20.net
デバイスコンテキストの説明になんでドライバまで降りるねん。

802 :デフォルトの名無しさん :2018/02/01(木) 04:01:11.67 ID:XxNDw1fe0.net
最近この板変な人が多いの

803 :デフォルトの名無しさん :2018/02/01(木) 07:50:14.98 ID:jtx9E0YE0.net
知識をひけらかしたいだけでしょ

804 :デフォルトの名無しさん :2018/02/01(木) 11:30:02.30 ID:DhFBeVpNa.net
非常に単純化した話として
windowsは特定のリソースを数字で管理してるけど
その数字の上限が決まってる

管理してる空きがないと確保できない
単純な話

出来ないものはできない
それだけ
何も難しくない

805 :デフォルトの名無しさん :2018/02/01(木) 11:31:56.97 ID:DhFBeVpNa.net
だから使わなくなったらすぐに解放しておけばいい
それだけ
何も難しいことはないけど馬鹿がこねくり回して難しい難しい言ってるだけ

サンプルソースで開放してないのは1個ぐらいもれてても実害はないから

実装する際は自分で実装したらいい

806 :デフォルトの名無しさん :2018/02/01(木) 12:00:06.18 ID:1x8PgmKV0.net
実はウンコもちょっとくらいもれてても実害はない。お前のパンツは飾りか?

807 :デフォルトの名無しさん :2018/02/01(木) 12:09:28.60 ID:jtx9E0YE0.net
パンツに漏れてるウンコなら気にしちゃうけど
公園の片隅に置いてあるウンコは無視しちゃう

808 :デフォルトの名無しさん :2018/02/01(木) 12:23:03.42 ID:0snSQv2vr.net
気にしたやつが負け

809 :愛知人:2018/02/01(木) 22:50:11.02 .net
WinFormsの自作Componemtでデータをネットから取得するメソッドで、完了と失敗のイベントを実装するのは普通ですか?

810 :デフォルトの名無しさん :2018/02/02(金) 00:11:33.54 ID:JsFuCwNz0.net
問題ないと思うが、今の流行りならasync Task<Hoge>等で結果返すパターンかな

811 :デフォルトの名無しさん :2018/02/02(金) 00:34:30.18 ID:cT4GbCx9M.net
コールバック地獄は嫌だ

812 :愛知人!id:ignore :2018/02/02(金) 00:51:28.62 ID:jGftTsx+0.net
ありがとうございます(>_<)

813 :デフォルトの名無しさん :2018/02/02(金) 08:11:51.44 ID:prG6i1oZ0.net
>>801
ごめんね。

低レベルでアロケータがどうなってるのか気になって。
( ノД`)…

814 :デフォルトの名無しさん :2018/02/02(金) 11:49:47.51 ID:BMFcc+go0.net
U+2028/2029に初めて遭遇したんだが
文字列を1文字ずつ走査して IsSeparator が true だったら削除して詰める、って関数ない?

815 :デフォルトの名無しさん :2018/02/02(金) 12:19:04.07 ID:dTcbVnf+r.net
秒で書けるのによくそんな事質問する気になるな
気が長いやつだ

816 :愛知人:2018/02/02(金) 12:29:56.98 .net
>>814
Replace

817 :デフォルトの名無しさん :2018/02/02(金) 12:34:09.95 ID:BMFcc+go0.net
また拡張メソッドが増えた

818 :愛知人:2018/02/02(金) 12:37:13.44 .net
区切り文字を削除したいシチュエーションなんか普通はないしな
知らんけど

819 :デフォルトの名無しさん :2018/02/02(金) 12:38:34.03 ID:BMFcc+go0.net
ところで拡張メソッドって参照されないんだっけ?

public static System.Data.SqlClient.SqlCommand CreateCommand(this System.Data.SqlClient.SqlTransaction SqlTransaction)
{
  var SqlCommand = SqlTransaction.Connection.CreateCommand();
  SqlCommand.Transaction = SqlTransaction;
  return SqlCommand;
}

BeginTransaction した後のトランザクションを使って CreateCommand すると
トランザクションの内側に入る、的な糞メソッドを作ったんだけど
どうやら、トランザクションの外側になっちゃうっぽいんだ。
→ Rollback しても戻らない
→ ブレークポイントしながら見てると、トランザクション自体が開始されていない

ref this で解決するかと思いきやクラスはダメで使えない
VB.NET だと普通に出来ちゃうと聞くが

820 :愛知人:2018/02/02(金) 19:36:31.54 .net
コードでコントロールのプロパティを規定値(DefalutValue属性の値)にリセットする方法はありますか?(>_<)

821 :デフォルトの名無しさん :2018/02/02(金) 19:54:02.62 ID:UX+Yt5X5M.net
PropertyDescriptor(ctrl).GetProperties()[nameof(ctrl.Property)].ResetValue();

822 :デフォルトの名無しさん :2018/02/02(金) 19:54:48.71 ID:UX+Yt5X5M.net
あ、.ResetValue(ctrl)だった

823 :愛知人!id:ignore :2018/02/02(金) 20:50:42.32 ID:jGftTsx+0.net
ありがとうございます(>_<)

824 :デフォルトの名無しさん :2018/02/02(金) 21:57:28.18 ID:Zl28+evz0.net
c#っぽい独自言語の解析をしてるんですが
コメントの「//」や「/*」「*/」の解析って
ダブルコーテーション内と外ってどうやって判断したらよいでしょうか?

825 :デフォルトの名無しさん :2018/02/02(金) 21:59:32.04 ID:z7oDIr3g0.net
スタックに積む

826 :デフォルトの名無しさん :2018/02/02(金) 22:38:26.26 ID:dT49NCpma.net
>>824
やり方次第

作ったことあるのでわかりやすいのは文法をのままコードにする
頭から呼んでって状態を覚えておく

文字リテラル内は解析しないでエスケープルールや”の監視だけする

//や/*コメントの時は行末まで読み捨て

827 :デフォルトの名無しさん :2018/02/02(金) 22:39:44.98 ID:dT49NCpma.net
間違い

/*は*/を読み捨てしたらダメだなw

828 :デフォルトの名無しさん :2018/02/02(金) 22:40:01.25 ID:pft3AbU10.net
パーサジェネレータ使えよ

829 :デフォルトの名無しさん :2018/02/02(金) 22:48:59.30 ID:Zl28+evz0.net
>>826
それがわからない
文字列リテラルなのかコメントなのか判断できない
ダブルコーテーションから判定するとそれがコメントだったとき駄目
コメントから判定するとそれが文字列リテラルだったとき駄目
っていうパラドックス

830 :デフォルトの名無しさん :2018/02/02(金) 22:52:11.72 ID:dT49NCpma.net
>>829
それは変なやり方してるからだろ
おおかた正規表現などで判定してるんだろう

コードを頭から読んでできないのは
文法がおかしいかパースのやり方がおかしいからだ

831 :デフォルトの名無しさん :2018/02/02(金) 22:56:57.54 ID:dT49NCpma.net
急がないならどれかの言語のコードでもじっくり読んで勉強したらいい
大体の言語はオープンソースなので好きなのをやればいい
ただしc++の知識ぐらいはいる

急ぐならテストパターンを十分に用意して手あたり次第やればいい

832 :デフォルトの名無しさん :2018/02/02(金) 23:08:58.70 ID:Zl28+evz0.net
>>830
やけっぱちで
解析のコメント削除時に「//」か「/*」見つけたら同じ行の前側みて
文字列リテラル中かどうかみる処理入れて乗り切ってみた

833 :デフォルトの名無しさん :2018/02/02(金) 23:10:39.49 ID:z7oDIr3g0.net
>同じ行の前側みて
うん、かなり無茶苦茶だな
先頭から順に読んでいって、「今は文字列リテラル中」とか「今はコメント中」とかの状態を保持しておけよ

834 :デフォルトの名無しさん :2018/02/02(金) 23:15:27.28 ID:dT49NCpma.net
独自言語の解析してるんだろ?

他の部分が出来てるなら
普通に頭から読んでって "が出たらリテラルフラグオンにして
//が出たら行末まで読み捨て
/*だったら次の*/がでるまで捨てるだけ

何も難しくない

835 :デフォルトの名無しさん :2018/02/02(金) 23:17:24.91 ID:dT49NCpma.net
文字が抜けた

"が出たらリテラルフラグオンにして仕様通りリテラルを最後まで読み切るだけ

836 :デフォルトの名無しさん :2018/02/02(金) 23:18:02.29 ID:HOyQOl0G0.net
独自言語が逐次実行される前提で話してるな

837 :デフォルトの名無しさん :2018/02/02(金) 23:18:46.57 ID:z7oDIr3g0.net
もしかして、1文字ずつじゃなく1行ずつ読み込んでるんじゃないだろうな

838 :デフォルトの名無しさん :2018/02/02(金) 23:22:20.25 ID:z7oDIr3g0.net
>>836
逐次実行じゃなくても、頭から順に読むのは同じだよ
読んだ物を構文木に積んでいって、評価・実行は最後にやれば良いだけ

839 :デフォルトの名無しさん :2018/02/02(金) 23:24:38.81 ID:yHy9QEH1a.net
>>829
難しく考えすぎでしょう。
>>826が言ってるのはたぶん単純なステートマシン。

enum State
{
  トークン探索中,
  文字列検出中,
  インラインコメント検出中、
  ....
}

stateを表すenumを定義して、stateの値に応じて動作を変えるだけ。
文字列リテラルの始め「"」やコメントの始まりを検出するのはstate = State.トークン探索中の時だけ。
素朴すぎるやり方だと思うが、少なくともこれでそんなパラドックスには陥らない

840 :デフォルトの名無しさん :2018/02/02(金) 23:24:41.10 ID:dT49NCpma.net
>>832
本当にめちゃくちゃだな
前方見ても意味ない
確定するためには本当に最初までさかのぼることになる

841 :デフォルトの名無しさん :2018/02/02(金) 23:24:55.99 ID:ErA95Rap0.net
>>834-835で答えが出てるのでこれ以上はスレの無駄遣い

842 :デフォルトの名無しさん :2018/02/02(金) 23:27:13.14 ID:HOyQOl0G0.net
>>838
横ぐるまを押したか

843 :デフォルトの名無しさん :2018/02/03(土) 00:00:03.20 ID:S/Wa3aFw0.net
>>840
大丈夫だよ
文字列リテラルって2行続かないじゃん確か

844 :デフォルトの名無しさん :2018/02/03(土) 00:06:47.29 ID:pHRpw+FT0.net
>>843
そんなのはルール次第

845 :デフォルトの名無しさん :2018/02/03(土) 00:15:01.77 ID:NdjAbgSB0.net
例えばC#なら@""で改行入れられるし

846 :愛知人!id:ignore :2018/02/03(土) 00:17:09.98 ID:GkUi/Itq0.net
そのときだけ行またげばいいだけだし

847 :デフォルトの名無しさん :2018/02/03(土) 00:34:25.55 ID:S/Wa3aFw0.net
>>845
ぎゃああああ
出来やがった

既存コードが解析の初っ端でコメント削除からやってるから
弄りたくなかったけど
いよいよ駄目だな

848 :デフォルトの名無しさん :2018/02/03(土) 00:38:09.24 ID:AuUEv0AE0.net
知らんかったんかいw

コメントは削除するんでなく、「読み捨てる」んだ

849 :デフォルトの名無しさん :2018/02/03(土) 00:41:40.01 ID:S/Wa3aFw0.net
>>848
いや、似非c#だからそんなことできんだろと

850 :デフォルトの名無しさん :2018/02/03(土) 00:53:02.56 ID:PxR3gYBlM.net
ヒアドキュメントを除いたとしてもしソースの先頭の/*をどうやってみつける?
状態を持たないならソースの頭までさかのぼるしかない

851 :デフォルトの名無しさん :2018/02/03(土) 00:58:38.87 ID:S/Wa3aFw0.net
>>850
いや、今のルーチンはコメントの削除からやってるのよ

852 :デフォルトの名無しさん :2018/02/03(土) 01:03:27.72 ID:OVqIgYtY0.net
コメントも文字列も先に始まったほうが勝つからどうしょうもない

853 :デフォルトの名無しさん :2018/02/03(土) 01:06:21.86 ID:PxR3gYBlM.net
質問しといて聞かないパターン=成長しない初心者パターン

854 :デフォルトの名無しさん :2018/02/03(土) 01:12:38.71 ID:xyf2cJ8Ka.net
ただ悩みを聞いて欲しかったんじゃないですか
女の相談事みたいなw
まあ、どうせ人も減ってるしそれもありでしょう

855 :デフォルトの名無しさん :2018/02/03(土) 01:24:32.23 ID:S/Wa3aFw0.net
>>853
いや、アドバイス通り
頭から読んでいくしかないっぽいっすね
クレームが来てるところがまさにそこなので誤魔化しが効かない

856 :デフォルトの名無しさん :2018/02/03(土) 08:34:38.62 ID:WhjNgY2U0.net
>>854
お姉さんが聞いてあげるわ。
今夜、川口駅リリア側の出入り口で待ってる

857 :デフォルトの名無しさん :2018/02/03(土) 09:02:44.63 ID:LvTBogUR0.net
swich() { case xxxx: ~
xxxxに変数をつかいたいのだが、switchに変わるものってなに?

858 :デフォルトの名無しさん :2018/02/03(土) 09:33:50.59 ID:NdjAbgSB0.net
if

859 :デフォルトの名無しさん :2018/02/03(土) 09:53:42.04 ID:nKXUpnsB0.net
>>857
xxxが数値か文字列なら変数だろうと使えたはずです。オブジェクトの場合、同値の判定が基本型のように単純じゃないから無理。

860 :デフォルトの名無しさん :2018/02/03(土) 10:50:39.85 ID:LvTBogUR0.net
switchi( (button)sender) ){
case Button1: ~
case Button2:~
case Button3:~
}
こんな感じのことがしたい。

〜はMethod()でいいので、
void switch_tb()= {
{Button1, Method1}
{Button2, Method2}
{Button3, Method3}
}
switch_suru((button)sender);
こんなことできんか? 

861 :デフォルトの名無しさん :2018/02/03(土) 10:52:21.97 ID:LvTBogUR0.net
C#はメソッドの中のローカルメソッドってできへんの?

862 :デフォルトの名無しさん :2018/02/03(土) 11:00:14.66 ID:VOrllN0n0.net
>>860
素直にButtonのNameプロパティ使え

863 :デフォルトの名無しさん :2018/02/03(土) 11:01:41.64 ID:Ns10a1iN0.net
>>861
C#7で出来るようになったよ

864 :デフォルトの名無しさん :2018/02/03(土) 11:41:19.78 ID:ZFgrbY8z0.net
糞化が止まらないのか。

865 :デフォルトの名無しさん :2018/02/03(土) 12:15:40.34 ID:7uT3RC1La.net
メソッド内メソッドは無くてもいい機能
メンバー封じ込めの方法はいくらでもあるし

ないほうがエラー見つけやすいと個人的には思う

866 :デフォルトの名無しさん :2018/02/03(土) 12:24:29.31 ID:LvTBogUR0.net
いい方法をみーつけ

867 :デフォルトの名無しさん :2018/02/03(土) 12:24:59.79 ID:ROxRBp/zr.net
バグだろwなにちょっと誤魔化そうとしてんのw

868 :デフォルトの名無しさん :2018/02/03(土) 12:29:16.06 ID:0dr4TWncd.net
>>864
言語の変化についていけないやつの糞化な

869 :デフォルトの名無しさん :2018/02/03(土) 12:30:20.78 ID:nKXUpnsB0.net
>>860
Buttonと関数のDictionaryでできそう
試してないけどこんな感じでメソッド取ってくれば…

Dictionary<Button, Func<T, TResult>>

870 :デフォルトの名無しさん :2018/02/03(土) 12:31:12.90 ID:7uT3RC1La.net
メソッド内メソッドはjavaでずっと使ってたけど
クラスを小さくしていくと使う場面は限られていく

871 :デフォルトの名無しさん :2018/02/03(土) 12:33:37.55 ID:Iq/kHIZ+0.net
初心者っぽくていいじゃん
「この機能が存在する意味が分からないんですけど、何の役に立つんですか?」
って定番の質問じゃん

872 :デフォルトの名無しさん :2018/02/03(土) 12:40:45.58 ID:ZFgrbY8z0.net
使ってる奴も糞ばっかになったな。新しい機能一つ覚えただけでマウンティングしだすアホとか。
なぜその機能が糞かが理解できない脳みそ。取り巻きからして残念な言語になってしまった。

873 :愛知人:2018/02/03(土) 12:41:41.35 .net
あらら、怒っちゃった(笑)

874 :デフォルトの名無しさん :2018/02/03(土) 12:43:15.80 ID:8oBsvnpG0.net
>>860
上は>>862に追加して
if (sender is Button) switch ((sender as Button).Name)
{
case "button1":
case "button2":
}
isの判定とasのキャストはControlとかToolStripMenuItemでも状況に合わせて

875 :デフォルトの名無しさん :2018/02/03(土) 12:45:57.31 ID:DOsYwXsiM.net
今後も言語仕様はどんどん拡張されるよ
他の言語の有名なのどんどん取り入れてってカオスになっていく

個人的には範囲指定が欲しい
1..5か1:5みたいなの

876 :愛知人:2018/02/03(土) 12:50:20.68 .net
Enumerable.Rangeじゃだめなん?

877 :デフォルトの名無しさん :2018/02/03(土) 12:51:56.63 ID:8eNVn+fl0.net
>>874
せめてnameof使って書けよ

878 :デフォルトの名無しさん :2018/02/03(土) 12:56:57.86 ID:DOsYwXsiM.net
foreach(var i in Enumerable.Range(1,5))

foreach(var i in 1..5)

どっちがいい?

879 :デフォルトの名無しさん :2018/02/03(土) 12:58:29.57 ID:8eNVn+fl0.net
圧倒的に上

880 :デフォルトの名無しさん :2018/02/03(土) 13:02:13.44 ID:kCPWN5tp0.net
>>860
ButtonのTagにやりたいこと突っ込んどけ

881 :デフォルトの名無しさん :2018/02/03(土) 13:06:02.52 ID:DOsYwXsiM.net
いい方法
buttun1.Click=>{Method1();};

882 :デフォルトの名無しさん :2018/02/03(土) 14:17:08.45 ID:ZFgrbY8z0.net
どう書いたらいいか分からないのが糞言語の証左。

883 :デフォルトの名無しさん :2018/02/03(土) 15:26:42.67 ID:LvTBogUR0.net
証左、難しい言葉をしってるね。

>>881
エラー 2 '=>' は無効です。
ってなるが、、、

884 :デフォルトの名無しさん :2018/02/03(土) 15:30:37.45 ID:d68F6UhId.net
>>874
こういう実装を参考にして欲しくないな
コントロールのプロパティを自由に修正できなくなるじゃん

885 :デフォルトの名無しさん :2018/02/03(土) 15:33:25.80 ID:LvTBogUR0.net
var aa = ((Button)sender).Equals(button1) ? func1() :
((Button)sender).Equals(button2) ? func2() :
func2();
これどう?

886 :デフォルトの名無しさん :2018/02/03(土) 15:34:12.79 ID:8oBsvnpG0.net
>>884
ButtonのName変更ってどんな実装に必要なんだよ・・・

887 :デフォルトの名無しさん :2018/02/03(土) 15:39:26.04 ID:LvTBogUR0.net
>ButtonのName変更ってどんな実装に必要なんだよ・・・

最初はBUtton1だろ。出来上がって綺麗に整理するときにbtnSetParamとか分かりやすく書き換える。

888 :デフォルトの名無しさん :2018/02/03(土) 15:40:26.14 ID:8oBsvnpG0.net
>>885
それならEqualsじゃなくてsender==button1?でいいよ。キャストもいらない

889 :デフォルトの名無しさん :2018/02/03(土) 15:40:45.84 ID:LvTBogUR0.net
Button.Nameをつかうくらいなら、Tagに書き込んだ方がまし。

890 :デフォルトの名無しさん :2018/02/03(土) 15:41:39.80 ID:LvTBogUR0.net
>888
あ、そうなん?

891 :デフォルトの名無しさん :2018/02/03(土) 15:43:31.84 ID:d68F6UhId.net
実装後にスペルミスに気付いた、他の画面との兼ね合いで名称を統一することになった、仮の名前をちゃんとした名前に置き換えた、とか色々あるだろ
リフレクションでデータ取得する方針のせいでガチガチに名前が決められている画面を作らされたときの面倒さったらなかったわ

892 :デフォルトの名無しさん :2018/02/03(土) 15:43:52.16 ID:LvTBogUR0.net
キャストしないとインテリセンスがでないから、キャストしたほうがいいよ。

893 :デフォルトの名無しさん :2018/02/03(土) 16:57:11.29 ID:Rh9ysymEa.net
こんなの考えたが、
public class CaseAction
{
  public CaseAction(object @object, Action action)
  {
    Object = @object; Action = action;
  }
  public Action Action { get; private set; }
  public object Object { get; private set; }
}

public static class Extensions
{
  public static void Switch(this object o, params CaseAction[] caseActions)
  {
    caseActions.FirstOrDefault(x => x.Object == o)?.Action();
  }
}

やっぱり使いづらそうだなw

ところで書いててちょっと思ったけど、==演算子の動作って隠蔽(new)と同じように変数の型に
依存するのか、それともオーバーライドと同じようにオブジェクトの型に依存ずるのか、どっちだっけ?

894 :デフォルトの名無しさん :2018/02/03(土) 20:30:42.15 ID:nKXUpnsB0.net
ふと思ったが、ふつうにそれぞれのボタンのイベントに実装したらダメなの

895 :デフォルトの名無しさん :2018/02/03(土) 20:34:51.83 ID:Zh144c7Y0.net
>>894
ほとんど共通でボタン毎にちょっとだけ処理が違うとかじゃね

896 :デフォルトの名無しさん :2018/02/03(土) 21:11:27.96 ID:LvTBogUR0.net
グループボックスにボタンを貼り付けて、それをコピーして貼り付けると、イベントが同じところになるだろ。
だからエディット都合だな。
イベントで分けるのが一番いい方法かもしれない。w

897 :デフォルトの名無しさん :2018/02/03(土) 21:13:35.51 ID:LvTBogUR0.net
再表示するために tabPage1.Controls.Add(grp);で追加したgrpだけをクリアするにはどうしたらいいの?
tabPage1.Controls.Clear(); やるとボタンが消えてしまう。

898 :デフォルトの名無しさん :2018/02/03(土) 21:27:16.93 ID:nKXUpnsB0.net
Controlsプロパティの型はControl.ControlCollectionで
そのクラスのドキュメントを見ましょう。
Remove(Control)というのがあったのでそれで削除できそうです。

899 :デフォルトの名無しさん :2018/02/03(土) 21:35:57.81 ID:LvTBogUR0.net
Removeを使うのはわかるんだが、要するになにがしたいのかというと
Linqを使ってControlsにAddしたGroupBoxだけを選択して、クリアしたいということ。
その書き方がわからない。ということ。

900 :デフォルトの名無しさん :2018/02/03(土) 21:39:38.95 ID:SzFJuxtQa.net
再表示とかクリアとか俺様な用語法されても何言ってるのか分からないよw

901 :デフォルトの名無しさん :2018/02/03(土) 21:46:23.78 ID:LvTBogUR0.net
tabPage1に貼り付けたコントロール群をLinqを使って選択的に消去したいということ。これでもわからん?

902 :デフォルトの名無しさん :2018/02/03(土) 21:49:30.86 ID:DOsYwXsiM.net
>>901
言葉が不自由なんですね
わかります

903 :デフォルトの名無しさん :2018/02/03(土) 21:52:32.07 ID:DOsYwXsiM.net
煽って悪かったけど
その書き方じゃ誰にもつたわらないよ

意味がわからないけどgrpを消したいならgrpをどこかに記録しておけばいい
終わり

はい次の方〜

904 :デフォルトの名無しさん :2018/02/03(土) 21:54:28.34 ID:LvTBogUR0.net
解決した。w

905 :デフォルトの名無しさん :2018/02/03(土) 21:55:50.09 ID:DOsYwXsiM.net
>>904
よかったね
言葉遣いや表現力だけ見ると小学生かなって思うけど

906 :デフォルトの名無しさん :2018/02/03(土) 21:57:07.86 ID:LvTBogUR0.net
>903
Keyになる言葉の意味がわからないと解らないと思うよ。それが解る人にはわかる。

907 :デフォルトの名無しさん :2018/02/03(土) 21:59:39.27 ID:bTwAHw5A0.net
なんでこいつこんなに偉そうなの?

908 :デフォルトの名無しさん :2018/02/03(土) 22:00:08.72 ID:DOsYwXsiM.net
小学生だから

909 :デフォルトの名無しさん :2018/02/03(土) 22:08:58.48 ID:SzFJuxtQa.net
var toRemove = tabPage1.Controls.Cast<Control>().FirstOrDefault( .... );
if (toRemove != null)
  tabPage1.Controls.Remove(toRemove);

これを1行にしたいってことだったのかな?
拡張メソッド使ってControl側に自分を包含するコンテナのControlCollectionを
引数に撮るメソッドを定義しないとできない気がする

何でもいいけど、冗長でもいいから分かるように書いて欲しいよね

910 :デフォルトの名無しさん :2018/02/03(土) 22:13:41.72 ID:LvTBogUR0.net
そんな書き方しかでけん?

911 :デフォルトの名無しさん :2018/02/03(土) 22:16:15.65 ID:DOsYwXsiM.net
>>897
これでスタートして答えをもらおうとして失敗

次に >>899 要するにと言ってるけど何も要してないどころか条件を追加してる

そして これ >>901 への流れ

トンチンカン
最初のレスでなぜ伝わると思ったのかが分からない

912 :デフォルトの名無しさん :2018/02/03(土) 22:23:57.61 ID:SzFJuxtQa.net
無理矢理だなあ
Action<Control> removeMe = x => x?.Parent?.Controls.Remove(x);
removeMe(
tabPage1.Controls.Cast<Control>().FirstOrDefault( .... )
);

913 :愛恥人:2018/02/03(土) 22:34:23.85 .net
最初のレスだけで理解できる俺は天才なのか

914 :デフォルトの名無しさん :2018/02/03(土) 22:38:53.52 ID:SzFJuxtQa.net
むしろエスパー

915 :デフォルトの名無しさん :2018/02/03(土) 22:43:30.44 ID:DOsYwXsiM.net
そして明後日の方向のレスに食いついてる

916 :デフォルトの名無しさん :2018/02/03(土) 22:54:26.09 ID:LvTBogUR0.net
private void button3_Click(object sender, EventArgs e)
{
var grps = tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox );
foreach (var grpB in grps)
{
tabPage1.Controls.Remove(grpB);
}
}
これで一回で消えないのは何故だろう? grpsには全部のグループボックスが
入っている。しかしforeachでところどころ飛ばしてしまう。

917 :デフォルトの名無しさん :2018/02/03(土) 23:19:59.77 ID:LvTBogUR0.net
あっ、謎がとけた。けっこう落とし穴だな。

918 :デフォルトの名無しさん :2018/02/03(土) 23:32:01.66 ID:LvTBogUR0.net
ケツから消していくとうまくいくんだろきっと。
まえからでもこうやるとうまく行く。
    private void button3_Click(object sender, EventArgs e)
         {
             var grps = tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox );
             List<GroupBox> gg = new List<GroupBox>();
             foreach (var grp in grps)
             {
                 gg.Add(grp);
             }
             foreach (var grpB in gg)
             {
                 tabPage1.Controls.Remove(grpB);
             }
          }

919 :デフォルトの名無しさん :2018/02/03(土) 23:33:46.33 ID:LvTBogUR0.net
さて、原理は分ったが、これを1行で書くにはどうするのか?

920 :愛恥人:2018/02/03(土) 23:40:30.32 .net
逆にグループボックス以外を抽出してからパネルの中身全消去からの追加とかはどうかな(>_<)

921 :デフォルトの名無しさん :2018/02/03(土) 23:40:55.06 ID:OIRW+vs20.net
>>919
改行全部消せばいいじゃん

922 :デフォルトの名無しさん :2018/02/03(土) 23:43:21.17 ID:pHRpw+FT0.net
>>918
>>916のLinqにReverse()追加すれば

923 :デフォルトの名無しさん :2018/02/03(土) 23:43:41.06 ID:OIRW+vs20.net
>>919
なんで1行にこだわってるの?
どれだけ読みにくいソースにできるか研究でもしてんの?

924 :デフォルトの名無しさん :2018/02/03(土) 23:49:22.30 ID:LvTBogUR0.net
>920 それ、俺もちょっと考えた。
>921 それは最終手段にとっておいたのに。

Reverse()ってあるんか? それだ!!

925 :デフォルトの名無しさん :2018/02/04(日) 00:42:43.56 ID:OrIb/jt1a.net
もう気が済んだかもしれんけど、無理に何でもインラインで書こうとして
可読性落とすなんて愚の骨頂で、普通にメソッドに外だし(別に拡張メソッドじゃなくてもいいけど)
した方がいいと思うけどね

public static class Extensions
{
  public static void RemoveChildren(this Control control, Func<Control, bool> predicate)
  {
    var controls = control.Controls;
    controls.Cast<Control>().Where(predicate).ToList().ForEach(x => controls.Remove(x));
  }
}

926 :デフォルトの名無しさん :2018/02/04(日) 05:54:59.74 ID:vxeWu10H0.net
https://qiita.com/taigaaa2/items/7f05ad950a57033892ae
この方法で値を保存しているのですが
cドライブに保存されている様でプログラムを他のPCに移すなどすると値が保持されていません
どうすれば他のPCでも記憶した値を使える様になるでしょうか

927 :デフォルトの名無しさん :2018/02/04(日) 06:23:40.03 ID:ldOBh/kr0.net
ファイルをコピーする

928 :デフォルトの名無しさん :2018/02/04(日) 06:38:53.27 ID:ldOBh/kr0.net
真面目に答えるならサーバーやクラウドストレージのSettingsを読み書きするSettingsProviderを自作することだが
初心者にはひと月ふた月かかるだろうしはっきり言って時間の無駄

929 :デフォルトの名無しさん :2018/02/04(日) 08:14:14.99 ID:ge7PbLBn0.net
真面目な答の方が愚策という変な人、というかおそらくバカ

930 :デフォルトの名無しさん :2018/02/04(日) 08:55:21.88 ID:qZv4HzKZ0.net
>>926
ユーザー共通になっちゃうけど、スコープをユーザーからアプリケーションに変更すればexeと同じディレクトリに保存するよ

931 :愛恥人:2018/02/04(日) 10:35:42.99 .net
>>762でユーザーにしたら動いた原因はなに?

932 :デフォルトの名無しさん :2018/02/04(日) 12:47:08.55 ID:+N3aAgKo0.net
例えば.net 4.7で作られたプログラムを4.5しか入ってないPCで動かすとどうなりますか?

933 :デフォルトの名無しさん :2018/02/04(日) 13:40:36.37 ID:zMXPgQ7i0.net
うごかない

934 :デフォルトの名無しさん :2018/02/04(日) 13:41:03.95 ID:zMXPgQ7i0.net
てか4.5とかサポート切れだから論外だし

935 :デフォルトの名無しさん :2018/02/04(日) 13:48:00.41 ID:HudK1GnQ0.net
>ユーザー共通になっちゃうけど、スコープをユーザーからアプリケーションに変更すればexeと同じディレクトリに保存するよ

アプリケーションじゃ動かんかったな。動くこともあるんだろうな。意味がわらかんし、マニュアル読んでも書いてないし
それにビルドで設定値が消えるから、、、最初から打ち直し。w
こんな意味の解らん機能はつかわない方がいい。JSON.NET使った方が遥かに楽。というのが俺の感想だ。

936 :デフォルトの名無しさん :2018/02/04(日) 14:04:22.94 ID:CmrmETVT0.net
>>932
開発環境が4.7でも対象フレームワークを4.5に設定してビルドすれば、4.5が入ってるPCでも動く。
ただし、4.7でないと動かない機能は使えなくなる。

937 :デフォルトの名無しさん :2018/02/04(日) 14:13:13.77 ID:HudK1GnQ0.net
public static void RemoveChildren(this Control control, Func<Control, bool> predicate)
  {
    var controls = control.Controls;
    controls.Cast<Control>().Where(predicate).ToList().ForEach(x => controls.Remove(x));
  }
これは非常にスマートだという感じだが意味わからんなー。
predicate: 対象となるコントロールの場合はTrueを返す関数?
ToList() :predicateで判定したコントロールのListを作る。
ForEach:ToListからひとつづつコントロールをとりだしてxにセット、Removeする。
という意味だろうか?

Funcって初めて見た。いま調べてみるとよく使う標準デリゲートらしい。であれば
 controls.Cast<Control>().Where(ラムダ式).ToList().ForEach(x => controls.Remove(x));
で一行でできる筈だな。
つまり
 controls.Cast<Control>().Where(x=>x is GroupBox).ToList().ForEach(x => controls.Remove(x));
で実験してみると
tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox).ToList().ForEach(x => tabPage1.Controls.Remove(x));
わーいうまく行ったぞ。

938 :デフォルトの名無しさん :2018/02/04(日) 14:22:22.77 ID:2sg7PnbOM.net
日記はちらしのうらにでm…

939 :デフォルトの名無しさん :2018/02/04(日) 14:22:36.96 ID:zMXPgQ7i0.net
>>936
>.net4.7で作られた
をどう解釈するかだな

940 :デフォルトの名無しさん :2018/02/04(日) 14:24:43.87 ID:HudK1GnQ0.net
Castを無くすために
tabPage1.Controls.OfType<GroupBox>().ToList().ForEach(x => tabPage1.Controls.Remove(x));
これでも動くのに、

tabPage1.Controls.OfType<GroupBox>().ForEach(x => tabPage1.Controls.Remove(x)); 
これは動かないのはなぜ?

941 :デフォルトの名無しさん :2018/02/04(日) 14:26:44.56 ID:2sg7PnbOM.net
実装してないものが使えるわけないだろ
魔法じゃないから

942 :デフォルトの名無しさん :2018/02/04(日) 14:30:00.97 ID:2sg7PnbOM.net
そもそも列挙してる最中のものを削ると列挙に失敗する可能性が高い

最初から何番目の要素を取り出す
次はそれプラス1の要素としてるのに
1番目から消すと何番目というのがずれるだろ?

一番目を取り出すそれを消す
○×▼

×▼

二番目を取り出すそれを消す
×▼

×
三番目は取り出せない

943 :デフォルトの名無しさん :2018/02/04(日) 14:31:09.88 ID:2sg7PnbOM.net
ずっと一番目を消すと全部消える

944 :デフォルトの名無しさん :2018/02/04(日) 14:34:48.14 ID:2sg7PnbOM.net
ToList()で控えを作る

できたList  ○×▼ をみて対象を消していく
こちらは消し終わってList内容はそのまま

945 :デフォルトの名無しさん :2018/02/04(日) 14:35:11.95 ID:HudK1GnQ0.net
>>941
いやまあそうなんだが、疑問というのは
var grps = tabPage1.Controls.OfType<GroupBox>();

varじゃわからないのだが、この型は何なの? Listじゃないよね。

946 :デフォルトの名無しさん :2018/02/04(日) 14:36:12.24 ID:2sg7PnbOM.net
>>945
IDE使えばでるだろ
カーソル当てろ

947 :デフォルトの名無しさん :2018/02/04(日) 14:36:23.56 ID:zMXPgQ7i0.net
>>945
メモ帳で開発してんの?

948 :デフォルトの名無しさん :2018/02/04(日) 14:37:00.62 ID:2sg7PnbOM.net
可能性が高いと書いたのは列挙の方法がちがうかもしれないから 

949 :デフォルトの名無しさん :2018/02/04(日) 14:37:31.37 ID:qZv4HzKZ0.net
>>945
Enumerable.OfType<TResult> メソッド
https://msdn.microsoft.com/ja-jp/library/bb360913(v=vs.110).aspx

950 :デフォルトの名無しさん :2018/02/04(日) 14:38:10.32 ID:2sg7PnbOM.net
ここは個別指導スレじゃないだろ
いい加減にわきまえろ

質問じゃなくて誰かに教えてもらいたいなら金を払って個人指導受けろ

951 :デフォルトの名無しさん :2018/02/04(日) 14:41:30.60 ID:qZv4HzKZ0.net
IEnumerableやyield returnの動作知らずにLINQ使うのって怖くないのかな

952 :デフォルトの名無しさん :2018/02/04(日) 14:41:58.66 ID:zMXPgQ7i0.net
>>949
相変わらずひどい翻訳やな

953 :デフォルトの名無しさん :2018/02/04(日) 14:50:13.12 ID:HudK1GnQ0.net
var grps = tabPage1.Controls.OfType<GroupBox>();
var ggg = tabPage1.Controls.OfType<GroupBox>().ToList();

IDEでみるとgrpsは
{system.Linq.Enumerable.OfTypeIterater<GroupBox>}
gggは
count=10
と出る。

954 :デフォルトの名無しさん :2018/02/04(日) 14:53:40.22 ID:zMXPgQ7i0.net
わろた

955 :デフォルトの名無しさん :2018/02/04(日) 14:53:56.98 ID:HudK1GnQ0.net
>IEnumerableやyield returnの動作知らずにLINQ使うのって怖くないのかな

何故怖いの? 
IEnumerableとEnumerableの違いを端的に説明すると、どういうこと?

956 :デフォルトの名無しさん :2018/02/04(日) 14:55:56.43 ID:2sg7PnbOM.net
キーワードがわかってるなら聞かないで自分で勉強したらいいのに
勉強したり努力してわからないならここで聞けばいい

957 :デフォルトの名無しさん :2018/02/04(日) 14:59:19.86 ID:HudK1GnQ0.net
Enumerable.OfType <GroupBox > grps = tabPage1.Controls.OfType<GroupBox>();
これはできないよ。エラーになる。

List<GroupBox > ggg = tabPage1.Controls.OfType<GroupBox>().ToList();
これはOK

958 :デフォルトの名無しさん :2018/02/04(日) 15:01:43.20 ID:HudK1GnQ0.net
>Enumerable.OfType<TResult> メソッド

あっと見落としてた、型じゃないのか。メッソドか。

959 :デフォルトの名無しさん :2018/02/04(日) 15:01:43.24 ID:2sg7PnbOM.net
ダメな初心者=エラー内容を読まないし調べない

960 :デフォルトの名無しさん :2018/02/04(日) 15:05:12.21 ID:+N3aAgKo0.net
>>936
ありがとうございます。
ターゲットフレームワークが4.7、動かそうとしているPCが4.5、プログラムの内容が4.5までで実現できるwinformsの場合でも起動すらできないですか?

961 :デフォルトの名無しさん :2018/02/04(日) 15:12:42.24 ID:HudK1GnQ0.net
>例えば.net 4.7で作られたプログラムを4.5しか入ってないPCで動かすとどうなりますか?
4.7が動作しないPCはない(筈だ)から、4.7をダウンロードしたらいいだけだよ。
4.7をシステムに追加すれば問題なしに完璧に動作するよ。

962 :デフォルトの名無しさん :2018/02/04(日) 15:17:08.79 ID:CmrmETVT0.net
>>960
クライアントがターゲットフレームワーク未満の場合は、起動時にエラーダイアログが出て終了する。
その内容だったら、ターゲットフレームワークを4.5に変更すれば良いのでは。
厳密には、4.5はサポート切れてるから、4.5.2に設定した方が良いと思うけど。

963 :デフォルトの名無しさん :2018/02/04(日) 15:18:11.54 ID:UjaEvCGn0.net
ワッチョイ 179d にもう触んな

964 :デフォルトの名無しさん :2018/02/04(日) 15:43:41.74 ID:ldOBh/kr0.net
魚類に釣り絵に噛みつくなと説いてもムダムダ

965 :デフォルトの名無しさん :2018/02/04(日) 15:55:30.93 ID:+N3aAgKo0.net
>>961,962
よく分かりました。ありがとうございます

966 :デフォルトの名無しさん :2018/02/04(日) 16:06:41.70 ID:hG+oZ081p.net
なんとなくpublicならプロパティ
privateならフィールドにするように
しているんだが

public なフィールドやprivateなプロパティって使うことある?

967 :デフォルトの名無しさん :2018/02/04(日) 16:06:43.52 ID:88eIJAAv0.net
>>951
> IEnumerableやyield returnの動作知らず
そいつらは実装者には必要だけどLINQ使う側には必要ないだろ

968 :デフォルトの名無しさん :2018/02/04(日) 16:11:21.66 ID:nSH8cPbn0.net
そもそもこんな疑問でちゃう時点で機能としての出来が良くないんだから
使わない俺の大勝利

969 :デフォルトの名無しさん :2018/02/04(日) 16:12:24.36 ID:ldOBh/kr0.net
頭の出来がよくないの人のせいにするとは

970 :デフォルトの名無しさん :2018/02/04(日) 16:12:44.65 ID:vxeWu10H0.net
>>930
スコープがアプリケーションだと書き込みができない様で、書き込みのできる方法はありますでしょうか?

アプリケーションでいじった値をアプリケーションのあるフォルダなどに保存する方法が知りたいです
visualstudioで生成したDebugフォルダをコピーするだけで同じ設定のものがコピー出来る様になりたいです

971 :デフォルトの名無しさん :2018/02/04(日) 16:19:07.58 ID:YE7Mv6Fc0.net
>>824
そんなレベルの疑問を自力で解決出来ないのに独自言語なんて作れるのか?

972 :デフォルトの名無しさん :2018/02/04(日) 16:22:45.65 ID:s5exZTb6d.net
>>968
使ってることに気づいてないアホがこれ

973 :デフォルトの名無しさん :2018/02/04(日) 16:27:27.66 ID:iJJ2KKb9a.net
>>970
>>930を真に受けちゃダメ

MSはバイナリをProgram Files以下のディレクトリにインストールして使うのが
標準的な使い方だと考えているので、アプリケーション設定も当然バイナリと同じフォルダに
保存する方法は用意されてない。(言うまでもないけど、Program Files以下のディレクトリに
ファイルを書き込むには特別な権限が必要)

バイナリをUSBメモリに入れて持ち歩くような使い方を想定しているようなアプリなら
当然バイナリと同じディレクトリに設定ファイルを保存するのもありだけど、
そういう場合は自分でそういうコードを書くしかない

974 :デフォルトの名無しさん :2018/02/04(日) 16:32:40.51 ID:0pkor+t3d.net
>>973
嘘まみれ

975 :デフォルトの名無しさん :2018/02/04(日) 16:43:23.86 ID:RXHjrV0B0.net
>>970
つ ふっかつのじゅもん

976 :デフォルトの名無しさん :2018/02/04(日) 17:11:47.67 ID:lnA8IzXNa.net
.netの前はアプリなどがシステムフォルダににDLLを入れていた
それでアンインストールなどを繰り返すとどれがどれに依存しているかわからなくなった
これをDLLヘルという

これを教訓にしてアプリではdll依存を極力避け
アプリの配布はビルドしたものを適当な場所にxcopyしただけで可能なように設計された

977 :デフォルトの名無しさん :2018/02/04(日) 18:11:17.96 ID:IdDneOZ60.net
ApplicationSettingsみたいなゴミを使うの止めればいいんじゃないの
何でこだわってるの?
ApplicationSettingにこだわらなければ10分で済む話だよね?
なんで半日も一日も掛けてるの?
不死身で時間が無限にあるの?
無職で時間が余ってるの?
休日ぼっちで暇なの?
ねえなんで?

978 :デフォルトの名無しさん :2018/02/04(日) 18:13:05.97 ID:vxeWu10H0.net
無職です申し訳ありません

979 :デフォルトの名無しさん :2018/02/04(日) 18:13:56.88 ID:b12ucEdla.net
そもそもアプリケーション設定の解説なんていくらでもweb上に存在するのに
どうしてまずそれらを読まずに最初からできもしないことをできるはずだと思い込んでるのか、
そこが不思議。

980 :デフォルトの名無しさん :2018/02/04(日) 18:17:04.23 ID:vxeWu10H0.net
アプリケーション設定には特にこだわりはありません
保存さえ出来れば構いません
出直してきます
申し訳ないです

981 :デフォルトの名無しさん :2018/02/04(日) 18:17:36.06 ID:nSH8cPbn0.net
オススメはCSVファイルの保存で

982 :デフォルトの名無しさん :2018/02/04(日) 18:31:08.74 ID:zMXPgQ7i0.net
>>981
キチガイ

983 :愛恥人:2018/02/04(日) 18:49:17.79 .net
>>935
バインド出来ないじゃん(>_<)

984 :デフォルトの名無しさん :2018/02/04(日) 18:50:28.24 ID:nSH8cPbn0.net
>>982
エクセルで編集できて便利じゃん

985 :デフォルトの名無しさん :2018/02/04(日) 18:50:55.56 ID:YkvE7FF30.net
>>980
自分で貼ったリンクに保存場所書いてあるし
プロジェクト名がHogeのとき
C:\Users\{User名}\AppData\Local\Hoge\...\1.0.0.0\user.config
でProperties.Settings.Defaultって書いてあるんだからググったら
パスの取得の仕方は
https://dobon.net/vb/dotnet/programing/mysettings.html
に書いてある
このパスを必要な場所にコピーしたらいいだけ
俺の場合はこれの使い方を把握できなかったんで自分でパーサー書いた方が早かったなw

986 :デフォルトの名無しさん :2018/02/04(日) 19:03:57.70 ID:vxeWu10H0.net
>>985
プログラムを別のマシンに移しても設定が保存されるようにしたいのです
でも保存場所を変えることは出来ないんですよね?

987 :デフォルトの名無しさん :2018/02/04(日) 19:34:44.52 ID:RXHjrV0B0.net
>>986
最近の流行りだと、設定を捨ててjson.netってやつで管理する
上記のそれはクラスオブジェクトをテキストにする(シリアライズと言う)ソフトなので
コレを普通のテキストファイルとして読み書きするだけです

988 :デフォルトの名無しさん :2018/02/04(日) 19:45:17.78 ID:nSH8cPbn0.net
>>987
何の会社かよくわからないし
MSのCSV読み込みにしといた方が良くない?

989 :デフォルトの名無しさん :2018/02/04(日) 20:09:49.43 ID:fm2Gs9xAd.net
>>984
Excelでの編集が必要なほどデータが大量ならDB使えよ

990 :デフォルトの名無しさん :2018/02/04(日) 20:10:29.46 ID:fm2Gs9xAd.net
>>987
お前もなんか勘違いしてんぞ

991 :デフォルトの名無しさん :2018/02/04(日) 20:11:34.16 ID:zMXPgQ7i0.net
>>988
JSON.NET知らないのはさすがにモグリやろwww

992 :デフォルトの名無しさん :2018/02/04(日) 20:18:09.97 ID:rXp7+rpAa.net
>>986
一番簡単なのは、永続化(保存)したい情報だけをまとめたクラスを作って
シリアル化/逆シリアル化する方法。

シリアル化/逆シリアル化のための機能は.NETの標準ライブラリにも用意されてるので
わざわざサードパーティーのを使うことない

しかし、意地悪なのかマジなのか知らんけど、
なんか人を惑わすようなこと書く人ばっかりで質問者も大変だなw

993 :デフォルトの名無しさん :2018/02/04(日) 20:19:44.54 ID:zMXPgQ7i0.net
>>992
普通にappsettings.json使えばいいのにね

994 :デフォルトの名無しさん :2018/02/04(日) 21:44:52.13 ID:nSH8cPbn0.net
>>991
えー、知らない
すぐ死ぬことがない根拠ある?

995 :デフォルトの名無しさん :2018/02/04(日) 21:48:45.96 ID:HudK1GnQ0.net
CSV:一般的でシンプルで扱いやすい。
INIファイル:以前の標準、いまでも使えるがCOMオブジェクトロードする必要がある。フォーマットは直観的で使いやすい。
Json:上記に比べると、オブジェクトをそのまま保存可能というメリットがある。フォーマットは上記よりわかり難いが特に問題はない。
XML:汎用性があるが、直観的なフォーマットではないのでわかり難い。普通はこんなものをたいそうに使う必要はない。

などがあって、基本はCSVが標準だろうと思う。しかしクラスをそのまま保存するような場合はjsonがおすすめだ。例えば
カラーコードやフォントを保存する場合にはCSVだと、いちいちテキストなどに変換する必要があるが、jsonのシリアライズを
使えば何にも考えずに保存できる。MSもJnonのIFを用意しているが、Json.netの方が優れているのでそちらの方を使った方がいい。

996 :デフォルトの名無しさん :2018/02/04(日) 21:53:43.05 ID:nSH8cPbn0.net
>>995
json.netは俺が信用できないし
エクセルで編集できないしやめたほうがいいよ

997 :デフォルトの名無しさん :2018/02/04(日) 21:54:18.80 ID:zMXPgQ7i0.net
>>994
Microsoft自身もJSON.NETを製品に使ってる(.NET Core CLIとか)

998 :デフォルトの名無しさん :2018/02/04(日) 21:55:08.37 ID:FsQDUxLEd.net
>>996
お前が信用してなくてもMicrosoftは信用してる

999 :デフォルトの名無しさん :2018/02/04(日) 21:56:36.47 ID:l4jEutiZd.net
>>996
はいキチガイ

1000 :デフォルトの名無しさん :2018/02/04(日) 21:57:51.63 ID:zMXPgQ7i0.net
>>996
お前の信用なんか誰も求めてない

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
248 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★