■ このスレッドは過去ログ倉庫に格納されています
ふらっと 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 ★