18/03/24 23:04:36.74 NMOsnRxi.net
>>509
ありがとうございます。
凡ミスしてました!
using System.Net.Cache;
を別のソースファイルに書いてました、、、
522:デフォルトの名無しさん
18/03/24 23:07:50.50 bzBaKL6p.net
なぜいまどきWebRequest?
523:デフォルトの名無しさん
18/03/24 23:11:22.61 NMOsnRxi.net
エラーは消えましたが、WEBサーバ上で書き換え前の値が取得されてしまいます。
うーん、キャッシュポリシーの設定はあっているはずなのですが。
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
524:デフォルトの名無しさん
18/03/24 23:13:30.74 NMOsnRxi.net
>>511
今ナウいのは何に使うんですか?
WEBサーバ上にはというファイルをおいてます。
[ hoge_status.dat ]
1,aaa
2,bbb
3,ccc
そして、サーバ上で「2,bbb」→「2,babaa」に
書き換えて、クライアント(C#)から上のコードを実行した時に
「2,bbb」が取得されてしまいます。
525:デフォルトの名無しさん
18/03/24 23:16:00.40 rHDBuOYV.net
URLリンク(code.i-harness.com)
526:デフォルトの名無しさん
18/03/24 23:24:46.34 NMOsnRxi.net
ありがとうございます。
サイトに記載の内容を参考に↓のコードを書きました。
namespace ns_test
{
public class c_udoxn
{
[DllImport("WinInet.dll", PreserveSig = true, SetLastError = true)]
Error 29 The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)
すると今度は、DllImportAttributeが見つからないというエラーがでます。
何か間違っていますか?
527:デフォルトの名無しさん
18/03/24 23:27:01.58 NMOsnRxi.net
using System.Runtime.InteropServices; // DLL Import
これでエラー消えました。
528:デフォルトの名無しさん
18/03/24 23:32:05.55 NMOsnRxi.net
解決しました!!
ありがとうございました!
529:デフォルトの名無しさん
18/03/25 00:22:20.31 30He22WI.net
How can I view the allocation unit size of a NTFS partition in Windows 10?
530:デフォルトの名無しさん
18/03/25 02:55:25.41 QkJGWpF+.net
>>518
fsutil fsinfo ntfsinfo
531:デフォルトの名無しさん
18/03/25 02:58:05.04 Z3IDZNHN.net
>>511
>>513
いまだとHAPかな?
532:デフォルトの名無しさん
18/03/25 03:08:23.05 eoB6ZVmc.net
特定のクラスのインスタンスを探したり列挙したりすることって出来ないのでしょうか?
A a = A();//オブジェクトの生成をどこかに記録するとか面倒なこと無しに
A b = A();
A c = A();
FindObjects(A).ForEach(・・・・・);//雰囲気としてはこんなことがやりたいんです
533:デフォルトの名無しさん
18/03/25 03:09:02.83 eoB6ZVmc.net
嗚呼、今見たらnewが抜けてた・・・・
534:デフォルトの名無しさん
18/03/25 06:50:33.94 ODva5YKs.net
コンパイラの選択次第で出来上がりの性能でそんなに変わる?
535:デフォルトの名無しさん
18/03/25 07:44:12.53 iS73Z4MS.net
>>521
できない
お前が言ってるのを実現してしまったら、
var a = new Message(text: "うんこ");
a.Print(); //textに渡した内容を出力する
で一行目と二行目の間にaの内容が勝手に他所から書き換えられている可能性を常に考慮しないといけなくなるんだぞ?
初心者ならピンとこないかもしれないけどね
初心者がプログラミング言語を学ぶときは常に以下のように考えることが大切
・これを作った人は自分より遥かに頭が良く経験豊富である
・普通の方法でできないのは、それが悪いことだから
536:デフォルトの名無しさん
18/03/25 08:04:35.72 vPJlyNvz.net
>>521
コンストラクタでどこかに記録しときゃいいだけじゃね?
任意のクラスでやりたいならコンパイラに手を入れるなりしないと無理
537:デフォルトの名無しさん
18/03/25 09:55:55.34 Z3IDZNHN.net
>>521
生成後、List<A> Alistにaddすれば可能。
538:デフォルトの名無しさん
18/03/25 10:33:10.02 sIW0PrXb.net
グローバル変数が大好きなんだな
539:デフォルトの名無しさん
18/03/25 10:36:47.24 XLrMHO3h.net
時代はグローバル
540:デフォルトの名無しさん
18/03/25 10:37:55.50 5WPMat6H.net
>>521
class A{
public static readonry List<A> allList = new List<A>();
public A(){
allList.Add(this);
}
public void Dispose(){
allList.Remove(this);
}
自分ならこうやってクラス内のstaticに入れておく
541:デフォルトの名無しさん
18/03/25 10:40:15.38 BGDDphgd.net
>>521
参照するだけなら自分に属しているフォームやクラスは列挙できるだろ
あとは名前で探せよ
542:デフォルトの名無しさん
18/03/25 10:54:23.63 5WPMat6H.net
明示的にDisposeを呼ぶのが面倒というなら、
リストに入れるのを弱参照にしてデストラクタを実装すれば全自動に出来るよ
543:デフォルトの名無しさん
18/03/25 10:57:31.10 BGDDphgd.net
>>531
探して代入したものでDisposeやCloseもできる。インスタンスの書き換えはできない
521が何のためにやりたいかによる
544:デフォルトの名無しさん
18/03/25 11:09:02.92 Ol/c1EKt.net
レガシーシステムで一番困るのはグローバル変数
これ以外は簡単にリファクタリング出来るがグローバル変数だけは簡単にはいかない
545:デフォルトの名無しさん
18/03/25 11:20:06.56 vPJlyNvz.net
普通の知能持ってたら>>529みたいにクラス内のスタティック変数でやると思う
グローバル連呼してる奴は知能足らなさすぎじゃね?
546:デフォルトの名無しさん
18/03/25 11:21:28.40 Kz38QhUD.net
他言語のグローバル変数マンがpublic staticマンになる
547:デフォルトの名無しさん
18/03/25 11:31:07.75 sIW0PrXb.net
>>534
ただ、
UnkoWorld-●UnkoArea-●Unko
みたいな関係にしたくなったとき
それでやってると
ウンコみたいにウンコウンコになるんちゃう?
548:デフォルトの名無しさん
18/03/25 11:34:42.78 Ol/c1EKt.net
>>534
パブリックなら同じ
最初に書くときにらくだからって堕落して思考停止してグローバルを使うと
だんだん考える力が衰えてこういう判断ができなくなる
549:デフォルトの名無しさん
18/03/25 11:40:28.11 Ol/c1EKt.net
パブリックスタティック書くお^q^
グローバル連呼は知能がたらないお^q^
ぼくはかしこいんだお^q^
おっおっ^q^
これがグローバル変数を使う人間の末路です
恐ろしですね
550:デフォルトの名無しさん
18/03/25 11:42:06.07 hyW7/lyL.net
末期やな>>538のグロ厨
551:デフォルトの名無しさん
18/03/25 11:42:40.12 sIW0PrXb.net
俺も一瞬いいかな?
とか思ったけどpublicにされた時点ですべてが駄目なことに気づいた
552:デフォルトの名無しさん
18/03/25 11:45:41.52 /CvrewET.net
具体的にどういうときにそうしたくなるか書いてあればヒントがでてくるかもしれないけど
一般的になんでもかんでもそうしたいと言うのはNGだと思う
553:デフォルトの名無しさん
18/03/25 11:53:10.41 yM5ntbb+.net
>>529のケースだとpublicにする必要ないよね
554:デフォルトの名無しさん
18/03/25 11:58:50.34 /CvrewET.net
ローカルで使い捨て目的でAを作ったとしても
明示的にdisposeしないと消えない
c++のnew deleteのメモリリーク問題を回避するためにガベージコレクションの仕組みができたのに
また逆戻りするだけ
555:デフォルトの名無しさん
18/03/25 12:01:37.82 Ol/c1EKt.net
privateならOKってのも短絡的だよな
独立に生成したはずのオブジェクト同士が外から見えない部分で密かに連携し合っているとか破滅の臭いがプンプンするぜ
556:デフォルトの名無しさん
18/03/25 12:02:42.33 sIW0PrXb.net
>>542
>>529はNG
こうやって使いたくないときもこうなっちゃうじゃん
static抱えちゃうのは悪手
557:デフォルトの名無しさん
18/03/25 12:10:21.24 /CvrewET.net
public じゃなかったらどうやって要素を列挙するんだよ
558:デフォルトの名無しさん
18/03/25 12:15:08.82 sIW0PrXb.net
>>546
多分仕様がウンコ
客と詰めきれてない
コードばっかり見てるとバカになるやつの典型
外の空気でも吸ってきたらよい
559:デフォルトの名無しさん
18/03/25 12:16:49.43 vPJlyNvz.net
>>546
えっ? w
まあパブリックにしても外部から書き換えられないなら大抵は問題ない
>>537とかはパブリックと言うだけで思考停止してる老害なんだろうな
560:デフォルトの名無しさん
18/03/25 12:20:32.55 /CvrewET.net
>>548
えじゃねーよ
考えてなかっただろ
561:デフォルトの名無しさん
18/03/25 12:22:41.04 yM5ntbb+.net
>>545
フレームワーク側でstaticをガンガン使ってるけどそれには文句言わないの?
562:デフォルトの名無しさん
18/03/25 12:26:42.83 eoB6ZVmc.net
そうか、>>521で書いちゃったのが実現できるようにすると、いつまでもインスタンスへの到達可能性が残ってGCが機能しなくなるのか
全然わからなかったわ
563:デフォルトの名無しさん
18/03/25 12:27:48.76 /CvrewET.net
>>551
そういうこと
目的を絞った特殊な状況でしか使えない
一般的に使うのはNG
564:デフォルトの名無しさん
18/03/25 12:29:14.40 hyW7/lyL.net
>>551
ならんわw
565:デフォルトの名無しさん
18/03/25 12:42:56.52 PVODPgu2.net
いつもそうだけど、本質を少しも突かない頭の悪いやり取りしかないねw
論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
俺はないことはないと思う。
ただ、揚げ足取りかもしれんが、>>529はList<T>をそのまま公開してるのはまずい
566:デフォルトの名無しさん
18/03/25 13:09:44.61 5WPMat6H.net
>>554
実際やるときはさすがにprivateにしてstatic ForEachを実装するし、
ライブラリ化するならセーフティとしてリストをWeakReference<T>にしてデストラクタで自動削除するよ
ただ掲示板でそこまで長々と書く気はないだけで
567:デフォルトの名無しさん
18/03/25 13:13:01.00 Tb46nDVy.net
指定の時刻を過ぎたらbackgroundworkerを止める仕組みを作りたいのですが
なにかおすすめの方法はありますでしょうか?
568:デフォルトの名無しさん
18/03/25 13:27:59.98 lVxRvEma.net
>>555
クラスの扱いの話がクラス自身を変更しちゃってる実装に違和感
569:デフォルトの名無しさん
18/03/25 13:51:57.79 JPEij3S4.net
>>556
それだけだとどこで時間を確認するべきかすらわからん
仕様きちんと決めてから質問して
570:デフォルトの名無しさん
18/03/25 13:55:31.94 5MzIJnBg.net
>>549
はあ?
そう言うイテレーター作る
571:だけだろ w
572:デフォルトの名無しさん
18/03/25 14:09:46.22 5MzIJnBg.net
>>551
デストラクタでリストから外せばいいだけ
もしくはIDisposableにしてdispose( )で外すとかでもいい
573:デフォルトの名無しさん
18/03/25 14:39:30.42 HUiARVtR.net
>>560
参照が残った状態でデストラクタが働くの?
574:デフォルトの名無しさん
18/03/25 14:41:03.20 5WPMat6H.net
>>561
世の中には弱参照というものがあってな
575:デフォルトの名無しさん
18/03/25 15:22:13.04 Ol/c1EKt.net
そういやここ初心者スレだったか
>>548みたいなのも居るか
576:デフォルトの名無しさん
18/03/25 15:29:41.34 Zk7ZAw6P.net
また元の質問者蚊帳の外に置いて盛り上がっている
オレオレ仕様で議論されても誰の役にも立たないんだよ
577:デフォルトの名無しさん
18/03/25 15:39:34.96 vPJlyNvz.net
>>563
グローバルガーって知ったかして恥ずかしいからって粘着するなよ w
578:デフォルトの名無しさん
18/03/25 15:40:34.61 Ol/c1EKt.net
>>565
は?
579:デフォルトの名無しさん
18/03/25 15:48:44.21 XJO2spvZ.net
初心者スレでマウントするイキリオタクにはなりたくないね
580:デフォルトの名無しさん
18/03/25 16:05:42.72 vPJlyNvz.net
グローバルガーでマウント取ろうとして失敗したID:Ol/c1EKtをそこまでバカにしてやるなよ w
581:デフォルトの名無しさん
18/03/25 16:28:46.20 n/bZLhLz.net
インスタンス生成と生成されたインスタンスをコレクションに追加するのは別のクラスの役割
>>521はコレクションの要素を型でフィルタリングできたらいいわけだから素直に実装したほうがいい
582:デフォルトの名無しさん
18/03/25 16:28:46.85 rmzLSBrs.net
よう分かりませんけど、このスレをプリントアウトして明日朝一番で精神科にかかることをお勧めします
このIDが僕です!って正直に言うんだよ
583:デフォルトの名無しさん
18/03/25 16:46:03.35 TrFdb9nA.net
>>569
わざわざクラスを増やす必然性はないだろ
584:デフォルトの名無しさん
18/03/25 16:50:54.77 5WPMat6H.net
>>569
クラス単体で閉じてる機構をわざわざ外部に別けて何がしたいんだよ
メンテナンス性が下がるだけじゃん
585:デフォルトの名無しさん
18/03/25 16:55:50.35 sIW0PrXb.net
>>572
いや、この仕組みが入っているがために使えない状況が出てきちゃうんじゃね?
586:デフォルトの名無しさん
18/03/25 16:57:56.62 sIW0PrXb.net
本来クラスAがクラスA足る為に必要な処理じゃないんだよ
リストに追加なんてのは
587:デフォルトの名無しさん
18/03/25 17:00:09.33 n/bZLhLz.net
>>571
>>572
きみたちマジか!!
オブジェクト指向設計原則の基礎だぞ
それを破るだけのメリットがあるユースケースなのかな?
588:デフォルトの名無しさん
18/03/25 17:11:36.39 5WPMat6H.net
>>573-575
そこまで言うなら実際に書いて見せてみろ?
589:デフォルトの名無しさん
18/03/25 17:19:41.51 sIW0PrXb.net
>>576
普通にlist外に出せよ
590:デフォルトの名無しさん
18/03/25 17:27:26.70 +wly4/Cl.net
>>577
グローバルがだいしゅきなの?
591:デフォルトの名無しさん
18/03/25 17:35:09.99 vPJlyNvz.net
>>577
へっ?
外出ししてグローバルにしろとでも言うのか? w
592:デフォルトの名無しさん
18/03/25 17:37:41.15 +wly4/Cl.net
>>575
型として絶対使わない機能を分離してどうするの?
オブジェクト指向の目的もしかして理解してない?
593:デフォルトの名無しさん
18/03/25 17:38:38.10 sIW0PrXb.net
>>579
誰もグローバルなんて言ってないけど
どっから出てきたん?
594:デフォルトの名無しさん
18/03/25 17:44:59.40 +wly4/Cl.net
>>581
どこの誰がどんなスコープでList持つ想定でいるの?
595:デフォルトの名無しさん
18/03/25 17:45:57.80 sIW0PrXb.net
>>582
まあ、それ次第だよな
596:デフォルトの名無しさん
18/03/25 17:49:26.15 +wly4/Cl.net
>>583
A.ForEachでアクセスする変数をA以外に持たせたら漏れなくグローバルになるけど、何を思ってAの外に出せと言ったの?
597:デフォルトの名無しさん
18/03/25 17:50:30.14 sIW0PrXb.net
>>584
ならねーよ
死ねよ
598:デフォルトの名無しさん
18/03/25 17:50:49.15 vPJlyNvz.net
>>581
なら
> 普通にlist外に出せよ
のlistをどこに置くのか言ってみろよ
599:デフォルトの名無しさん
18/03/25 17:52:11.71 sIW0PrXb.net
>>586
使うやつが勝手に作ればいいじゃん
クラスAにはなんの関係もないことだ
600:デフォルトの名無しさん
18/03/25 17:52:
601:42.22 ID:vPJlyNvz.net
602:デフォルトの名無しさん
18/03/25 17:53:06.16 sIW0PrXb.net
>>588
は?どこが?
603:デフォルトの名無しさん
18/03/25 18:04:31.71 5WPMat6H.net
>>587
自身の生成したインスタンス一覧を保持するのはclass Aの基本要件だが、
何でお前はそれを無視してclass Aの仕様そのものを変えたがるんだよ
604:デフォルトの名無しさん
18/03/25 18:11:58.07 sIW0PrXb.net
>>590
え?要件定義でそんなの出てくるの?
頭おかしいからだろ?
605:デフォルトの名無しさん
18/03/25 18:12:36.02 Vv01uOP7.net
初心者がマウントのために吠えあうスレになってんなw
>>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
606:デフォルトの名無しさん
18/03/25 18:13:47.46 +wly4/Cl.net
>>591
あたまわっるー
607:デフォルトの名無しさん
18/03/25 18:16:24.49 a4i6A50g.net
>>591
要件定義クソワロタwww
608:デフォルトの名無しさん
18/03/25 18:17:30.34 sIW0PrXb.net
>>592
だよね
609:デフォルトの名無しさん
18/03/25 18:17:53.31 h+QwjUa5.net
たった数行のコードなりUMLなり書けば伝わる話なのに、
何十行も日本語書き連ねて言い訳してる時点で初心者以下だと思うのね
俺の考えた設計が最高と思うならC#で書けよ
書けないなら黙れ、素人
610:デフォルトの名無しさん
18/03/25 18:18:45.66 sIW0PrXb.net
>>596
でもお前単発じゃん
ご自慢の主張したいコードが付いてないけど?
611:デフォルトの名無しさん
18/03/25 18:19:20.14 xrxDySNz.net
しょうもな
一般論を言えば>>587が正しいが、これでは質問者の要件は満たせない。
>587は必要があってシングルトンにしてるクラスについて、
そんなことしなくても使う側が一つのインスタンスだ作ればいいじゃないか、って言ってるのと同じ
612:デフォルトの名無しさん
18/03/25 18:23:46.34 sIW0PrXb.net
>しょうもな
>一般論を言えば>>587が正しい
ここで止めろよ
初心者の質問なんだからよ
正しいこと覆して話進める価値あるの?
613:デフォルトの名無しさん
18/03/25 19:06:07.44 vPJlyNvz.net
>>592
> >>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
いや、そんなことはみんなわかっててそのコレクションをどこに置くんだって話
老害レベルの知ったかがグローバルとか口走ってごまかすのに必死になってるだけ w
614:デフォルトの名無しさん
18/03/25 19:43:00.47 Ol/c1EKt.net
グローバル変数を使うど素人はさっさと転職したほうがいいぞ
615:デフォルトの名無しさん
18/03/25 19:50:31.57 XLrMHO3h.net
え?まさかプロがこんな所覗いて浅い知識ひけらかしてる訳じゃないよな?
616:デフォルトの名無しさん
18/03/25 20:11:31.70 sIW0PrXb.net
>>602
時代はグローバル
617:デフォルトの名無しさん
18/03/25 20:13:55.09 XLrMHO3h.net
>>603
山田くん、座布団一枚!w
618:デフォルトの名無しさん
18/03/25 21:08:37.79 ntckGCHi.net
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです
EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです
619:デフォルトの名無しさん
18/03/25 21:18:29.22 o6f1Dm/5.net
>>520
しらなんだー
使ってみます!
仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。
620:デフォルトの名無しさん
18/03/25 23:07:48.90 30He22WI.net
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?
621:デフォルトの名無しさん
18/03/25 23:12:48.41 B8f0LaKL.net
出来るよ
622:デフォルトの名無しさん
18/03/25 23:48:35.48 n/bZLhLz.net
>>576
>>580
あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね
指定されたwhat
623:が正しい前提でhowを考えるか 正しくない可能性も考慮してwhyを含めて考えるか 視点の違い
624:デフォルトの名無しさん
18/03/25 23:59:44.77 fmRuNsvM.net
「○○なことがしたいんだけど…」
「その要望は正しくないから考えを改めるべきだ!」
正しくないからやらない
プログラマとは思えない凄い斬新な発想だな
625:デフォルトの名無しさん
18/03/26 00:09:13.21 v9FPJIaO.net
素直に「ぼくにはできましぇん(泣)」って言えばいいのにね
626:デフォルトの名無しさん
18/03/26 00:11:47.31 YTVmG1TL.net
質問でも回答でもないレスは他でやれ
>>607
わかりやすい方法の一つ
Visual StudioでWindowsFormで作るとProgram.csが作られるから書き換える
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (0 == args.Length)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;
}
//ここから下に引数があった時の処理
}
}
627:デフォルトの名無しさん
18/03/26 00:13:56.74 m3Kkye2j.net
とりあえず初心者用スレで語るの辞めてもらえませんか
628:デフォルトの名無しさん
18/03/26 00:16:17.47 QH+aPMzj.net
ヨーダ記法はやめてくれ…
629:デフォルトの名無しさん
18/03/26 00:24:06.83 cY1aRMKv.net
>>610
設計しない下請けプログラマー的発想だな
630:デフォルトの名無しさん
18/03/26 00:31:10.42 XKiwACKR.net
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない
631:デフォルトの名無しさん
18/03/26 00:36:48.08 PvcYNBhB.net
>>615-616
よく知恵袋にいる質問者にSEKKYOしてる奴みたいなことしてんのか
お前らさては無職だな?
632:デフォルトの名無しさん
18/03/26 00:42:45.85 vpzWQp7E.net
またボケ老人同士のの繰り言合戦が始まった
繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。
一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり
633:デフォルトの名無しさん
18/03/26 00:50:14.64 Dv2PEULu.net
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね
634:デフォルトの名無しさん
18/03/26 02:26:07.62 wzFW36Lw.net
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・
これと同じ構造のインスタンスが最大70個くらい出来ます。
↓
Form - Panel1 - Panel2 - TextBox
- Panel3 - Panel4 - TabControl - TabPage - Panel - Button
635:デフォルトの名無しさん
18/03/26 02:43:07.18 cavhWqCs.net
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
this.HogeTextBox.Text = "hoge";
}
636:デフォルトの名無しさん
18/03/26 04:07:03.39 AffV6ek/.net
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど
637:デフォルトの名無しさん
18/03/26 07:56:24.40 M54ZFy+S.net
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました
これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。
638:デフォルトの名無しさん
18/03/26 08:10:40.35 DzDpiGFR.net
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける
逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する
同じような関数を、たくさん作るのは良くないから
639:デフォルトの名無しさん
18/03/26 08:15:42.61 DzDpiGFR.net
>>623
「windows タスクスケジューラ」で検索!
640:デフォルトの名無しさん
18/03/26 12:37:28.74 KMiayiKp.net
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。
641:デフォルトの名無しさん
18/03/26 12:43:13.71 ErqiV+UW.net
自分で自分を起動するメタプログラムやね
642:デフォルトの名無しさん
18/03/26 12:49:56.47 ZELYO3P5.net
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ
643:デフォルトの名無しさん
18/03/26 12:54:28.04 4B0nX6es.net
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww
要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?
そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に
644:デフォルトの名無しさん
18/03/26 12:59:57.75 ZELYO3P5.net
アプリは起動してる前提でいいの?
終了してると動かないけど
645:デフォルトの名無しさん
18/03/26 13:02:31.43 oo+qoL1t.net
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件
646:デフォルトの名無しさん
18/03/26 13:06:38.61 PvcYNBhB.net
また常駐アプリの概念すら知らない初心者が知ったかでアドバイスしてる
647:デフォルトの名無しさん
18/03/26 13:13:11.57 4B0nX6es.net
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない
何が知ったかだよアホかほんと
648:デフォルトの名無しさん
18/03/26 13:17:42.44 xJxqYO19.net
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?
649:デフォルトの名無しさん
18/03/26 13:18:39.78 4UQMW5SP.net
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面
ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄
650:デフォルトの名無しさん
18/03/26 13:21:52.38 PvcYNBhB.net
>>635
『アプリを起動』なんて言葉は>>623のどこにも書いてないけどな
651:デフォルトの名無しさん
18/03/26 13:28:09.86 xpW3ZJwT.net
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!
652:デフォルトの名無しさん
18/03/26 13:29:55.97 4UQMW5SP.net
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど
653:デフォルトの名無しさん
18/03/26 13:31:09.52 xpW3ZJwT.net
>>629
タイマーを使って時計をポーリング?
という方法で調べてみます
ありがとうございます
654:デフォルトの名無しさん
18/03/26 13:32:01.24 4UQMW5SP.net
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了
655:デフォルトの名無しさん
18/03/26 13:32:30.43 xpW3ZJwT.net
>>638
その方法を調べてみます
656:デフォルトの名無しさん
18/03/26 14:27:09.74 oo+qoL1t.net
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな
657:デフォルトの名無しさん
18/03/26 14:47:34.51 PvcYNBhB.net
「大変!右上の×押したらプログラムが終了しちゃう!」
だから常駐化しろよって話だろ?
658:デフォルトの名無しさん
18/03/26 14:51:53.23 b4TsAUH3.net
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?
659:デフォルトの名無しさん
18/03/26 14:55:32.88 EeYp3eGw.net
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3
660:デフォルトの名無しさん
18/03/26 15:04:02.11 b4TsAUH3.net
>>645
いいじゃん
後は質問者が抜けを塞げばいいよ
661:デフォルトの名無しさん
18/03/26 15:08:18.93 b4TsAUH3.net
職業柄すべてのケースをマトリックスで表現しないと組ませてもらえないから気になるんだよ
662:デフォルトの名無しさん
18/03/26 15:09:01.34 DzDpiGFR.net
ポーリングは、やったらダメなのが常識だろw
素人が助言してる
CPU が動き続ける。
CPU使用率が100% になって、フリーズするだけw
663:デフォルトの名無しさん
18/03/26 19:03:18.07 Hi5Z0lMV.net
>>648
1秒タイマーでもCPU負荷なんてゼロも同然だよ
まさかノーウェイト全力ループさせることしか思いつかないとか?
664:デフォルトの名無しさん
18/03/26 19:06:27.36 lrnbqywH.net
デスクトップアプリでAzureのデータベースと接続したいのですが、一般的に接続文字列等はどうやって隠蔽するんでしょうか
ハードコーディングしてもリバースエンジニアリングされたらモロバレになるので気になります
665:デフォルトの名無しさん
18/03/26 19:12:25.54 2N4AiZYB.net
>>650
URLリンク(sqlazure.jp)
666:デフォルトの名無しさん
18/03/26 19:21:09.66 Sl5sXtlN.net
>>650
FPGAまで落とし込むんだ
667:デフォルトの名無しさん
18/03/26 21:20:01.51 e5zVULSK.net
現在の日付時刻が設定した日付時刻より後か前か判断するにはどうしたらいいでしょうか?
datetime同士で引き算とかは可能なのですか?
668:デフォルトの名無しさん
18/03/26 21:26:27.62 SPNFNX7k.net
>>653
キーワードわかっているものはさすがにググれ
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
減算・後の数値かどうか。メソッドも演算子も全部書いてある
669:デフォルトの名無しさん
18/03/26 21:52:26.85 e5zVULSK.net
ありがとう御座います
datetime同士の計算結果であるtimespanはtimespan>=0やtimespan<0で場合分けしても差し支えないのでしょうか
670:デフォルトの名無しさん
18/03/26 21:55:12.57 VM7iT5OR.net
>>655
いや普通にDateTime同士で大小比較できるぞ
671:デフォルトの名無しさん
18/03/26 22:00:38.75 /1kq2kd6.net
いや、それ以前に
>>654がせっかく
> 演算子も全部書いてある
って言ってるんだからちゃんと見ようよ
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
672:デフォルトの名無しさん
18/03/26 22:08:40.49 e5zVULSK.net
なるほど、datetimeで大小比較すればいいのですね
ありがとう御座います
msdn分かりにくくありませんか?
難しい(*_*)
673:デフォルトの名無しさん
18/03/26 22:18:02.65 AHHYeqDL.net
>>658
分かりにく�
674:「よね 俺も前からそー思ってけど言い出しにくかった
675:デフォルトの名無しさん
18/03/26 22:36:24.40 pJYeIgRu.net
unixtimeを4.0でDateTime型に変換するにはどうすればよかたい
676:デフォルトの名無しさん
18/03/26 22:42:13.90 iiFlz3sh.net
>>660
4.0とは?
677:デフォルトの名無しさん
18/03/26 22:56:15.63 e5zVULSK.net
backgroundworker開始時に次の17時になるdatetimeを取得してループ開始、ループ毎に現在のdatetimeと設定のdatetimeを比較して過ぎていたら停止させようと思うのですが
次の17時のdatetimeを取得する方法はありますか?
678:デフォルトの名無しさん
18/03/26 23:34:03.76 Hi5Z0lMV.net
c# datetime unixtime
679:デフォルトの名無しさん
18/03/26 23:48:44.24 lh4NSg1Q.net
>>662
datetimeそのものじゃなくても時間だけならHourを比較したらいいよ
var h=Datetime.Now.Hour;
if( h>=9 ){ ... } //9時以降なら
680:デフォルトの名無しさん
18/03/26 23:56:49.96 pJYeIgRu.net
>>661
.netです
681:デフォルトの名無しさん
18/03/27 00:02:34.95 RoQzbf+s.net
>>664
それがすごい気になるんですが
9時以降っていうのは何時までを指すのでしょうか?
極端な話次の日の8時とかになっても条件を満たしますか?
682:デフォルトの名無しさん
18/03/27 00:06:42.35 5DREL+sj.net
>>665
.NET Framework4.0のこと?もうとっくにサポート切れてるけど合ってる?
683:デフォルトの名無しさん
18/03/27 00:06:43.46 1syCFnvF.net
どこ基準のUNIXTIMEか知らないけど1970年1月1日からの経過秒数だから
var origin =new DateTime(1970,1,1);
var unixtime=DateTime.Now-origin;
タイムゾーンは自分で好きなようにしてください
>>666
Hourはあくまでも時間の部分だけだから0時になったら満たさなくなる
条件はよく考えて自分で設定すること
684:デフォルトの名無しさん
18/03/27 00:08:14.05 1syCFnvF.net
ああ抜けてる
var origin =new DateTime(1970,1,1);
var unixtime=( DateTime.Now-origin ).TotalSeconds;
685:デフォルトの名無しさん
18/03/27 00:20:12.69 RoQzbf+s.net
なるほど、ではループが30分の場合
終了を23時50分に設定してしまうと止まらず動いたままになる可能性もあるということですね
686:デフォルトの名無しさん
18/03/27 00:30:37.92 i+K8FLsM.net
>>662
var n = DateTime.Now; // 今
var s = n.Date.AddHours(17); // 今日の17時
var x = n < s ? s : s.AddDays(1); // 次の17時
while (DateTime.Now < x) {
// 次の17時まで何かする
}
687:デフォルトの名無しさん
18/03/27 00:33:39.52 1syCFnvF.net
Datetimeのコンストラクタはいろいろなパターンがあるからどうとでも作れる
DatetimeはTimespanを足して新しいDatetimeもつくれるので
まあじっくり見て勉強することだな
終了条件をどのように設計してるのか知らないけど特定の日付の特定の時刻を設定してたら
途中で休止などして時刻を過ぎた後、再度復帰した場合すぐ終了してしまう
そして、指定時間以降だったらまたすぐ動くことになる
などどういうことを想定するよって何を選ぶかは変わる
688:デフォルトの名無しさん
18/03/27 00:34:17.93 1syCFnvF.net
>>671
思いっきりバグコードだけど
689:デフォルトの名無しさん
18/03/27 00:36:06.00 RoQzbf+s.net
>>671
これいいですね!
解決しそうです。ありがとうございます。
xの?や:の意味がわかりませんがとりあえずコピペします
ラムダ式みたいなものかな?
690:デフォルトの名無しさん
18/03/27 00:36:42.86 RoQzbf+s.net
>>673
!
691:デフォルトの名無しさん
18/03/27 00:38:51.06 i+K8FLsM.net
>>673
えっ!?
692:デフォルトの名無しさん
18/03/27 00:40:05.98 1syCFnvF.net
>>675
>>676
勘違いしてた
9時スタートで5時終わりの話を引きずってるのかと思ってた
693:デフォルトの名無しさん
18/03/27 00:42:26.00 tVuDF99u.net
>>667
え、ソースは?
694:デフォルトの名無しさん
18/03/27 00:43:09.93 RoQzbf+s.net
よかったです
?はifで:はelseみたいなものですかね?
便利ですね
695:デフォルトの名無しさん
18/03/27 00:46:08.70 1syCFnvF.net
16時59分スタートなら1分でストップ
17時00分ジャストなら次の日の17時まで24時間でストップ
696:デフォルトの名無しさん
18/03/27 00:52:08.65 i+K8FLsM.net
>>671は17時直前に呼び出すと何もしないで終わる可能性があるな
do whileのほうがいいかもしれん
697:デフォルトの名無しさん
18/03/27 00:52:53.72 dhIDlkWy.net
終了を17時30分にしたい場合は以下のようなコードで大丈夫でしょうか?
var n = DateTime.Now; // 今
var s = n.Date.AddHours(17).AddMinutes(30); // 今日の17時30分
var x = n < s ? s : s.AddDays(1); // 次の17時30分
while (DateTime.Now < x) {
// 次の17時30分まで何かする
}
698:デフォルトの名無しさん
18/03/27 00:54:52.06 dhIDlkWy.net
>>680
こんな感じでも特に問題はありません。
むしろわかりやすくて希望通りです。
699:デフォルトの名無しさん
18/03/27 00:55:47.09 7SLvU9BO.net
DateTimeなんてめったに使わんけど、使ってみたら値型のくせにイミュータブルで
なんだか使いづらいね
// 時分秒が指定した値となる現在より後の直近の日時を返す
public static DateTime GetNextDateTimeFromNow(int hour, int min, int sec)
{
var now = DateTime.Now;
var next = new DateTime(now.Year, now.Month, now.Day, hour, min, sec);
return next > now ? next : next.AddHours(24);
}
700:デフォルトの名無しさん
18/03/27 00:56:05.12 1syCFnvF.net
>>682
試せばいい
DateTime.Nowじゃなくて自分てnew Datetime()して
自由にnを作って試せばいい
701:デフォルトの名無しさん
18/03/27 00:59:24.75 1syCFnvF.net
>>684
AddHours(24)なのはなぜ?
うるう秒があったらずれる(そんな仕組みは多分ないけど)
702:デフォルトの名無しさん
18/03/27 01:00:54.28 1syCFnvF.net
AddDaysでもずれるか
703:デフォルトの名無しさん
18/03/27 01:04:20.64 5DREL+sj.net
>>678
ググれば一発やろ
704:デフォルトの名無しさん
18/03/27 01:05:23.72 Q5x4N+CR.net
無限ループやってる奴はわざとなのかガチなのか
705:デフォルトの名無しさん
18/03/27 01:11:21.45 t3gWSj15.net
仕様が全く見えて来ない
706:デフォルトの名無しさん
18/03/27 01:13:48.60 t3gWSj15.net
9:00~17:00でいいんだよな?
707:デフォルトの名無しさん
18/03/27 01:16:52.17 dhIDlkWy.net
とりあえずその時間帯ですが21時から5時までとかにも対応するようにしたいです。
とりあえず出来そうです助かりました。
708:デフォルトの名無しさん
18/03/27 01:17:51.30 5DREL+sj.net
>>669
.NET4.6以降ならBCLに専用のAPIが用意されてるからこんなことしなくていいんだけどね
709:デフォルトの名無しさん
18/03/27 01:19:00.55 tVuDF99u.net
>>693
糞会社が4.0止まりなんだ
710:デフォルトの名無しさん
18/03/27 01:20:41.65 rY6p5Eum.net
>>694
4.0はもうサポート対象外だし、Windows Server 2012も非対応なのに使わざるを得ないとか同情するわ
711:デフォルトの名無しさん
18/03/27 01:24:49.59 t3gWSj15.net
>>692
最大実行時間は何時間なん?
21時~3日後の21時までなんて可能性は排除できるん?
平日と休日とで違いはないん?
とかね
なんか仕様がモヤっとしてんじゃん
712:デフォルトの名無しさん
18/03/27 01:30:08.36 dhIDlkWy.net
>>696
だいたい8から13時間程度の稼動になります!
713:デフォルトの名無しさん
18/03/27 01:30:24.22 ff4RZBmU.net
4.X系ならアップグレードのコストはそんなにかからないだろうに
お前が変えさせるか、辞めちまえ
714:デフォルトの名無しさん
18/03/27 01:36:06.94 t3gWSj15.net
>>697
最大よ最大
返答に範囲が返って来ると気が狂うん
イレギュラーケースの最大を聞いてん
715:デフォルトの名無しさん
18/03/27 01:49:34.53 XpaqG/wa.net
最大13時間です!
すいません!
716:デフォルトの名無しさん
18/03/27 03:45:35.94 7OwU1Hvz.net
同期プリミティブ
URLリンク(www.tokumaru.org)
ポーリングは、ダメの見本。常識
ランデブーとか、待ち合わせしたいだけだろ。
それ�
717:ゥ、非同期で、callback してもらえば良いだけw
718:デフォルトの名無しさん
18/03/27 04:03:08.18 E80vD2cb.net
task.delay(100)とTheading.sleep(100)ってどう違うの?
719:デフォルトの名無しさん
18/03/27 07:45:14.33 i+K8FLsM.net
素人ってやたらとポーリングを嫌うよね
720:デフォルトの名無しさん
18/03/27 09:12:45.31 8h15hFzc.net
CPU100%とか言ってるし無限ループと勘違いしてるんだろ
721:デフォルトの名無しさん
18/03/27 09:37:19.37 84JRCCml.net
まあ素人さんはしょうがない
722:デフォルトの名無しさん
18/03/27 09:39:14.11 kmAPzdoZ.net
>>702
Thread.Sleepは指定した時間自分のスレッドを停止する
Task.Delayは「指定した時間停止するスレッド」を生成する
Task.Delayは単独では意味がないのでawaitなりContinueWithなりする
723:デフォルトの名無しさん
18/03/27 09:48:09.70 rY6p5Eum.net
async/awaitの勉強しているんだが、async voidやasync Taskのメソッドをawait無しで呼び出したらそのメソッドの処理は投げっぱなしになるの?
724:デフォルトの名無しさん
18/03/27 10:48:57.49 fbReATtq.net
そだよ。
725:デフォルトの名無しさん
18/03/27 12:21:35.26 7OwU1Hvz.net
そもそも、MS が、50ms 以上掛かる処理は、同期処理するなって言ってるだろ。
非同期処理にして、callback してもらうようにって
「ポーリング」で検索して、色々な記事を読め
726:デフォルトの名無しさん
18/03/27 12:28:13.60 xeybzECW.net
何がそもそもなんだw
>>709の世界ではDateTimeの比較演算に50msもかかるのかw
30年前のPC-98だってそんなにかからないと思うけどww
ネタなのかマジなのか知らんけど、そもそもHW資源を直接触れないOS上で動くコードは
一件コールバックのように見える処理も実態はポーリング
単にそれがシステム側のコードに隠蔽されてるだけ
727:デフォルトの名無しさん
18/03/27 12:35:46.40 GW1/xmrB.net
spin lock なんてものは無かったんや
いやぁ勉強になるなぁ
728:デフォルトの名無しさん
18/03/27 12:38:24.18 rY6p5Eum.net
>>708
サンクス
729:デフォルトの名無しさん
18/03/27 12:39:38.04 nnyxYnJQ.net
元々タスクスケジューラで十分な話をよくもここまで長々と続けられるな
730:デフォルトの名無しさん
18/03/27 12:44:03.80 Eb35YKQg.net
質問にとは関係ない部分で知識をひけらかしたい奴がいるから
731:デフォルトの名無しさん
18/03/27 13:12:24.26 8gmuwQWV.net
仮にオレがこのソフトを作るとしたら、NotifyIconのデザインで小一時間悩むところから始まるだろうね
732:デフォルトの名無しさん
18/03/27 13:45:19.52 7OwU1Hvz.net
何時間も待つ処理だろ。
50ms を超えてるから、非同期処理を使えって、MS が言ってる
自分でプログラミングで、ポーリングしたらダメ
OS の内部処理とは関係ない
733:デフォルトの名無しさん
18/03/27 13:53:27.94 Eb35YKQg.net
思い込み激しい奴だな
734:デフォルトの名無しさん
18/03/27 14:12:37.92 9YSJ28+H.net
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
735:デフォルトの名無しさん
18/03/27 14:24:49.80 zZm0N0X4.net
スレチ
736:デフォルトの名無しさん
18/03/27 14:35:31.77 ClOSXPHI.net
1秒タイマーでタイムアウトするたびに目的の時刻を越えたか
調べるだけでいいじゃないの
違ったら即抜けるだけなのに、50msも掛かる処理じゃねーよ
なんでわざわざタスクスケジューラー使わにゃならんのだ
737:デフォルトの名無しさん
18/03/27 15:21:58.88 1rmw5Lza.net
>>709
ぜんぜん理解してないじゃん
738:デフォルトの名無しさん
18/03/27 18:28:00.64 84JRCCml.net
コミュ障は病気だからやむを得ないが
読解力は人並みに身につけてから書き込んで欲しいよなw
739:デフォルトの名無しさん
18/03/27 19:38:51.59 8gmuwQWV.net
タイマーのインターバルは10秒とか100秒だけじゃなくて、10年でも100年でも設定できるんだから
起動時に開始と停止までの時間を計算してタイマー設定すれば
ポーリングしなくても良いんじゃね?
740:デフォルトの名無しさん
18/03/27 19:41:02.82 RNGaKb4X.net
>>723
時刻合わせせずPCの時計を常に基準にするのか
というか仕様や設計の話は他でやってくれないかな
741:デフォルトの名無しさん
18/03/27 19:46:25.47 a4CYTpTn.net
>>723
Timerのインターバルはint型でmsec指定
1年の秒数は31536000秒
あれぇ?
742:デフォルトの名無しさん
18/03/27 20:12:24.26 foR5XOpk.net
>>724
PCの時刻を基準にしないでどうすんの?
純粋に興味あるから教えてくれ
743:デフォルトの名無しさん
18/03/27 20:34:44.17 8gmuwQWV.net
>>725
wpfばかり使ってたんで、DisptcherTimer基準にしていたわ
悪いな
744:デフォルトの名無しさん
18/03/27 20:36:49.79 D1lCzr9q.net
初心者の陥りがちなミス
Timeの精度を信用してしまう
途中で時刻修正の入る場合などを考慮しない
745:デフォルトの名無しさん
18/03/27 20:40:14.18 8gmuwQWV.net
>>724
今のPCはネットに繋がっていれば時間は自動で合わせてくれる
インターネットに繋がっていない前提ですか?
746:デフォルトの名無しさん
18/03/27 20:42:13.82 RAm1FIuU.net
そおです
747:デフォルトの名無しさん
18/03/27 20:51:58.53 SJRVUf0s.net
>>710
30年前ってPC9801あったっけ?
748:デフォルトの名無しさん
18/03/27 20:56:33.38 vavxlF2f.net
>>731
初代は1982年(36年前)
749:デフォルトの名無しさん
18/03/27 20:58:54.08 FNmJga7y.net
こういうインフラの煩わしい制約からコアになる処理を分離したい
ワーカー側は終了再開するためのapiを用意して時間や終了再開するタイミングの事は一切考えない
時間を管理するクラスが適切なタイミングでそれらのapiを実行する
というのが正解な
時間管理クラスが内部でループぶん回そうがシステムコール使おうがそれはどうでもいい
750:デフォルトの名無しさん
18/03/27 21:05:37.51 D1lCzr9q.net
c#環境では指定時刻にイベントを起こすAPIは用意されてない
751:デフォルトの名無しさん
18/03/27 21:12:23.97 9YSJ28+H.net
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
752:デフォルトの名無しさん
18/03/27 21:13:34.93 D1lCzr9q.net
>>735
スレチ
ここはc#のスレ
753:デフォルトの名無しさん
18/03/27 21:14:46.44 1tsj2UvO.net
>>701
callbackはどんな条件のものをどうやって作るんだ
>>729
時刻合わせのタイミングでインターバル補正するコードは思いつかないな
時間定期的にcheckするだけのものをどこまで難しくする気だコイツら
754:デフォルトの名無しさん
18/03/27 21:22:44.33 rY6p5Eum.net
>>737
お仕事でなんでこの仕様からこんな糞コードが生まれるんだろと不思議に思うことあるけど、このスレの流れ見たらある意味納得だわ
755:デフォルトの名無しさん
18/03/27 21:23:33.47 8gmuwQWV.net
>>737
1秒ポーリングでも最大1秒弱の誤差が出るわけだが、内蔵時計ってそこまで精度悪いの?
実用上問題ない誤差に見えるがちょっと気にしすぎじゃね?
756:デフォルトの名無しさん
18/03/27 21:30:26.48 xeybzECW.net
どうでもいい
そんな盛り上がるネタじゃないだろうw
いい加減止めたら?
757:デフォルトの名無しさん
18/03/27 21:43:38.37 RAm1FIuU.net
他に居場所がないのでしゅよw
758:デフォルトの名無しさん
18/03/27 21:44:08.38 FNmJga7y.net
悲しいね
759:デフォルトの名無しさん
18/03/27 22:08:17.45 t3gWSj15.net
1秒ポーリングでやろうぜ
現在時刻が開始~終了時刻の範囲
起動Flagなし
起動処理
起動Flag立てる
現在時刻が開始~終了時刻の範囲外
起動Flagあり
終了処理
起動Flag下ろす
(*゚∀゚)bできた!
760:デフォルトの名無しさん
18/03/27 22:29:48.19 FkzRU/Z7.net
回答者の方は基本情報持ってるもんですか?
761:デフォルトの名無しさん
18/03/27 23:11:24.08 a4CYTpTn.net
持ってるけど少し勉強すれば誰でも取れる資格に意味なんてあるの?
精々資格手当で給料が5000円プラスされる程度の価値しかないぞ
762:デフォルトの名無しさん
18/03/27 23:19:17.56 LCPGZ3qz.net
5000円の価値も分からないとか働いたことないのかな?
763:デフォルトの名無しさん
18/03/27 23:32:40.08 FNmJga7y.net
うちは1万増える
764:デフォルトの名無しさん
18/03/27 23:34:25.90 zFrY2ZyB.net
5,000円も上乗せとかウラヤマ過ぎだろ
うちなんて高度取っても報償金30,000円だけ
基本や応用ではなにもでない
765:デフォルトの名無しさん
18/03/27 23:42:52.53 7OwU1Hvz.net
10年以上やってる奴でも、基本情報技術者は取れない
大卒の新米が、こんなの簡単に取れますよねって言ったら、
中堅社員は皆、新米をにらみつけていたw
企業の資格取得率は、年1%(100人中1人)ぐらいだろ。
10年いても、9割の社員は、資格を取れない
766:デフォルトの名無しさん
18/03/27 23:53:23.07 FNmJga7y.net
申し込みしたけど忙しくて受験できない人は沢山居るけど受験して落ちる人はいない
767:デフォルトの名無しさん
18/03/27 23:53:50.72 3aWOhLkC.net
俺は応用情報まで持ってて+1万だなー
>10年以上やってる奴でも、基本情報技術者は取れない
……冗談だろ?
768:デフォルトの名無しさん
18/03/27 23:58:15.55 3aWOhLkC.net
さておき、建築士だの医師だの弁護士だのみたいに
「この職務に就くには、○○の資格が必要」とかいう業界じゃないんで
本当に、ただ給料が増えるだけではあるな (採用試験でもまあ有利にはなるかもしれん)
増えたら増えただけ嬉しいもんではあるが
年間で+12万なら、家電の買い替え費用くらい楽に捻出出来るし
769:デフォルトの名無しさん
18/03/27 23:58:26.75 9YSJ28+H.net
定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
770:デフォルトの名無しさん
18/03/28 00:00:54.89 02fULCHO.net
botかな
771:デフォルトの名無しさん
18/03/28 00:09:13.46 pf/Jvdmo.net
>>752
普通は資格手当ては基礎賃金扱いだからボーナスや残業計算対象でもっと貰えるよ
基本情報で5000は羨ましいけど資格手当て込みのベースにしてるパターンもあるから一概にいいとはいえないかもね
772:デフォルトの名無しさん
18/03/28 00:16:20.41 0was1dJs.net
Ruby の、Dir.glob で書ける
Dir.glob('C:/test/*.txt') do |file|
# gsub(/アンパンマン/, 'バイキンマン')で全部を置換する
end
773:デフォルトの名無しさん
18/03/28 00:44:23.36 Im6j951B.net
C# もしくは 既に要件を満たすツールがあれば教えてください。
774:デフォルトの名無しさん
18/03/28 01:02:57.21 GnpAMkN4.net
>>753
マジレスするとVisualStudioで可能
775:デフォルトの名無しさん
18/03/28 01:13:32.94 qs/6O+TS.net
>>757
WindowsでC#使ってるならVisual Studio使ってるんだろ?
フォルダーを指定して置換でいいと思うが
URLリンク(msdn.microsoft.com)
776:デフォルトの名無しさん
18/03/28 07:24:31.11 1/4U3eU2.net
>>753
awkやろ
百歩譲ってRubyとかのP系言語
C#は向いてない
777:デフォルトの名無しさん
18/03/28 07:34:12.04 NtzDkwr+.net
powershell
778:デフォルトの名無しさん
18/03/28 22:10:34.35 LHMXaAz3.net
public Pixel(IList<byte> data, int index)
{
B = data[0];
G = data[1];
R = data[2];
Index = index;
}
var list = new List<(int x, int y)>();
// 何故か背景色がFFA07A固定なのでそれ使って適当に
list.AddRange(pixels.Where(x =>
Math.Abs(x.R - 0xFF) < 5 &&
Math.Abs(x.G - 0xA0) < 5 &&
Math.Abs(x.B - 0x7A) < 5
).Select(x => (x.Index % width, x.Index / width)));
ビットマップをPixelクラスに読み込んで特定の色(FFA07A)のピクセルを検出しているのですが
(x.R - 0xFF) < 5
ここのRGBから16進数をマイナスして5未満の意味がわからないのですが
なぜこんな計算をしているのでしょうか?
779:デフォルトの名無しさん
18/03/28 22:12:50.37 6nNahb2+.net
止まるんじゃねぇぞ…
780:デフォルトの名無しさん
18/03/28 22:21:23.63 Im6j951B.net
>>759
VS2017にそんな機能があったんですね。便利!
VS2010じゃその機能はないよね?
781:デフォルトの名無しさん
18/03/28 22:33:50.78 r3METhPg.net
>>762
そのコードを書いた奴に聞けよ
782:デフォルトの名無しさん
18/03/28 22:42:38.68 qs/6O+TS.net
>>764
2008 でもある
URLリンク(docs.microsoft.com)(v=vs.90)
たぶんもっと前からあったような気がする
783:デフォルトの名無しさん
18/03/28 22:52:23.87 Im6j951B.net
>>766
知らなんだ。サンクス
784:デフォルトの名無しさん
18/03/29 00:01:16.76 LDL0rnP5.net
>>762
その前にMath.Absが付いとるじゃろ
目的の値との差をとって、その絶対値が5未満
つまり、ぴったり一致しなくても±4までの誤差ならOKとしている
785:762
18/03/29 00:10:37.10 3/dH7jim.net
>>768
なるほど!誤差の為ですか
ちょっとした技を使ってたんですね
ありがとうございました。
786:デフォルトの名無しさん
18/03/29 12:17:07.66 48quLBzg.net
質問です。よろしくお願いします。
URLリンク(tb.click-sec.com)
をブラウザで開くとzipファイルのDLが始まるので、これをC#でDLしようと思ったのですが、
このURLのままだとSystem.Net.WebClient.FileDownloadでもWebBrowserコントロールで開いてもzipファイルのDLができません。
どうすればいいのでしょうか。 👀
Rock54: Caution(BBR-MD5:8e40a50a3146c71e5aa506574dbd07bd)
787:デフォルトの名無しさん
18/03/29 12:30:39.81 49BUJ49m.net
諦める
788:770
18/03/29 12:50:22.61 48quLBzg.net
IEに開かせればできるかもと思ったのでやってみます。
789:デフォルトの名無しさん
18/03/29 14:42:04.00 fRxUhejE.net
すまんが、イベントハンドラーを空っぽにするのってどうやんの?
790:デフォルトの名無しさん
18/03/29 15:00:44.15 mcXZqOx8.net
nullから空っぽのラムダ式を入れる
もしそのイベントを持つクラスの外からやりたいと言ってるならそれは無理
無理と言うより、そんなことをしたいと思うこと自体が間違ってる
791:デフォルトの名無しさん
18/03/29 19:35:16.02 2ivypk2R.net
>>773
-= イベントハンドラ;
792:デフォルトの名無しさん
18/03/30 11:54:45.53 LK6mi3V8.net
ユニットテストについて質問
例えば計算クラスのテストをするときは
[TestCase(-2, 2)]
public void AbsTest(int a, b){
int n = Math.Abs(a);
Assert.AreEqual(n, b);
こういう風に正しい値を予め手計算で用意しておくものなの?
793:デフォルトの名無しさん
18/03/30 12:24:31.95 Aig7x3ki.net
>>776
一般的にはその通り
間違っても n = a < 0 ? -a : a とかやってはいけない
ちょっと考えたら分かると思うけど、そういうのは全く意味のないオレオレテスト
手計算がどうしても困難なら、デバッガで動かしてその結果が合ってるかを検証してその値をコピペしとけ
少なくとも意図しないデグレの検出には役立つ
794:デフォルトの名無しさん
18/03/30 12:34:29.62 LK6mi3V8.net
>>777
ありがとう!
チェック項目が増えると引数が酷いことになるから何か間違えてるのかと思ってた
795:デフォルトの名無しさん
18/03/30 12:46:02.45 Aig7x3ki.net
>>778
それはテストの観点を適切に直行化できてないんじゃないか?
引数xが3以上のとき結果は必ず負になることが期待されるとしたら、
テストは3と3を超える値を引数に入れて、それぞれの結果yについて y < 0 が真となることを確認すればいいんだぞ
何を確かめたいのかを明確にしてそれをそのままコードで書くんだよ
796:デフォルトの名無しさん
18/03/30 14:10:01.41 tnFi4c/U.net
LinqのJoinメソッドに渡すメソッドなんだけど、ラムダ式で書く方法が全然理解できないぜ・・・・
多分、掲示板で解説するのも難しいと思うので、やさしく解説してるページやら本やらがあったら教えて!!!
797:デフォルトの名無しさん
18/03/30 14:45:38.48 L1eApEVG.net
>>780
どれがわかりやすいかなんて人それぞれだから宛にならないよ
ラムダ式でぐぐって良さそうなら熟読してわからない所を質問するといい
798:デフォルトの名無しさん
18/03/30 14:48:53.79 CpZcazmB.net
ラムダ式とか正規表現とか、記憶してるやついないから大丈夫
毎回ググればいい
799:デフォルトの名無しさん
18/03/30 15:28:55.57 87KFZNYL.net
ラムダ式って、無名関数の構文糖だろ
func (引数1, 引数2) => 戻り値
(a, b) => result
800:デフォルトの名無しさん
18/03/30 16:00:30.28 BIk3pBCX.net
λを採用した祖の言語LISPなんてわざわざ(lambda~)と毎回書いてるのに変な略称=>なんて許されんばい
λと書きんしゃい
801:デフォルトの名無しさん
18/03/30 16:46:29.66 kajlCXLR.net
またはじまった
802:デフォルトの名無しさん
18/03/30 17:32:32.77 +cAt7TAV.net
ランバダのPVはエロかったなあ
関係ないけど
803:デフォルトの名無しさん
18/03/30 18:08:45.57 qHFB3R53.net
>>780
この本よかったぞ
基本的な知識はあるがLINQ、ラムダ、推論型の知識があやふやならおススメ
「C#プログラマーのための 基礎からわかるLINQマジック! 」
URLリンク(www.amazon.co.jp)
804:デフォルトの名無しさん
18/03/30 18:19:24.61 LI6oPksr.net
人脈?
805:デフォルトの名無しさん
18/03/30 18:25:17.02 QYlpMr10.net
質問失礼します。
以下のようなプログラムを書いたところコメントに書いたようなメッセージが表示されますが、
このメッセージに従ってインライン化しようにも、どのように修正すれば良いか分かりません。
これはIDEのバグだと思って無視しても良いものなのでしょうか。
インライン化の有無は可読性だけの問題でパフォーマンスなどに影響はないのだと思いますが、
このようなメッセージが表示されたままプログラムを完成とするのはあまり気分がよくありません。
プログラムの修正方法や、このようなメッセージに対する考え方など、
分かることがあれば教えていただけないでしょうか。よろしくお願いします。
static void Main(string[] args)
{
void getMessage1(out string _message) => _message = "x is 1.";
void getMessage2(out string _message) => _message = "x is not 1.";
int x = 1;
string message; // IDE0018 変
806:数の宣言をインライン化できます if (x == 1) { getMessage1(out message); } else { getMessage2(out message); } Console.WriteLine(message); }
807:デフォルトの名無しさん
18/03/30 18:42:11.73 q+LDJ3nt.net
そんなもん買っても十中八九忘れる
基本ネットに転がってるコピペで食いつなぐのが一流
808:デフォルトの名無しさん
18/03/30 18:44:40.56 LI6oPksr.net
>>789
なんでoutを使うのかが分からないんだけど
809:デフォルトの名無しさん
18/03/30 18:49:12.82 +cAt7TAV.net
>>789
"IDE0018"でググったら一発で解説が見つかるんだけどw
何でその長文タイプうする前に検索しないのよw
そこが分からん
810:デフォルトの名無しさん
18/03/30 18:57:29.01 roepBgfb.net
>>789
これ、どうしろって言ってん?
811:デフォルトの名無しさん
18/03/30 18:57:31.26 LI6oPksr.net
>>792
そういうことを言ってるんじゃないと思うけど…
手元にあるc#7.1じゃ再現しないんだけど
812:デフォルトの名無しさん
18/03/30 18:59:03.69 LI6oPksr.net
普通に考えるとスコープから外れるからインライン化できないはずなのにインライン化を進めてくるってことでそ
813:789
18/03/30 19:11:19.76 QYlpMr10.net
早速たくさんのレスありがとうございます。
お返事に少し時間がかかってしまいそうなので、上から順に書き込みたいと思います。
お待たせしてしまって申し訳ありません。
>>791
レスどうもありがとうございます。
色々なクラスで定義されているTryParseやIDictionaryのTryGetValueは
使いやすいと感じていて、それを参考に定義したメソッドをifの内側で使おうとしたのが
>789のようなプログラムを書いた経緯です。
しかし確かに複数の情報を返却したければそれ用のクラスを定義すれば良いことですし、
C#7ではタプルも構文化されているので、もはやoutは時代遅れということでしょうか。
C#にはいくつか負の遺産もあるということなので、その辺りについても勉強したいと思います。
814:789
18/03/30 19:21:12.54 QYlpMr10.net
>>792
説明が不十分で申し訳ありません。
>>795の方が分かりやすく説明してくださっているので蛇足になってしまうかも知れませんが、
私が検索した範囲では、
string message;
getMessage1(out message);
は
getMessage1(out string message);
に直せば良いということは分かったものの、変数の定義と関数の呼び出しとの間に
(今回の例のifのような)別のコードがあって、それが移動できないように見えても
メッセージが表示されてしまう場合があるということです。
ただ、「移動できないように見える」という部分に自信がなかったのと、
仮にそれが正しかったとしてもこのようなメッセージをどの様に受け止めれば良いのかが
よく分からなかったので質問させていただきました。
815:789
18/03/30 19:31:31.59 QYlpMr10.net
>>793
IDEがなんと言ってきているのか、とういことでしょうか。
サンプルコードを空行も含めて上から数えて7行目のコメント文なのですが、
「IDE0018 変数の宣言をインライン化できます」というメッセージが表示されます。
それとも、私がどのようなお返事を期待しているかとういことであれば、
このメッセージに対処するためのプログラムの修正方法や、
このようなメッセージに対する考え方などを教えていただけないかと考えています。
しかし、私の期待していること自体が見当はずれということもあると思うので、
それ以外でも何か気がつくことがあれば教えていただけると嬉しいです。
816:デフォルトの名無しさん
18/03/30 19:34:47.70 roepBgfb.net
msに
これ壊れててん?
ってメール出してみよう
817:デフォルトの名無しさん
18/03/30 19:44:57.86 DYwliZHB.net
VSとターゲットのフレームワークのバージョンを書いてないのがいまいち
818:789
18/03/30 20:00:44.22 QYlpMr10.net
>>794
早速検証までしていただいてどうもありがとうございます。
また、本来書くべきC#のバージョンが抜けてしまっていて申し訳ありません。
>>789
を始めに確認したときのターゲットフレームワークは4.6.2だったので、
以下の対応表によればC#のバージョンは6.0ということになるのでしょうか。
URLリンク(qiita.com)
しかし、その後ターゲットフレームワークを4.7.1や3.5に変更して試してみても
やはり同じメッセージが表示されました。
あと、これも後出しになってしまって申し訳ないのですが、
あからさまな構文エラーと違ってこのメッセージはコンパイルするまで表示されないようです。
IDEはVisual Studio 2017を使用していて、OSはWindows 10 Pro 64 bitです。
他に何かお伝えすべきことがあれば教えていただけると嬉しく思います。
よろしくおねがいします。
819:789
18/03/30 20:06:29.84 QYlpMr10.net
>>795
分かりやすく補足していただいてどうもありがとうございます。
C#のバージョンについてもそうですが、正確にお伝えするための情報の確認が不十分でした。
これはプログラミング以前の問題だと思うので気をつけていきたいと思います。申し訳ありません。
820:789
18/03/30 20:18:53.64 QYlpMr10.net
>>799
アドバイスどうもありがとうございます。一日程度このスレッドを拝見してみて、
私の勘違いという証拠が見つからなければマイクロソフトに報告してみようと思います。
報告する場合、Visual Studio の
「ヘルプ(H)>フィードバックの送信(F)>問題点の報告(P)」を利用しようと考えていますが、
もし他におすすめの連絡先などがあれば教えていただけると嬉しく思います。
821:デフォルトの名無しさん
18/03/30 20:21:01.69 keCNvJ3G.net
つまりこう書けるよってことじゃないの?
if(x == 1) getMessage1(out string message);
else getMessage2(out string message);
822:デフォルトの名無しさん
18/03/30 20:23:34.69 sxHgkaP9.net
>>803
URLリンク(www.google.co.jp)
URLリンク(vimalakitty.blogspot.jp)
823:789
18/03/30 20:32:11.02 QYlpMr10.net
>>800
おっしゃる通りで、大変失礼いたしました。申し訳ありません。
>>801と内容が一部重複してしまいますが、これまでの内容を改めて整理したいと思います。
(これまでいただいたレスの表現を一部お借りしています)
問題の概要:
関数のout引数に関して、スコープから外れるためインライン化できないと思われる場面で
インライン化を推奨するメッセージが表示されることがある
問題を再現するコード及びメッセージの内容:
>>789
問題が再現する環境:
Windows 10 Pro 64bit
Visual Studio 2017
ターゲットフレームワーク:3.5/4.6.2/4.7.1 で確認
備考:
コードのコンパイル後にメッセージを確認
以上です。他に何か書くべきことがあれば教えていただけると嬉しいです。
どうぞよろしくお願いいたします。
824:デフォルトの名無しさん
18/03/30 20:37:12.26 +cAt7TAV.net
>>803
何でそうなるw
だから、まずググろうよ"IDE0018"で
そうすればこれはC#7の追加機能に起因する警告であり、不具合ではないとすぐに分かる。
何でそんな長文タイプする手間は惜しまないのにちょっと検索する手間は惜しむのよw
意味が分からん
ちなみに、この警告を無視するにはこうするんだってさ
URLリンク(developercommunity.visualstudio.com)
これもググってれあばすぐに自分で見つけられてるはず
825:デフォルトの名無しさん
18/03/30 20:40:09.19 keCNvJ3G.net
一行ならブロックスコープ外せるから>>804だと思うんだけど自分の6.0環境では試せなくて悲しい
826:デフォルトの名無しさん
18/03/30 20:59:52.66 keCNvJ3G.net
ごめん、無理だね
ブロック外してもスコープはローカルになっちゃうみたい
827:789
18/03/30 21:13:54.63 QYlpMr10.net
>>804>>808>>809
修正方法のご提示とご検証どうもありがとうございます。問題は>>809にお書きいただいたとおりです。
ただ、お書きいただいた通り問題はスコープにありますので、
Console.WriteLine(message);をifとelseの両方の中に書けばこの問題は起こりません。
この程度の内容を2回書くことは大した問題になりませんし、
この部分に対応するコードが長くなってしまった場合もメソッドとして切り出せば同じことですので、
いただいたレスを読みながら、>>789のようなプログラムを書くこと自体が筋が悪くて、
やはり>>804に適合するプログラムになるよう全体を修正するべきなのかなとも考えました。
ただ、メソッドとして切り出す方法であらゆる状況に対応できるかどうか自信がないので、
いずれにしても確信は持てていない状況です。
828:デフォルトの名無しさん
18/03/30 21:24:37.09 DYwliZHB.net
>>807
いつまでトンチンカンなこと言ってんの?
829:デフォルトの名無しさん
18/03/30 21:25:20.49 DYwliZHB.net
例のおじいちゃんかよ
レスして損した
830:デフォルトの名無しさん
18/03/30 21:28:28.22 +cAt7TAV.net
>>811
トンチンカンでもおじいちゃんでもないからw
こんなググればすぐに理由も対処法もわかる話でMSにクレーム付けたら
質問者が恥をかくだけ
831:デフォルトの名無しさん
18/03/30 21:30:10.03 DYwliZHB.net
NG推奨
832:デフォルトの名無しさん
18/03/30 21:30:33.31 roepBgfb.net
>>813
じゃ、どうしろって書いてあんの?
リンクのどこ見ればいいかわかんないよ
対象のコード貼ってくれ
833:デフォルトの名無しさん
18/03/30 21:30:33.58 +cAt7TAV.net
>>814
もうした
834:デフォルトの名無しさん
18/03/30 21:31:54.48 DYwliZHB.net
おじいちゃんに触れても無駄だよ
いつまでも間違いに気づいてないしレスも読んでないから
835:デフォルトの名無しさん
18/03/30 21:32:50.48 +cAt7TAV.net
>>815
無視するか気になるなら>>867で対処する
当たり前でしょう
836:デフォルトの名無しさん
18/03/30 21:33:56.46 roepBgfb.net
>>818
じゃ、バグってんじゃんw
837:デフォルトの名無しさん
18/03/30 21:34:34.33 +cAt7TAV.net
>>819
だから何でそうなるw
意味が分からない
838:デフォルトの名無しさん
18/03/30 21:35:21.33 DYwliZHB.net
>>819
おじいちゃんはまだ何が起こってると言う話なのか判ってないからレスしても無駄
スコープもわからないから
839:デフォルトの名無しさん
18/03/30 21:36:16.37 +cAt7TAV.net
>>821
トンチンカンなことを言ってるのは君の方なんだけど、自覚がないってのは幸福でいいねw
840:デフォルトの名無しさん
18/03/30 21:37:18.61 roepBgfb.net
>>820
いや、バグでしょコレ
だってこんなん指摘してきた同僚がいたらキチガイじゃん
841:デフォルトの名無しさん
18/03/30 21:37:22.84 MnRWcQoL.net
>>810
Visual Studio のバグでしょ
とりあえず頓珍漢野郎の>>807のリンク先に抑止方法書いてあるからそれでしのげばいいかと
842:デフォルトの名無しさん
18/03/30 21:38:22.07 +cAt7TAV.net
っていうか、>>789みたいなコードが警告されるのはむしろ当たり前。
outの変数を使いまわしするなんてよい作法とは言えないからだ
843:デフォルトの名無しさん
18/03/30 21:39:20.19 DYwliZHB.net
ジジイはトンチンカンすぎてダメだな
いつまでたっても成長しない
844:デフォルトの名無しさん
18/03/30 21:40:20.48 MnRWcQoL.net
使い回しとかほんとに意味わかってないんだな w
845:デフォルトの名無しさん
18/03/30 21:41:00.76 roepBgfb.net
>>825
使うからoutしてんじゃん
ガイジが過ぎるぞ自重しろ
846:デフォルトの名無しさん
18/03/30 21:41:07.53 +cAt7TAV.net
しかし、バグバグいってる連中はちゃんとググって解説記事読んでるのかねw
こんなのが同僚だったら張り倒すよw
847:デフォルトの名無しさん
18/03/30 21:41:48.65 DYwliZHB.net
ジジイは失礼なので取り消しておじいちゃんにまた戻す
848:デフォルトの名無しさん
18/03/30 21:42:50.83 roepBgfb.net
>>829
ありえねーレベルのアホだなw
outしたの使わないでどーすんだよ
849:789
18/03/30 21:45:40.64 QYlpMr10.net
>>805
参考ページのご紹介どうもありがとうございます。
このページは拝見したのですが、問題の解決に至る道筋を見つけることができませんでした。
(確認したページのうち主要なものはあらかじめお伝えしておくべきだったかもしれません。
申し訳ありません。)
質問させていただいている身でこのようなことをお願いするのは大変心苦しいのですが、
もしお時間に余裕がありましたら具体的な修正方法のご説明をお願いすることはできませんでしょうか。
ご説明の中で私の疑問を理解していただければ幸いですし、
いただいたご説明で問題が解決できれば願ってもないことです。
煽るような文章で答えを引き出すような形になってしまい大変申し訳ありませんが、
私の説明能力の無さゆえの苦肉の策ということで、どうぞ失礼をお許しください。
850:デフォルトの名無しさん
18/03/30 21:46:08.85 rq+fXpbo.net
ガイジでいいだろ
本人もそう言ってる
851:デフォルトの名無しさん
18/03/30 21:49:29.47 DYwliZHB.net
>>832
とりあえず別のことに時間使ったほうがいいよ
ひまーな時に思い出して修正されたか確かめるといい
うちじゃ全然再現されないからどうしようもない
852:789
18/03/30 22:03:34.15 QYlpMr10.net
ID:+cAt7TAV 様
警告の抑制方法についてご案内いただきどうもありがとうございます。
他に解決策が見つからなければマイクロソフトに問題を報告し、
マイクロソフトに修正していただけるまで教えていただいた方法で警告を抑制したいと思います。
ただ、他の方にいただいたレスも拝見し、やはり私としてはこのメッセージが適切であるとは確信できずにいます。
もしお時間に余裕がありましたら、>>832のお願いを ID:+cAt7TAV 様にもさせていただけないでしょうか。
お願いの方法も内容も大変失礼なもので申し訳ないのですが、どうぞお許しください。
853:デフォルトの名無しさん
18/03/30 22:06:55.10 +cAt7TAV.net
まあ質問者がここのお馬鹿さんを代表してMSに質問してみたらいいと思う。
恥をかくのも勉強のうちかも
個人的にはちょっと調べてちょっと自分の頭で考えれば分かるはずのことを理解しようとせず、
「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど
つーか、ちょっと考えれば、この警告は余計なお世話のように思えて
一定の合理性があることぐらいすぐ分かると思うんだけど、ガチで分からない奴もいるんだね世の中には
854:デフォルトの名無しさん
18/03/30 22:10:00.19 +cAt7TAV.net
>>835
だから、警告の意図はout変数を値を戻す以上の目的で使うのはよい作法じゃないよ、
ってことでしょう。
外側のブロックでも値を使いたいなら別の変数にコピーしてねと
855:デフォルトの名無しさん
18/03/30 22:14:49.66 roepBgfb.net
は?こんなのバグだろ
856:789
18/03/30 22:22:13.29 QYlpMr10.net
たくさんご反応をいただきどうもありがとうございます。
とても勉強させていただいています。
お返事が遅くなってしまい申し訳ありません。
予想以上のレスの多さでこの話題に触れてくださった方すべてにお返事するのが難しくなってきましたので、
大変勝手ながら、これ以降、直接私の書き込みにアンカーを付けてくださった方と
特に教えていただきたいことがある方へのメッセージのみ書き込みたいと思います。どうぞよろしくお願いします。
>>825
皆さんのお話を聞いて、コードの無作法が警告メッセージの直接または間接的な原因なのではということを
かなり感じてきました。ただ、作法に関する私の理解が不十分でどうにも宙に浮いたような感覚なのです。
もしよろしければ、>>810考えについてコメントなどをいただくことはできないでしょうか。よろしくお願いいたします。
857:デフォルトの名無しさん
18/03/30 22:29:53.50 MnRWcQoL.net
>>836
どう書けばいいのかを書いてからほざけば? w
858:デフォルトの名無しさん
18/03/30 22:30:40.89 CA+6T7VZ.net
トンチンチン
859:789
18/03/30 22:32:45.82 QYlpMr10.net
>>824
レスどうもありがとうございます。
やはりバグと考えるのが妥当なのかなという気持ちが強くなってきました。
これだけたくさんのレスをいただき、バグであろうというご意見もいただいているので
もうマイクロソフトに報告を出してしまってもいいかなという気もしているのですが、
一応>>803に書いたとおり一日置いてから報告しようかと思います。
ただバクだとしても、このバグが今まで大した問題にならなかったということは
再現するためのコードに多かれ少なかれ作法の問題があるのではという気持ちもあり、
色々と勉強させていただきたいと考えています。
860:デフォルトの名無しさん
18/03/30 22:37:24.89 MUNCeVRK.net
>>842
現象再現するソリューション一式をアップローダにあげたら何か進展あるかもよ
861:デフォルトの名無しさん
18/03/30 23:04:09.64 L1eApEVG.net
>>789
以下の書き方ってビルド通るっけ?
ビルドエラーの時は原因と関係ない警告でたりするからmessage=nullみたいに何かいれれば解決したりしない?
string message;
if (x == 1) getMessage1(out message);
else getMessage2(out message);
Console.WriteLine(message);
後outメソッドではなく、戻り値で文字列を返すのが普通
根本的な解決じゃないけどoutキーワードを使わないgetに直せば警告を消せる
862:789
18/03/30 23:06:10.14 QYlpMr10.net
>>834
アドバイスとご検証どうもありがとうございます。
再現性の問題については、警告のカスタム規則セットなどは使っていないつもりなのですが、
そのあたりの理解が不十分でお伝えすべきことが不足してしまっているのかも知れません。
念のため、解説ページなどを読むなどしてもう一度確認したいと思います。
また、とりあえず別のことに時間をということについて、お心遣いをとても嬉しく思います。
ただ、せっかくこれだけの反応をいただけたのだからできる限りのことを吸収して…という
殊勝(?)な考え以上に、私が感じた問題に多くの方が興味を持ってくださったことが嬉しく、
娯楽という意味でもう少しこの場にお邪魔させていただきたいと思っています。
863:789
18/03/30 23:33:26.14 QYlpMr10.net
>>837
大変勉強になるコメントどうもありがとうございます。この観点はまったく気づいていませんでした。
確かにout変数の使い道をそこまで限定することで警告は表示されなくなりますし、
この制限はプログラムの保守性を高める効果もありそうです。
これで私個人の、警告が表示されて気持ちが悪いという問題は解決したように思います。
どうもありがとうございます。
ただそれはそれとして、今回の警告はやはり意図されたものではないと思うのですが、
もしよければこの点についてもご意見をお聞かせいただけないでしょうか。
私がこのように思うのは、以下のコードで警告が表示されないというところにあります。
864:789
18/03/30 23:33:45.21 QYlpMr10.net
bool tryGetMessage1(int _x, out string _message)
{
if (_x == 1)
{
_message = "x is 1.";
return true;
}
else
{
_message = default(string);
return false;
}
}
void getMessage2(out string _message) => _message = "x is not 1.";
int x = 1;
if (!tryGetMessage1(x, out string message))
{
getMessage2(out message);
}
Console.WriteLine(message);
865:789
18/03/30 23:34:33.28 QYlpMr10.net
>>837の制限に従えば上のプログラムのifの部分は次のように修正されるべきです。
しかしこの例では警告文表示されず、従って警告文は>>837の制限を課すためのものではないと思われるので、
「今回の警告は意図されたものではない」という結論に至りました。
int x = 1;
string message;
if (tryGetMessage1(x, out string message1))
{
message = message1;
}
else
{
getMessage2(out string message2);
message = message2;
}
866:789
18/03/30 23:56:19.78 QYlpMr10.net
>>843
アドバイスどうもありがとうございます。
今更ですが、警告が表示されるコードを含むソリューションをアップロードしてみました。
URLリンク(dotup.org)
867:789
18/03/31 00:03:56.30 a/TgDl8y.net
>>844
レスどうもありがとうございます。
お書きいただいたコードでは、ビルドは通りますが>>789と同じ警告文が表示されました。
これは message = null と書き換えても同じようです。
戻り値で文字を返すべきだというのはおっしゃるとおりだと思います。
ただ>>796のような理由もあり、out変数でも警告が表示されずにすまないか思って質問させていただきました。
868:デフォルトの名無しさん
18/03/31 00:04:10.00 r1Fcmmf3.net
>>849
えー、このスレで解決しないといけないの?
初心者スレの領域越えてない?
869:デフォルトの名無しさん
18/03/31 00:04:41.30 r1Fcmmf3.net
しかも無駄に長文だしちょっと控えてよ
870:789
18/03/31 00:25:14.41 a/TgDl8y.net
>>851 >>852
申し訳ありません。
もともと不具合なのかどうかの判断もできずこのスレで質問させていただきましたが、
IDEの不具合であるとすれば、おっしゃるとおりここで解決を目指すことではないと思います。
ただ、もしこの問題に興味を持ってくださる方がいて、問題が再現されないようであれば、
>>849のソリューションファイルでもお試しいただければ嬉しく思います。
これ以降は、「IDEのバグ修正」という方向の話について私の方から書き込むことは控えたいと思います。
しかし、すでに私が書き込んでしまった内容にお返事をいただいた際のレスについてはお許しください。
以上、長々と失礼いいたしました。
871:デフォルトの名無しさん
18/03/31 00:25:16.57 p9TP0
872:5UX.net
873:デフォルトの名無しさん
18/03/31 02:11:28.67 r7WFMRHn.net
>> 853
Visual Studio 15.5.7 だけど IDE0018 は出なかった
リファクタリングしたらどうなるの?
URLリンク(codezine.jp)
874:789
18/03/31 08:06:10.45 Mw1mdL1r.net
レスどうもありがとうございます。お返事が遅くなってしまい申し訳ありません。
日中はVisual Studioを使えそうになく、申し訳ないのですがきちんとしたお返事は夜になってしまうと思います。
中途半端な内容になってしまいますが、ひとまずいただいたレスにお返事したいと思います。
後ほど改めて書き込みますので、失礼をお許しください。
>>854
Visual Studio 2017のバージョンについてご報告できておらず申し訳ありません。
恥ずかしいことに最新版を使うという意識も持てていなかったので、古いバージョンを使っているかも知れません。
(ただ、古いバージョンで検証して下さった>>855様もIDE0018は出なかったとのことなので、
なにか他のところに問題があるのかなとも思っています。)
>>855
ご検証どうもありがとうございます。
>>854様の結果と合わせて2つのバージョンで再現しなかったとのことなので、
私は何かとても基本的なところで間違いを犯してしまっているのかも知れません。
リファクタリング機能については、ご指摘をいただいた上で試したわけではないので後でまた確認しようと思いますが、
問題の箇所では動作しなかったように記憶しています。
875:デフォルトの名無しさん
18/03/31 08:08:51.24 r1Fcmmf3.net
>>855
不具合報告スレでも立ててそっちでやれよ
876:デフォルトの名無しさん
18/03/31 08:43:46.87 +WsDcfNX.net
別にいいよ
片っ端から透明あぼーんするだけだし
877:デフォルトの名無しさん
18/03/31 08:51:48.82 OaeapR1O.net
>>836
> 「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど
1年も前にバグと判明して解決してる
URLリンク(developercommunity.visualstudio.com)
> 恥をかくのも勉強のうちかも
実践乙 w
878:デフォルトの名無しさん
18/03/31 09:03:24.19 9aphfiP0.net
>>789
正解だけ教える
bool TryGetMessage1(out string x) { x = "1"; return true; }
bool TryGetMessage2(out string x) { x = "2"; return true; }
string GetMessage(int x) {
if (x == 1 && TryGetMessage1(out var s)) return s;
if (TryGetMessage2(out var s)) return s;
return null;
}
WriteLine(GetMessage(x));
879:デフォルトの名無しさん
18/03/31 09:07:37.87 r1Fcmmf3.net
>>860
これが恥の上塗りか
880:デフォルトの名無しさん
18/03/31 12:42:07.43 x9Yyswdb.net
(結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
881:デフォルトの名無しさん
18/03/31 12:44:49.99 LMRl+wCl.net
>>860
これは主旨が違うじゃん
882:デフォルトの名無しさん
18/03/31 12:45:43.39 O8yBke8L.net
ワッチョイないからNGがタルい
883:デフォルトの名無しさん
18/03/31 13:03:27.79 9aphfiP0.net
>>863
もともと修正方法教えろって言ってるんだからこれが正解だよ
884:デフォルトの名無しさん
18/03/31 13:09:24.39 LMRl+wCl.net
ワッチョイ必要だな
885:デフォルトの名無しさん
18/03/31 13:32:48.06 OaeapR1O.net
>>862
> (結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
罵倒されてもしょうがないよね
って感じですけど?
しかも恥の上塗りしてる奴までいるし w
886:デフォルトの名無しさん
18/03/31 13:32:50.70 IoBwmw2C.net
>>865
>>789と出力結果が違うのに正解とか何ほざいてんのw
887:デフォルトの名無しさん
18/03/31 15:17:13.71 G6tH+bWp.net
FirstOrDefaultについて教えて下さい。
List<T>をFirstOrDefaultで条件のものを返してきた場合、
それは参照先のアドレスが返ってくるのでしょうか?
それとも写像としてコピーされたものが返ってくるのでしょうか
取り出したものの値を更新したときに、元のListは更新されますか?
888:デフォルトの名無しさん
18/03/31 15:28:08.82 IoBwmw2C.net
数分で試せることをなぜやらない
889:デフォルトの名無しさん
18/03/31 15:34:02.83 r1Fcmmf3.net
List<int>とかとList<MyClass>とかで違うよね的な?
890:デフォルトの名無しさん
18/03/31 15:39:45.66 UG1yVXDX.net
やってることは同じ(値をコピーしてくる)だけど結果が違ってくると言うこと
891:デフォルトの名無しさん
18/03/31 15:48:48.09 feZwED6X.net
教習所の教官「生徒が減ったので褒めちぎったら運転技術は向上!合格率も事故率も改善!俺はなんで今まで怒ってたんやろう?」 [274141358]
スレリンク(poverty板)
5 名前:番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイWW d3e8-gBuS)[] 投稿日:2018/03/30(金) 13:30:33.99 ID:F53Z/ySd0
よく考えたら本当にジャップ案件だよな
初心者に対して怒鳴り散らしてどこが悪いかは一切教えない
部活と一緒だわ
892:デフォルトの名無しさん
18/03/31 16:04:38.32 fwgHW5nR.net
>>869
List<T>とかHashSet<T>とか初めから使えるやつはTが値型か参照型かだけ考えればいいよ
あと「Listが更新されるか」という言い方はTが参照型だと意味が曖昧になるから改めたほうがいいかと
ふと↓こんなのが頭をよぎったけど意味が分からなければスルーしておくれ
class MyList<T> : IList<T> where T : ICloneable { ... }
893:デフォルトの名無しさん
18/03/31 16:14:25.21 UG1yVXDX.net
IListは実装したことないな
実装例は見かけるけどOSSで実装してるのは見かけない
894:デフォルトの名無しさん
18/03/31 16:27:15.53 fwgHW5nR.net
>>875
>>874でIEnumerableでもICollectionでもなくIListを選んだのには深い理由があるのよ
文字数という理由がね
まあIsReadOnlyプロパティとかどうかとは思うよ
895:デフォルトの名無しさん
18/03/31 16:49:04.27 G6tH+bWp.net
ご指導ありがとうございます
Tが値型か参照型かというところが意識から抜けておりました
適当に組んで試してみて、その違いも確認できました
896:デフォルトの名無しさん
18/03/31 16:55:49.06 tzO3VEeA.net
モニタの解像度によらず実寸A4サイズのウィンドウを開いて2㎝の×を座標ランダムに20表示
それをクリックするというアプリを開発しようと思ってます。
最初モニタの解像度取得してモニタの実寸をユーザーが入力して、
そこからA4サイズは何ドットになるか計算してというのをフォームで作り始めたんだけど、
これだと×や他のボタンも全て計算して調整しなければいけないのかと気づきました。
WPFで開発するとこういうモニタサイズにかかわらず実寸で表示って簡単に処理できるの?
897:デフォルトの名無しさん
18/03/31 17:16:01.57 l8CCe9Lg.net
実寸はモニタ変更するたび変えないと駄目じゃん
フルHDのスマホとモニタじゃちげーし
898:デフォルトの名無しさん
18/03/31 17:27:51.62 47Bv8u8/.net
ユーザーが勝手にWindowsのDPI設定を変更してない限りはできるけど、
今更オワコンWPFに手を出すくらいならHTMLで作ることを強くお勧めする
CSSならmm単位で実寸指定できるからWPFよりも簡単だよ
899:デフォルトの名無しさん
18/03/31 17:34:37.92 FNt76Udy.net
>>868
お前は返しまでくだらないな
900:デフォルトの名無しさん
18/03/31 17:37:43.10 GqrQqkMZ.net
イベント処理でキー読み込むのと、ただ単にキー読み込むのではどう違うの?
実行すると速度が全然違うんだけど...
901:デフォルトの名無しさん
18/03/31 17:38:31.40 io+mDfEy.net
例の教育心理系君か
AWS S3にHTML/CSS/JavaScript置いてURL教えるのが一番手っ取り早いだろうな
結果もJavaScriptからS3 APIで保存するようにすれば完全サーバーレスだ
その程度なら料金は月10円もしない
902:デフォルトの名無しさん
18/03/31 17:58:49.73 tzO3VEeA.net
ご無沙汰しておりました。
教育心理系のものです。
ようやっとC#の本読み終えて作り始めましたけど、
実世界での用紙とか×とかの大きさを統一しないと実験結果に影響が出るので実㎜単位で画面表示が必要なことに気づきました。
a. ディスプレイ解像度はC#で取得できたので、後は実モニタサイズをユーザーに入力してもらえば、小学生の算数レベルでA4用紙のウィドウは作れる
でいいかと思ったんだけど、
そうすると×の大きさや当たり判定の範囲まですべて計算しなければいけず、
なんかあほらしいことをやってるのか??
と疑問に思ってきました。
ブラウザ上に表示するとユーザー側でctrl+スクロールで表示の大きさ変えられちゃうんですよね。
実世界での㎜単位での大きさを固定したいってあまりなさそうな要求だし、aでやってくしかないのかなぁ。
903:デフォルトの名無しさん
18/03/31 18:02:33.45 UG1yVXDX.net
そこまでやるなら被験者とモニターの距離も計測して一定にしないと…
904:デフォルトの名無しさん
18/03/31 18:12:00.40 NJrC8qba.net
なぁに網膜に直接書き込んでしまえばw
905:デフォルトの名無しさん
18/03/31 18:20:56.75 /DPGnFFi.net
いいね!
906:デフォルトの名無しさん
18/03/31 18:35:00.07 tzO3VEeA.net
>>885
その通りですね。
同じような実験で被験者の姿勢によりスコアが変わるらしいので。
907:デフォルトの名無しさん
18/03/31 18:42:00.60 AhiWvdUc.net
>>878
WpfにはViewBoxと言う拡大縮小自在なモジュール在るから上手くやりゃなんとかなるよ
908:デフォルトの名無しさん
18/03/31 18:59:42.15 tzO3VEeA.net
>>889
ViewBox調べてみます。
少しフォームベースで初めてみたんですけど、
これから勉強するならWpfとフォームどちらで作るのがおすすめですか?
フォームでもゴリゴリやっていけば狙ったものはつくれそうな感じはするんですけど、
wpfのほうがいいというのも聞いたりして悩み中です。
909:デフォルトの名無しさん
18/03/31 19:11:47.57 AhiWvdUc.net
>>890
件の用途だとformsは厳しいと思われるのでwpfを奨めるが、情報少ないから習得は簡単じゃないと思うよ
もし、不特定多数への配布を考えているならwpfの進化形であるUWPを使うのを奨める
910:デフォルトの名無しさん
18/03/31 19:59:43.42 kEu+XyQj.net
>>882
ただ単に読み込むのはどのタイミングでどうやってるの?
911:デフォルトの名無しさん
18/03/31 20:17:53.84 tzO3VEeA.net
>>891
wpf情報少ないんですか・・・。
UWPも書籍はまだ少ないみたいですね。
ど素人なので学習のための情報は欲しいなぁ。
フォームでも×を線で描いてしまえばなんとかなりそうなんですけど、
拙速コードでも早期論文化を目指してフォームでやるか
将来のためにUWPを勉強するか悩みますね。
912:デフォルトの名無しさん
18/03/31 20:26:11.30 Tt7WJg3O.net
>>893
WPFでもFormでもスケーリングはページ変換使うだけだから難しくないと思う。
■ Formを使う場合の問題点
- 自動でスケーリングされるのはグラフィックだけ。コントロールやそのフォントは
コードでスケーリングや座標変換する必要がある
■ WPFを使う場合の問題点
- GDI+ほど簡単じゃない
- 多数の図形を描画する場合はパフォーマンスが問題になる