[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part137 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part137 http://mevius.5ch.net/test/read.cgi/tech/1523004019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
713: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/19(土) 06:37:08.02 ID:uNgfR/HH0 具体的にどういう手順を踏めばよいのでしょう? excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと ちょっと切ないです でももう修正しないもの(修正するとしても部分的)ですから、機械的に データを移行できるのであればそれでも問題ありません http://mevius.5ch.net/test/read.cgi/tech/1523004019/713
714: デフォルトの名無しさん (ブーイモ MMfa-1jw3) [sage] 2018/05/19(土) 07:47:44.04 ID:gOuRua2dM 静的に呼びだすなら5つのAPI FindResource() LoadResource() SizeofResource() LockResource() FreeResource() 動的に更新するなら更に3つ BeginUpdateResource() EndUpdateResource() UpdateResource() http://mevius.5ch.net/test/read.cgi/tech/1523004019/714
715: デフォルトの名無しさん (ワントンキン MMea-wqAz) [sage] 2018/05/19(土) 07:53:26.18 ID:z3BmCHYgM >>701 こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う http://mevius.5ch.net/test/read.cgi/tech/1523004019/715
716: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 07:55:26.69 ID:7BFPa/Jf0 別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな http://mevius.5ch.net/test/read.cgi/tech/1523004019/716
717: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/19(土) 08:03:52.08 ID:uNgfR/HH0 >>714 ありがとうございます、それぞれのAPIについて調べてみます http://mevius.5ch.net/test/read.cgi/tech/1523004019/717
718: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 08:13:32.92 ID:7BFPa/Jf0 結局バランスの問題だな。もちろん人によってバランス違うけど。 イベントによって結果再利用性あがるけど、 >イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。 の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。 これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/718
719: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 09:36:48.03 ID:ZECHChrda >>718 極端なのは君だと思うぞ まさかクラス間の依存関係に全部いちいちイベントを噛ましてるってわけではないよね その上で、この例において特にイベントを使うのが適切だと判断した合理的な根拠は? 少なくとも>>697のレスからはそれを具体的に読み取れないから、根拠のない仮定に基づいた無駄な拡張性だと言ってるんだけど http://mevius.5ch.net/test/read.cgi/tech/1523004019/719
720: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 10:02:26.30 ID:35k9lSzB0 >>691 ( ゚д゚) ありがとうございます。 その通りです。 一晩見直したのに気づかなかった・・・。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/720
721: デフォルトの名無しさん (アウアウカー Sa4d-5W05) [] 2018/05/19(土) 10:47:04.32 ID:zmVeGZ3Ia >>697です みなさん色々なご意見ありがとうございます 基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました 途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか http://mevius.5ch.net/test/read.cgi/tech/1523004019/721
722: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 11:44:50.68 ID:mNRmauI8a >>721 interface IAlert { void Set(Severity severity); void Unset(); } たとえば、あるアラートに対してこういうインターフェイスを定義する クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ 温度が低下して閾値を割ったらUnsetを呼んで解除する このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ こうしておけば、 パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある http://mevius.5ch.net/test/read.cgi/tech/1523004019/722
723: デフォルトの名無しさん (ワッチョイ 7680-zp6D) [sage] 2018/05/19(土) 11:49:58.15 ID:F9kKaYLV0 >>695 拡張メソッドでも定義すれば http://mevius.5ch.net/test/read.cgi/tech/1523004019/723
724: デフォルトの名無しさん (アウアウカー Sa4d-5W05) [] 2018/05/19(土) 12:01:43.59 ID:hl18fyg5a >>722 早速ありがとうございます ちょっとまだピンときませんが、じっくり検討してみたいと思います http://mevius.5ch.net/test/read.cgi/tech/1523004019/724
725: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 12:20:10.98 ID:35k9lSzB0 BASICしか経験がないど素人がC#始めたんだけど、 クラス間の参照の受け渡しというのが難しいです・・・。 クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、 自分で一体何をしているのか分からなくなる時がある。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/725
726: デフォルトの名無しさん (ワッチョイ 75eb-/w+O) [] 2018/05/19(土) 13:04:35.48 ID:uWI+Vuzc0 >>725 真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ http://mevius.5ch.net/test/read.cgi/tech/1523004019/726
727: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 13:15:00.73 ID:m/ZPa8pNM BASIC系って悪い習慣を覚えちゃうよね 特にVBAはひどい http://mevius.5ch.net/test/read.cgi/tech/1523004019/727
728: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 13:27:26.49 ID:m/ZPa8pNM >>722 それだと温度センサーがアラートをコントロールしているように解釈される 常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない http://mevius.5ch.net/test/read.cgi/tech/1523004019/728
729: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 14:08:44.26 ID:35k9lSzB0 >>726 その通りです。 すべての変数をどこからでもアクセスしたい衝動にかられます。 Aのクラスの機能がA1とA2に分化できるから分けようと思うと、 AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、 結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/729
730: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 14:11:58.71 ID:35k9lSzB0 値1、2個を渡すのは簡単なんですけど、 クラスのインスタンスを100個つくるためにその参照を配列にいれる 参照の入った配列をreturnで返す とかしてるとなんの値をいじってるのかわけわかめです。 これまで値と参照の区別をして思考してこなかったからなのかなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/730
731: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 14:31:05.11 ID:m/ZPa8pNM >>730 オブジェクト指向で参照を共有することは少ない 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン http://mevius.5ch.net/test/read.cgi/tech/1523004019/731
732: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 15:29:17.89 ID:7BFPa/Jf0 >>719 それは君が経験値不足なだけ。>>697である程度は想像できる。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/732
733: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/19(土) 16:13:13.77 ID:t/qQFhE80 休みだってのに暇な奴ら http://mevius.5ch.net/test/read.cgi/tech/1523004019/733
734: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:13:20.90 ID:35k9lSzB0 >>731 なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/734
735: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:20:14.69 ID:35k9lSzB0 Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; target[i].y = 100; } } こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/735
736: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:23:28.77 ID:35k9lSzB0 ターゲットをクリック出来たら消す 一定時間クリックできなかったら点滅させる ゲーム終了後にターゲットの座標をテキストファイルに書き出す などの処理がすべてForm1上に存在することになるのですが、 それでもいいのでしょうか? これらの作業を無理にクラスに分けようとすると ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/736
737: デフォルトの名無しさん (ワッチョイ 91e3-/zvX) [sage] 2018/05/19(土) 16:41:59.05 ID:H4w+h7ji0 そんなミニゲームどう組んだっていいよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/737
738: デフォルトの名無しさん (ワッチョイ 559a-NEzo) [sage] 2018/05/19(土) 16:44:12.66 ID:5aQMcYYW0 >>736 何が駄目なのかわからない 何か縛りプレイしているのならその前提から出してもらわないと たとえば特定のデザインパターンの勉強が目的だとか http://mevius.5ch.net/test/read.cgi/tech/1523004019/738
739: デフォルトの名無しさん (ワッチョイ 75eb-/w+O) [] 2018/05/19(土) 16:55:29.90 ID:uWI+Vuzc0 どうせこの人は一生治んないよ ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの http://mevius.5ch.net/test/read.cgi/tech/1523004019/739
740: デフォルトの名無しさん (アウアウウー Sa39-HRP5) [sage] 2018/05/19(土) 16:56:47.37 ID:F+BrwfqWa listやdictionaryを使ってないのかな だったらまだそのアプリを作る段階まで届いてない http://mevius.5ch.net/test/read.cgi/tech/1523004019/740
741: デフォルトの名無しさん (ワッチョイ 5ad2-PioB) [sage] 2018/05/19(土) 17:10:27.25 ID:UwdEx54W0 まあ普通はエンジン部分だけ切り離すわな http://mevius.5ch.net/test/read.cgi/tech/1523004019/741
742: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:20:42.40 ID:35k9lSzB0 target class にx,y,timeなどメンバ変数7個程度を入れてます。 このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、 表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。 でもテトリスとか他のミニゲームみても同じような設計になってるんですね。 無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。 (というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・) http://mevius.5ch.net/test/read.cgi/tech/1523004019/742
743: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:22:57.84 ID:35k9lSzB0 >>738 縛りはなかったのですが、見やすいコードということを考えすぎてました。 まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/743
744: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:23:58.19 ID:35k9lSzB0 >>740 最初Dictionay使うつもりだったのですが、 構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/744
745: デフォルトの名無しさん (ワッチョイ 469f-gO2p) [sage] 2018/05/19(土) 17:27:35.68 ID:9OoA3M8l0 >>736 何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな targetの渡し方はコンストラクタやメソッド引数にするかは自由 Hoge hoge = new Hoge(); bool Output(){ hoge.Set(target); return hoge.Output(); } http://mevius.5ch.net/test/read.cgi/tech/1523004019/745
746: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 17:28:05.32 ID:m/ZPa8pNM >>742 複数のTargetを管理する専用のクラスを書くんだよ Formが全てのTargetを管理するのはオーバーワークだろ http://mevius.5ch.net/test/read.cgi/tech/1523004019/746
747: デフォルトの名無しさん (ワッチョイ 7681-0hVM) [sage] 2018/05/19(土) 17:30:56.31 ID:TbcarOIZ0 >>729 貴様にはpublicを禁止する呪いを掛ける http://mevius.5ch.net/test/read.cgi/tech/1523004019/747
748: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 17:45:50.05 ID:m/ZPa8pNM それは呪いではなく祝福であった http://mevius.5ch.net/test/read.cgi/tech/1523004019/748
749: デフォルトの名無しさん (アウアウウー Sa39-HRP5) [sage] 2018/05/19(土) 17:52:30.85 ID:F+BrwfqWa そしてinternalを使い始めた! ゴミグラマの出来上がり http://mevius.5ch.net/test/read.cgi/tech/1523004019/749
750: デフォルトの名無しさん (ワッチョイ 4103-y+IU) [] 2018/05/19(土) 18:14:06.88 ID:RoboUWmL0 と、すでに出来あがったゴミグラマが申しておるようですが http://mevius.5ch.net/test/read.cgi/tech/1523004019/750
751: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 18:20:19.09 ID:35k9lSzB0 >>746 はい。 それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、 初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。 二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。 もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/751
752: デフォルトの名無しさん (ワッチョイ 91e3-/zvX) [sage] 2018/05/19(土) 18:39:40.28 ID:H4w+h7ji0 >>751 小さいの組み合わせてでかいの作るんだから でかいと組み方が変わるなんて言ってるやつは そもそも下手クソなんだよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/752
753: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 18:44:17.10 ID:m/ZPa8pNM >>751 入り乱れないよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/753
754: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/19(土) 18:44:51.84 ID:t/qQFhE80 素人が責務に応じたクラスの分割を理解するなんて 一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの? http://mevius.5ch.net/test/read.cgi/tech/1523004019/754
755: デフォルトの名無しさん (ワッチョイ 4103-y+IU) [] 2018/05/19(土) 18:46:55.05 ID:RoboUWmL0 >>754 素人でも初心者でもわかる奴は最初からわかってるけど? むしろ数ヶ月も時間をかけてわかって気になってるおまえが何もわかってないよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/755
756: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 18:48:37.83 ID:m/ZPa8pNM >>754 理解しやすい構造になるわけだから素人も安心 http://mevius.5ch.net/test/read.cgi/tech/1523004019/756
757: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/19(土) 18:49:08.43 ID:t/qQFhE80 >>755 猿には聞いてねえから飼育員さんとママゴトしてな http://mevius.5ch.net/test/read.cgi/tech/1523004019/757
758: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/19(土) 18:51:06.08 ID:t/qQFhE80 >>756 んでいつまで続けるの? ウザくなってきたからスレ潰しするのもいいかなと思ってる http://mevius.5ch.net/test/read.cgi/tech/1523004019/758
759: デフォルトの名無しさん (ワッチョイ 4103-y+IU) [] 2018/05/19(土) 18:54:14.32 ID:RoboUWmL0 バカ、スレ潰し宣言wwwww これはさすがの俺も意表をつかれた度と超えたバカwwwww http://mevius.5ch.net/test/read.cgi/tech/1523004019/759
760: デフォルトの名無しさん (ブーイモ MMa1-+Nwo) [] 2018/05/19(土) 20:59:50.70 ID:gCADl0W/M C#のスレだと思ったのに。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/760
761: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 21:13:55.60 ID:35k9lSzB0 リストボックスの値を取得するのって string Gender = this.Gender.SelectedItem.ToString(); の一文だけじゃだめなの? なぜか値が取得できない。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/761
762: デフォルトの名無しさん (アウアウウー Sa39-RYnA) [sage] 2018/05/19(土) 21:17:27.89 ID:BEl4Etk9a あたまがくらくらする http://mevius.5ch.net/test/read.cgi/tech/1523004019/762
763: デフォルトの名無しさん (ワッチョイ 769a-NEzo) [sage] 2018/05/19(土) 21:28:02.54 ID:sYzD4mGA0 >>761 まず「Gender」が2つ出てくることに違和感はないのか ListBoxは使ったことないけど https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx string GenderStr = this.Gender.SelectedItem.ToString(); にでも変えれば動かないか? http://mevius.5ch.net/test/read.cgi/tech/1523004019/763
764: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 21:30:21.29 ID:35k9lSzB0 >>761 すいません。 自己解決しました。 大分疲れてきたようです。 寝ます・・・。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/764
765: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 21:32:29.68 ID:35k9lSzB0 >>763 すいません。 ご親切にありがとうございます。 値を出力するクラスにwriteline書き忘れてました・・・。 値の取得は上のコードでOKでした。 朝から一日プログラミングして悪い頭が限界を超えているようです。 今日はもう寝ます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/765
766: デフォルトの名無しさん (ワッチョイ 4103-y+IU) [] 2018/05/19(土) 21:34:12.28 ID:RoboUWmL0 教えたがりのバカ>>763の立場wwww http://mevius.5ch.net/test/read.cgi/tech/1523004019/766
767: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/20(日) 16:52:01.54 ID:O/HF5kqh0 >>714 いろいろ調べてみましたが、私が探している解決策とは異なったようです 一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように アクセスする方法はないのか、という点です (XLWorkbookのコンストラクタには、ファイルパスを与えますので) 今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に 変更が効かなくなっても問題ないと考えました 712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで 切り貼りするコードを自分で書くべし」、ということでしょうか そのために有用なのが714のAPIということですか http://mevius.5ch.net/test/read.cgi/tech/1523004019/767
768: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/20(日) 18:41:56.82 ID:9fk8EC6VM ないよ 一回テンポラリファイルに出力すればいい 使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない http://mevius.5ch.net/test/read.cgi/tech/1523004019/768
769: デフォルトの名無しさん (ワッチョイ 91e3-/zvX) [sage] 2018/05/20(日) 19:32:08.73 ID:QOdmSKaj0 やったことないけど これは動かないの? https://support.microsoft.com/ja-jp/help/319292/how-to-embed-and-access-resources-by-using-visual-c http://mevius.5ch.net/test/read.cgi/tech/1523004019/769
770: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/20(日) 19:59:07.95 ID:O/HF5kqh0 >>768 ありがとうございます 少し調べてみた限りですと、closedXMLはストリームからの読み込みはサポートして いないようなので(当然の気もしますが)、テンポラリファイル等別の手段を考えます >>769 「リソースにアクセスしたい」ではなく、「ファイルにアクセスするメソッドにリソースを 渡したい」でした 768のおかげでそのまま実現するのは無理とわかりましたので、疑問としては解決です http://mevius.5ch.net/test/read.cgi/tech/1523004019/770
771: デフォルトの名無しさん (ワッチョイ aa9d-/w+O) [] 2018/05/21(月) 08:06:02.24 ID:yxdsvVjy0 Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。 普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は 入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定 すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く 収まるとおもうのだが、なぜそうしないのだろうか? http://mevius.5ch.net/test/read.cgi/tech/1523004019/771
772: デフォルトの名無しさん (アウアウウー Sa39-NTEn) [sage] 2018/05/21(月) 09:30:17.64 ID:HN6x0Zrba 文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。 前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。 後者であればその必要はない。 一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ 文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ 禄でもないことにしかならん http://mevius.5ch.net/test/read.cgi/tech/1523004019/772
773: デフォルトの名無しさん (ワッチョイ 899e-S6G8) [sage] 2018/05/21(月) 10:54:12.62 ID:wG0UA8oX0 JSON はJavaScript だから、UTF-8 Ruby, Python もそう。 ネット上に流れるテキストも同じ SHIFT_JIS を使う言語は、まずない。 PowerShell も、UTF-16 ここ数年は、Unicode に統一された。 それ以外の、SHIFT_JIS, EUC-JP は使わない http://mevius.5ch.net/test/read.cgi/tech/1523004019/773
774: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/21(月) 12:22:48.67 ID:ZMitaTGGM >>773 何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ 特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である http://mevius.5ch.net/test/read.cgi/tech/1523004019/774
775: デフォルトの名無しさん (ワッチョイ 899e-S6G8) [sage] 2018/05/21(月) 12:34:00.26 ID:wG0UA8oX0 Ruby は各文字列に、エンコードを持てるから、すごい 例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、 a + b みたいに、文字列を連結すると、エンコードエラーになる http://mevius.5ch.net/test/read.cgi/tech/1523004019/775
776: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/21(月) 12:36:23.24 ID:ZMitaTGGM >>775 うん。何一つメリットのないカス仕様だね。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/776
777: デフォルトの名無しさん (ワキゲー MM42-wBtv) [sage] 2018/05/21(月) 12:50:56.22 ID:0W5b/XyUM >>770 ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど http://mevius.5ch.net/test/read.cgi/tech/1523004019/777
778: デフォルトの名無しさん (ワッチョイ aa9d-/w+O) [] 2018/05/21(月) 13:22:41.39 ID:yxdsvVjy0 >SHIFT_JIS を使う言語は、まずない。 エクセルファイルをCSVにEportしたファイルだけど、 var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis")) これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、 http://mevius.5ch.net/test/read.cgi/tech/1523004019/778
779: デフォルトの名無しさん (ラクッペ MMa5-0XvN) [sage] 2018/05/21(月) 14:04:00.83 ID:hRf5uVYXM とりあえずそのRubyアスペに触るのを止めて http://mevius.5ch.net/test/read.cgi/tech/1523004019/779
780: デフォルトの名無しさん (ワッチョイ aa9d-/w+O) [] 2018/05/21(月) 15:12:20.28 ID:yxdsvVjy0 >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 >後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 前者はDefault unicode 後者はDefault bytecode ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない と思うが、、 >>775 その考え方の方が正しいと思う。 そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの? 其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/780
781: デフォルトの名無しさん (ワッチョイ 899e-S6G8) [sage] 2018/05/21(月) 15:24:30.40 ID:wG0UA8oX0 Windows も内部的には、UTF-16 だろ。 PowerShell, ブラウザも、UTF-8 保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず Excel など、長年使っている人が多いから、やめられないだけ http://mevius.5ch.net/test/read.cgi/tech/1523004019/781
782: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/21(月) 15:43:54.89 ID:s3jYOwAha >>780 Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む 素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ http://mevius.5ch.net/test/read.cgi/tech/1523004019/782
783: デフォルトの名無しさん (オイコラミネオ MM7e-4Ee6) [sage] 2018/05/21(月) 21:17:05.23 ID:83cG7/bYM ビルドしても、ファイルできなくて意味わかんねえ http://mevius.5ch.net/test/read.cgi/tech/1523004019/783
784: デフォルトの名無しさん (ワッチョイ 55da-XbkE) [] 2018/05/21(月) 22:02:39.74 ID:o82N7H0r0 >>778 Excelは言語じゃない。 日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 ちなみにBOMが付いていればUTFのCSVでも読み込める。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/784
785: デフォルトの名無しさん (アウアウウー Sa39-HRP5) [sage] 2018/05/21(月) 22:04:28.66 ID:ZCJ7EsPBa 漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから それだけ つまりやった側の間違い どこで間違えたか手順を順に見直すべし http://mevius.5ch.net/test/read.cgi/tech/1523004019/785
786: デフォルトの名無しさん (ワッチョイ 4103-y+IU) [] 2018/05/21(月) 22:11:44.14 ID:KnpxsRSU0 やった側ってどの側だよw http://mevius.5ch.net/test/read.cgi/tech/1523004019/786
787: デフォルトの名無しさん (ワッチョイ 898a-6aKC) [sage] 2018/05/22(火) 00:01:50.29 ID:1gACj0o60 sqliteとの連携に関して質問です なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです http://mevius.5ch.net/test/read.cgi/tech/1523004019/787
788: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/22(火) 00:20:52.78 ID:V2R/cizEa >>787 どこもクソも決めるのはお前 SQLiteはDBのファイルパス指定して開けるだろ SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ ファイルを名指しするのが基本 http://mevius.5ch.net/test/read.cgi/tech/1523004019/788
789: デフォルトの名無しさん (ブーイモ MMa1-+Nwo) [] 2018/05/22(火) 03:32:12.88 ID:MRvdbbs3M Accessのmdbみたいな感じかいな? http://mevius.5ch.net/test/read.cgi/tech/1523004019/789
790: デフォルトの名無しさん (ワッチョイ ae9d-/w+O) [] 2018/05/22(火) 06:38:16.66 ID:GCRmPVlZ0 >>785 「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか? そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/790
791: デフォルトの名無しさん (ワッチョイ ae9d-/w+O) [] 2018/05/22(火) 06:43:45.86 ID:GCRmPVlZ0 >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 文字コードなんて本質的なことじゃない。だから混在してもかまわない。 それを人手でやろうとするから「混在する悪夢」が発生する。 そういう場合にこそ機械に自動的にやらせるべきだろう。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/791
792: デフォルトの名無しさん (ワッチョイ ae9d-/w+O) [] 2018/05/22(火) 06:51:24.64 ID:GCRmPVlZ0 >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 >ちなみにBOMが付いていればUTFのCSVでも読み込める。 互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/792
793: デフォルトの名無しさん (スップ Sdda-6aKC) [sage] 2018/05/22(火) 07:58:03.61 ID:j6MjsmBId >>788 あざすぅ http://mevius.5ch.net/test/read.cgi/tech/1523004019/793
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 209 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s