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


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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

404 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 22:10:28.91 ID:/bboS/b7.net]
LINQについてなんですが、LINQスレが過疎ってるのでこっちに書き込みします。

一ヶ月分の出勤を集計したいと言う要望があります。
ちょっとLINQを使ってみようと思いまして、データセットに一月分のデータを全て取り込んで、各種条件で集計したいと思ってます。

dsというデータセットにDtSyukkinMeiと言うデータテーブルがあります。
ここまでのコードでデータが入ってるのは確認できています。

その後、一人目の社員の一ヶ月分を日付順に取り出してみようと思いましてテストとして

String ShainCode = "00001"

var datas = ds.DtSyukkinMei.AsEnumerable()
.Where(x => x.SyukkinCode == ShainCode)
.OrderBy(x => x.SyukkinDate)
.Select(x => x);
int tmpcnt2 = 1;
foreach (var test in datas)
{
Console.WriteLine(tmpcnt2 + ":" + test.SyukkinName + " " + test.SyukkinDate.ToString());
tmpcnt2++;
}

と言うコードでやってみました。
コンソールに書き出してみると指定社員の最初の日付のデータのみが抽出されます。

一行だけではなく、指定社員のその月のデータが並び替えされて全て取り出せるつもりなのですが、何か勘違いしてますでしょうか?

よろしくお願いします。

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

406 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:11:48.57 ID:6W33gIm7.net]
下記のサイトにあるObjectViewer-20080530.zipというC#のソースについて質問です。
ttp://wikki.sakura.ne.jp/gir−lab/?Object%20Viewer
※URLが書き込めなかったので、URLは全て全角英数にしました。

VisualStudio2015で実行しようとすると、次の部分でエラーが出て実行できません。

場所)foreach (var ko in kobj.Objects)
内容)型 'System.NullReferenceException' のハンドルされていない例外が ObjectViewer.exe で発生しました
    追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
※実行しようとすると、inの所が黄色くなって733のエラーが出ます

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

だったものを

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

という感じです

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

のどっちです?

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

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

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

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

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

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

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



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

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

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


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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

tag type human
tag sex man

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

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

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

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

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

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

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

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

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






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

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

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