[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/09 11:23 / Filesize : 313 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん(ワッチョイ f97b-lsIp) mailto:sage [2016/10/08(土) 21:33:26.22 ID:KfBpvv2w0.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part124
echo.2ch.net/test/read.cgi/tech/1471004887/

■関連スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467142749/

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

563 名前:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe) mailto:sage [2016/11/18(金) 01:08:31.02 ID:Bd8bsuVC0.net]
クエリ式なんか使ったことない

564 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 02:34:45.49 ID:ayjJho0i0.net]
>554
それ以外ならラムダ式でできるんか? 例えば? Where、selectを
ラムダ式で書いてみて。

ラムダ式の意味がわからんけど、まあ適当に「こんなんか」くらいで使ってる。

565 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 02:47:08.73 ID:ayjJho0i0.net]
LINQは便利やけど、OrderByとか気持ち悪くて使う気しないな。
単純にSortするよな。
多用するとパーフォマンスが無茶苦茶落ちると思う。

566 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 02:54:33.31 ID:ayjJho0i0.net]
public IEnumerable<string> Records
{
get
{
return doc.Element("root").Element("collections").Elements("own").Select(c => c.Descendants("ID").First().Value);
}
}


LINQだめじゃん。 こっちのほうが簡単。
public IEnumerable<string> Records
{
get
{
return doc.XPathSelectElements("//root/collections/own/ID");
}
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


567 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 02:57:24.22 ID:ayjJho0i0.net]
XpathとLINQを組み合わせてつかえんのか?

568 名前:デフォルトの名無しさん (ワッチョイ 3a13-RUi6) mailto:sage [2016/11/18(金) 03:07:45.45 ID:qODTBmiq0.net]
ごちゃごちゃうるせーよ

569 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 03:13:27.93 ID:ayjJho0i0.net]
var elem = XElement.Parse(something);
var maz = elem.Element("vehicle").Elements("car").Where(c => ((string)c.Attribute("maker")) == "mazda"));

LINQはXMLみたいな階層構造を持ってるとダメじゃない?
これじゃ最初のItemしかサーチできないよ。

570 名前:デフォルトの名無しさん (ブーイモ MM0d-N7ik) mailto:sage [2016/11/18(金) 08:03:56.85 ID:/xmrja5bM.net]
Linqがボトルネックになったことって意外とないよな
大量データってわかってれば最初から速度最適化考えるし
CLRはメモリ節約の効果がでかいんだね

571 名前:デフォルトの名無しさん (ワッチョイ b5dc-2XGH) mailto:sage [2016/11/18(金) 08:16:20.86 ID:gT3Hev+M0.net]
それはLINQ使おうとする奴はだいたい一定のスキルがあるから無茶しないだけ
LINQを使おうと思えば使えるシーンで大量データに対して O(N^2)とかの馬鹿みたいなループをやらかす奴はやっぱりいるわけだけど、
そういう奴は当然LINQなんか使わない(使えない)



572 名前:デフォルトの名無しさん (ワッチョイ ad5b-N7ik) mailto:sage [2016/11/18(金) 08:21:39.98 ID:O/884XX90.net]
トグルスイッチのようなインターフェースってWindowsformのコントロールにあるっけ?
ない場合どうやって作れる?

573 名前:デフォルトの名無しさん (ドコグロ MMff-RUi6) mailto:sage [2016/11/18(金) 08:26:54.53 ID:MmcaWbSXM.net]
>>564
チェックボックスかラジオボタンで代用

574 名前:デフォルトの名無しさん (ワッチョイ 7c03-EDxK) mailto:sage [2016/11/18(金) 08:35:21.61 ID:nNUszv7+0.net]
>>538-541
ありがとうございます!!

B+vLCAoF0さんのDictionaryを使う方法、
サンプルコードを準備していただいたhkg3+6Yaaさんの方法
どちらも勉強させていただきます。
本当に感謝です、ありがとうございました!

575 名前:デフォルトの名無しさん (オッペケ Sra9-hkLf) mailto:sage [2016/11/18(金) 09:35:07.23 ID:+KSaSaaRr.net]
LINQ-To-XMLの立場は。

576 名前:デフォルトの名無しさん (ワッチョイ b974-qiik) mailto:sage [2016/11/18(金) 09:39:13.30 ID:MjC3oXMe0.net]
知らない子ですねえ

577 名前:デフォルトの名無しさん (ワッチョイ 1519-/ySS) mailto:sage [2016/11/18(金) 10:51:06.70 ID:AfWqy2AK0.net]
>>564
2値のTrackBarとか

578 名前:デフォルトの名無しさん (ワッチョイ 88d4-XpIe) mailto:sage [2016/11/18(金) 12:42:20.87 ID:qAuADTbv0.net]
C++弄っていた人から見たら、C#もVBも大差ないよなぁ
ちょっと方言が違うだけ、みたいな

値渡しなのか参照渡しなのか、パッと見で分からないし
使った変数の後始末はFramework任せとか

579 名前:デフォルトの名無しさん (ワッチョイ 1519-/ySS) mailto:sage [2016/11/18(金) 14:11:40.18 ID:AfWqy2AK0.net]
値渡しなのか参照渡しなのか分からないのはむしろC++とVBだと思うのだけど
呼び出される側だけ特別な記述&/ByRefして呼び出す側は変わらないって言う
C#は両者共に特別な記述ref/outが必要で

580 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 14:27:23.42 ID:ayjJho0i0.net]
C++とか触る気しないな。いらんことを書く量が多すぎて気が狂いそう。
 その点F#をすこし触ってみたが、これは楽だな。C#からすると違和感があるが型推論が
しっかりしているので慣れると楽だと思う。
そもそもループを書くためのforとかがない。もしLINQを知らなかったら、ループなしで
どうやってプログラムを書くのか理解に苦しんだと思う。

581 名前:537 (ワッチョイ 7c03-EDxK) mailto:sage [2016/11/18(金) 15:03:02.85 ID:nNUszv7+0.net]
>>537 です。

>>541 でサービスしていただきましたが現状とても難しいです。
=>ってなんでしょうか。ビルドできないです。。。

でも、もう少しがんばります。



582 名前:デフォルトの名無しさん (アウアウオー Sa36-MfQN) mailto:sage [2016/11/18(金) 18:15:45.39 ID:fuS99ZTSa.net]
>>573
使ってるC#のバージョンは?
それはC#6で導入された読み出し専用プロパティの省略記法

public List<Measured> MeasuredList => _MeasuredList;

public List<Measured> MeasuredList
{
  get {return _MeasuredList;}
}
と同じ。
www.atmarkit.co.jp/ait/articles/1606/01/news051.html

583 名前:デフォルトの名無しさん (ワッチョイ ad5b-N7ik) mailto:sage [2016/11/18(金) 20:21:01.12 ID:O/884XX90.net]
>>565
そっかー残念
ありがとう

584 名前:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe) mailto:sage [2016/11/18(金) 20:30:49.38 ID:P4KNWvky0.net]
カスタムコントロールで適当なコントロールから継承して作ればいいだけ
簡単に作れるよ

585 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/18(金) 20:45:44.35 ID:ayjJho0i0.net]
適当では作れんだろ。w
どのコントロールを継承してどのように作るのか。

586 名前:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI) [2016/11/18(金) 20:53:06.96 ID:cT5mFVkF0.net]
keydownイベントをプログラムから発生させる方法はありますか?

587 名前:デフォルトの名無しさん (アウアウオー Sa36-MfQN) mailto:sage [2016/11/18(金) 20:54:03.59 ID:fuS99ZTSa.net]
まあ、Checkboxを継承するのが普通だろうねえ。

トグルスイッチっていうのはビジュアルをAndroidのUIにあるような奴にしたいってことかな。
ボタンの凹凸を切り替えるのでよければ何もしなくても標準でできるけど

588 名前:デフォルトの名無しさん (ワッチョイ 3f49-YqEk) mailto:sage [2016/11/18(金) 21:37:55.69 ID:8JkTMqoR0.net]
見た目を重視しないなら、ユーザーコントロールでトグルボタン2個乗っけるのが手っ取り早い。

589 名前:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe) mailto:sage [2016/11/18(金) 21:51:48.89 ID:P4KNWvky0.net]
Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
Checkedで描画する画像切替えるとかで簡単に実現できる
サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな

590 名前:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI) [2016/11/18(金) 22:02:56.90 ID:cT5mFVkF0.net]
>>578です
実装できました

591 名前:デフォルトの名無しさん (ワッチョイ 3f49-+6wY) [2016/11/18(金) 22:24:07.69 ID:8JkTMqoR0.net]
画像貼り付けて作ると高DPI対応は出来なくなるな



592 名前:デフォルトの名無しさん (ワッチョイ 34ce-ke/V) mailto:sage [2016/11/18(金) 22:47:36.55 ID:YsofO7c60.net]
画像を高画質で持っておいて伸縮サセルノデス

593 名前:デフォルトの名無しさん (アウアウオー Sa36-MfQN) mailto:sage [2016/11/18(金) 22:49:04.17 ID:fuS99ZTSa.net]
EMFを使えば出来るんじゃない?
十分でかいビットマップを使ってもいいと思うけど

594 名前:デフォルトの名無しさん (ワッチョイ 34ce-ke/V) mailto:sage [2016/11/18(金) 22:51:45.64 ID:YsofO7c60.net]
ところでWindows10によくある横にスライドするスイッチ(● )←みたいなやつ
あれの状態をプログラムから参照したいのですが、
ウィンドウハンドル的なものは取れますか?

595 名前:デフォルトの名無しさん (ワッチョイ 5e23-tQqt) mailto:sage [2016/11/18(金) 23:09:11.73 ID:RGR0MUcx0.net]
>>585
つか、単純な図形だからGDI+で書いたほうが早いし、アニメーションさせたくなったら
画像はお払い箱です

596 名前:デフォルトの名無しさん (ワッチョイ 3f49-YqEk) mailto:sage [2016/11/18(金) 23:12:28.84 ID:8JkTMqoR0.net]
EMFは存在をすっかり忘れていたな
C#でも扱えるんだね

デカいビットマップの縮小は、小さいパーツだとあまり綺麗に表示されないよ
マルチアイコンみたいに複数の解像度の画像を用意すればましだけど

597 名前:デフォルトの名無しさん (ワッチョイ 3a13-8L7G) [2016/11/18(金) 23:29:21.49 ID:+XmNVsSt0.net]
自作のフォームアプリケーションを起動させて引数も渡したいのですがどうすればいいですか?

598 名前:デフォルトの名無しさん (ワッチョイ 3a13-8L7G) [2016/11/18(金) 23:40:26.29 ID:+XmNVsSt0.net]
できました

599 名前:デフォルトの名無しさん (ワッチョイ 5e7d-XpIe) mailto:sage [2016/11/18(金) 23:55:36.52 ID:X3QgbGYl0.net]
画像の拡大縮小はモード選べるよ。十分綺麗にできるでしょ

600 名前:デフォルトの名無しさん (ワッチョイ 56e1-RUi6) mailto:sage [2016/11/19(土) 00:45:16.52 ID:1yryIr4y0.net]
>>559
普通に出来るだろ

601 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/19(土) 02:06:11.41 ID:E+HZm7+A0.net]
>Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
>Checkedで描画する画像切替えるとかで簡単に実現できる
>サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな

こんなことやったことないわ。どういう意味だ?
なんでChecboxを継承する必要があるんだ?
つかトグルSWだよな。
ちょっとやってみるんで指導よろしく。

OnPaintで描くってどういう意味だ?
情報が欠落しすぎ。
まずプロジェクトに追加するのは何? 
ユーザーコントロール? クラス? コンポーネント?
どれだ?



602 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/19(土) 02:08:07.35 ID:E+HZm7+A0.net]
checkboxを継承するってのだから、どう考えてもクラスだよな。じゃあまあ
追加クラス。

603 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/19(土) 02:31:43.92 ID:E+HZm7+A0.net]
public class clsToggleButton : CheckBox
{
Form _pform;

public clsToggleButton(Form frm)
{
_pform = frm;
}
public void OnPaint (PaintEventArgs pevent)
{
//ここにトグルボタンを描く
if( this.Checked == false ){
//どこに描くんだろ?

}else{

}
}

}

604 名前:デフォルトの名無しさん (ワッチョイ 5e7d-XpIe) mailto:sage [2016/11/19(土) 02:41:43.15 ID:wlTmYqF50.net]
追加→新しい項目→カスタムコントロール
で、追加されたコードのControlの部分をCheckBoxに。
OnPaintの所は、例えば↓みたいすれば、クリックするたびに赤と青が入れ替わる
protected override void OnPaint(PaintEventArgs pe)
{
  using (var brush = new SolidBrush(Checked? Color.Red : Color.Blue))
  {
    pe.Graphics.FillRectangle(brush, ClientRectangle);
  }
}
一度ビルドすると、ツールボックスに載るのでドラッグ&ドロップでフォームに配置できる

605 名前:デフォルトの名無しさん (スププ Sdb8-RUi6) mailto:sage [2016/11/19(土) 02:54:11.98 ID:aIswJeomd.net]
>>593
一切欠落してなくない?
Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザコントロールだけど、そんな瑣末な話は置いといて、
とりあえず、OnPaintをオーバーライドして、graphicsにthis.checked描画してみたら?

606 名前:デフォルトの名無しさん (ワッチョイ 5e41-mj3c) [2016/11/19(土) 04:05:39.65 ID:N2eyluxh0.net]
どうしてもタメになる書籍はC++をサンプルに使われてることが
多いから調べてはいるけど
C#に慣れちゃってるとまーキモチワルい

確かにこれが出来ればほとんど何でも出来るんだろうけど・・・

とりあえずC++最高ということで

607 名前:デフォルトの名無しさん (ワッチョイ 5e41-mj3c) [2016/11/19(土) 04:38:58.99 ID:N2eyluxh0.net]
ちげぇ!
C#最高!です

なんとか基本的なことは出来るようになった希ガス
疲れたよ、もう

608 名前:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI) [2016/11/19(土) 06:23:34.01 ID:S6bRHJ270.net]
600げと

609 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/19(土) 06:31:51.33 ID:E+HZm7+A0.net]
>Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザ
>コントロールだけど、そんな瑣末な話は置いといて、

うろ覚えの初心者には全然些末じゃないy。 無茶苦茶大事!!!
「Checkboxを継承したコントロール」ここにたどり着くのに一晩かかる。

ユーザコントロール is a コンポーネント
コンポーネント is a クラス 
こういう関係なの? おお、初めて知った。

トグルボタン は ユーザーコントロールとして作るってことだね。納得。

でも空クラスを配置してCheckboxを継承してもおんなじことだよね。
何が違うの?

610 名前:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G) [2016/11/19(土) 06:56:43.78 ID:E+HZm7+A0.net]
>596
この説明は完璧って感じがする。
 これからでかけるのでチェックできない残念。

611 名前:デフォルトの名無しさん (ワッチョイ 9c7b-wMId) mailto:sage [2016/11/19(土) 08:53:15.23 ID:gGKRRZRa0.net]
>>601
各種コントロールの説明や、継承チェーンを見れば?

自分が作りたいコントロールに近いものを探して使うか、
そこから継承して派生したコントロールを作ればいい

クラスを使う時は、継承チェーンをさかのぼりながら、
ベースクラスにどういう機能があるか調べる

なぜなら派生クラスは、ベースクラスのすべての機能を持っているから



612 名前:デフォルトの名無しさん (ワッチョイ 3f49-YqEk) mailto:sage [2016/11/19(土) 12:30:26.20 ID:xW+PNGAl0.net]
>>598
STLなんかは後付けで今風な機能を実装しようとしてて、無理やり感が半端ない。

613 名前:デフォルトの名無しさん (スププ Sdb8-RUi6) mailto:sage [2016/11/19(土) 13:12:50.96 ID:aIswJeomd.net]
>>601
同じ事だよ。
ユーザコントロール一度画面から選ぶと、似たようなコード出て来るから、
そいつの継承元見てみ。
>>596は親切だな。

614 名前:デフォルトの名無しさん (ワッチョイ 9c7b-wMId) mailto:sage [2016/11/19(土) 18:51:47.20 ID:gGKRRZRa0.net]
よく知らんけど普通、IDEにはクラスウィザードが付いている

新しいクラスを作るときは、クラスウィザードの画面で作れば、自動的にクラスが作られる

615 名前:デフォルトの名無しさん (アウアウオー Sa36-MfQN) mailto:sage [2016/11/19(土) 19:01:01.87 ID:VKIYWaqIa.net]
そんな使ってる人ほとんどいないと思うよw

ところで前から思うんだけどウィザードってのはポリコレ的にどうなのかね

616 名前:デフォルトの名無しさん (ワッチョイ 3a20-XpIe) [2016/11/20(日) 19:20:37.60 ID:DP6jtmXB0.net]
ハードディスクのベンチマークを測る
簡易ツールを作りたくて
ランダムリード・ライトのサンプルを見つけたのですが
これでハードディスクへのランダムリード・ライトになるでしょうか?

//ランダム書き込み
using (System.IO.BinaryWriter rw = new System.IO.BinaryWriter(
File.OpenWrite(@"C:\temp\test.txt"), System.Text.Encoding.UTF8))
rw.Write("0");

//ランダム読み込み
using (System.IO.FileStream file = new FileStream(@"C:\temp\test.txt",
System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
byte[] bs = new byte[file.Length];
file.Read(bs, 0, bs.Length);
}

617 名前:デフォルトの名無しさん (ブーイモ MMb8-RUi6) mailto:sage [2016/11/20(日) 19:28:04.56 ID:aSeFXcOvM.net]
ファイル名が違うな ¥¥.¥PhysicalDriveN だよ

618 名前:デフォルトの名無しさん (ワッチョイ 777b-w7k2) mailto:sage [2016/11/20(日) 20:25:05.70 ID:JNgwCyth0.net]
ディスク書き込みは複数層でバッファリングがあるから
.NETのライブラリだけじゃ割と無理じゃないかな

619 名前:デフォルトの名無しさん (ワッチョイ 3a20-XpIe) [2016/11/20(日) 20:32:04.76 ID:DP6jtmXB0.net]
\\.\PhysicalDriveN
なんてドライブの指定方法があるのですね

ただ、MBRを迂闊に書き換えると
クラッシュするとか
単純な読み書きは危険なようで

だから、公開されてるベンチツールには
シーケンシャルの読み書きしかないのかと思いました

情報ありがとうございます

620 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/20(日) 22:44:41.11 ID:ujJmR5b00.net]
BindingSource のデータをLINQで扱いたいのですが
↓コードのbs に登録されているデータをLINQを使って
ID=100とID=200 のKamokuの平均値をだしたいのですがどんな風にやればいいでしょうか?


private List<Employee> emplist;

BindingSource bs = new BindingSource(emplist, string.Empty);
dataGridView1.DataSource = bs;

621 名前:デフォルトの名無しさん (ワッチョイ 777b-w7k2) mailto:sage [2016/11/20(日) 23:11:49.40 ID:JNgwCyth0.net]
DataSourceがList<T>ならBindingSourceでフィルタできるわけでも無し
emplistにWhereとAverageするだけじゃね
Whereで要素数0になる可能性があるとちょっと面倒だけど



622 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/20(日) 23:36:14.07 ID:ujJmR5b00.net]
>>613
DataTable でLINQ使うときは、↓のように var items = dt.AsEnumerable() でやれるのですが
>>612のようにやるときは、bs.AsEnumerable() みたいにはできないのですか?


DataTable dt;

var items = dt.AsEnumerable()
.Where(x => x["id"] == "100")
.Select(x => x["Koumoku"].ToString());

623 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/20(日) 23:45:11.80 ID:mNZMIvsS0.net]
BindingSourceは一応IEnumerableを実装してるから
bs.Cast<Employee>().Where(…とできるんじゃないの
試したことないしそんなことしようとも思わないけど

624 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/20(日) 23:51:53.85 ID:ujJmR5b00.net]
>>615
ありがとう試してみます。

625 名前:デフォルトの名無しさん (ワッチョイ 3f49-YqEk) mailto:sage [2016/11/21(月) 02:19:09.69 ID:iKiRpZRf0.net]
>>611
>>610の言う通り、c#のStreamキャッシュとOSのファイルキャッシュがあるから、C#標準のライブラリだけじゃ実現できないよ。
P/InvokeでCreateFile()やWriteFile()/ReadFile()等のWIN32APIを呼び出す必要がある。
OSのファイルキャッシュは、CreateFile()でオープンする時にFILE_FLAG_NO_BUFFERINGを指定すれば無効にできる。

HDDに直接書き込みたいなら、ロックとアンマウントも必要になるんじゃないかな。
(DeviceIoControl()でFSCTL_LOCK_VOLUMEとFSCTL_DISMOUNT_VOLUME)

626 名前:デフォルトの名無しさん (ワッチョイ 159a-2Ppy) [2016/11/21(月) 05:14:56.16 ID:6eO9t+4E0.net]
>>490-491
C#側でデリゲート型を定義して、起動時にコールバック関数のデリゲートをDLLに渡し、
DLL側では関数ポインタとして受け取ることで、C#側の関数をC側から適宜呼び出すことが
できました。C#側はunsafeを使ってないマネージコードなのに、Cから関数ポインタの形で
呼び出すことができるんですね、ちょっと驚きました。有り難うございました。

そこでもう一つ疑問が出てきたんですが、DllImportしたDLLがprintfした内容(標準出力)を、
WPFアプリやFormアプリで受け取って特定のコントロールに出力したり、GUIとは別に
コンソールウィンドウを出してそちらに表示するようなことはできるんでしょうか。

627 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/21(月) 07:15:54.06 ID:EumYM2T30.net]
SetStdHandleとかでできるんじゃないの
素直に子プロセス作ってリダイレクトした方が簡単確実だけど

628 名前:デフォルトの名無しさん (ワッチョイ fa23-tQqt) mailto:sage [2016/11/21(月) 08:51:20.53 ID:hLpmxTjl0.net]
int25とかint26思い出したわ

629 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/21(月) 20:26:47.04 ID:7M/YTSBB0.net]
LINQで質問ですが
class Person
{
public string id { get; set; }
public DateTime Dateday{ get; set; }
public int kamoku { get; set; }
}

var items = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).avrage;

↑でID = 100 のkamoku の平均を求めていますが、
Datedayの最新10件で平均を求めるのはどんな書き方があるでしょうか?
後、IDの割合を求めるときに↑のwhere tesA.id == 100 を外したのをもう一回やって割り算しているのですが一括で書くときはどうすればいいでしょうか?

630 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/21(月) 22:40:08.70 ID:EumYM2T30.net]
>>621
var av = (
 from tesA in bs.Cast<Person>()
 where tesA.id == 100
 order by tesA.Dateday descending
 select tesA.kamoku
).Take(10).Average();
IDの割合の方は質問の意味が分からない

631 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/21(月) 23:04:49.74 ID:7M/YTSBB0.net]
>>622
ありがとうございます。参考になります。

IDの割合はAverageでなくてcountにしたほうがよかった。すみません
今は↓の結果 items100 / itemsALLで割合をだしています。これを1回で書きたいです。

var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;

var itemsALL = (from tesA in bs.Cast<Person>()
select tesA.kamoku).count;



632 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/21(月) 23:08:48.37 ID:EumYM2T30.net]
items100 / bs.Count でいいだろそれ

633 名前:デフォルトの名無しさん (ワッチョイ 5e41-mj3c) [2016/11/21(月) 23:14:12.37 ID:lc1W0DQ40.net]
一連のスイッチのオンオフを配列にいれて
シーケンスな処理を

634 名前:するんですが
そのままだと当然boolの配列です。

この場合、配列にする際にConvert.ToInt32を使い
0,1の配列にした方が処理速度が速くなる
ということはあるでしょうか?
配列数は多くても64個です。

自分で確認はまだしてないですが
知見多き方お願いします。
[]
[ここ壊れてます]

635 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/21(月) 23:22:00.28 ID:7M/YTSBB0.net]
>>624
>>623
すみません
items100 / bs.Count だと実際にやりたいので使えないので
↓ので items100  / itemsALL で書くときはどうしたらいいでしょうか?

var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;

var itemsALL = (from tesA in bs.Cast<Person>()
where tesA.id > 100
select tesA.kamoku).count;

636 名前:デフォルトの名無しさん (ワッチョイ 0448-dXbs) mailto:sage [2016/11/21(月) 23:30:37.04 ID:cS6E2DFI0.net]
>>625
BitArrayを調べてみたらいい、非ジェネリックでは唯一つかえる存在かもな

637 名前:デフォルトの名無しさん (アウアウオー Sa36-MfQN) mailto:sage [2016/11/21(月) 23:34:45.98 ID:4A1pLeCTa.net]
>>625
bool使って遅くなる理由があると思えんなあw
どっちにしろ要素数64じゃ差はでないでしょ。

「シーケンシャルな処理」とやらが単純な論理演算ならboolやboolの代用にintを使った配列ではなく、
intをビットワイズで使えば圧倒的に高速になるとは思う

638 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/21(月) 23:55:19.26 ID:EumYM2T30.net]
>>626
短くしたいだけならこれでいいだろ
var persons = bs.Cast<Person>();
var items100 = persons.Where(p => p.id == 100).Count();
var itemsALL = persons.Where(p => p.id > 100).Count();

全件スキャンが2度走るのが気持ち悪いということなら、素直にループにするか、
もしくはこんなやり方もできないこともない
var items = bs.Cast<Person>().ToLookup(p => p.CompareTo(100));
return items[0].Count() / items[1].Count();

639 名前:デフォルトの名無しさん (ワッチョイ fa73-XpIe) mailto:sage [2016/11/22(火) 00:12:53.34 ID:FPsVs5Xk0.net]
>>629
最後のがまだよくわからないけど調べてみます。
ありがとうございました。

640 名前:デフォルトの名無しさん (ワッチョイ 7d7b-XpIe) mailto:sage [2016/11/22(火) 00:22:30.53 ID:a+0IO69G0.net]
>>630
もしかしてArrayListつかってる?List使った方がいいよ

bs = new List<Person>();


float result = (float) bs.Count(x => x.id == 100) / bs.Count(x => x.id > 100);

641 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/22(火) 07:30:50.02 ID:agBMDwRZ0.net]
関係ないけどfloatは誤差が簡単に表面化するから
初心者スレ的には「最終出力以外には使うな」でいいと思う



642 名前:デフォルトの名無しさん (ドコグロ MM74-EDxK) mailto:sage [2016/11/22(火) 09:09:41.67 ID:iOkC5GDaM.net]
>>574
遅くなりすみません。
教えていただいたコードでうまくいきました。
ありがとうございました。

使っているのはVisual C# 2013です。

643 名前:デフォルトの名無しさん (ワッチョイ 40d9-k96Z) mailto:sage [2016/11/22(火) 13:19:07.30 ID:xeeHVDvp0.net]
VS2013のC#って>>574の書き方は出来なかったはずだが

644 名前:デフォルトの名無しさん (ワッチョイ 5e41-mj3c) [2016/11/22(火) 20:13:44.80 ID:ZJs8cfZ60.net]
>>627
>>628

ありがとうございます!!
そうですよね、このくらいの要素数なら
どっちにしろ誤差レベルとは思いましたが
かなり有益な情報得られたんでよかったです
調べてみます!

645 名前:デフォルトの名無しさん (ワッチョイ 800d-ke/V) [2016/11/22(火) 21:09:02.72 ID:0tp2RUgI0.net]
MVVMで、AのViewにあるボタンを押したらBのViewにBindingされているViewModelの値を変更するにはどうすればいいですか?

646 名前:デフォルトの名無しさん (オッペケ Sra9-hkLf) mailto:sage [2016/11/22(火) 21:23:07.00 ID:vhsrXRxUr.net]
>>636
AとBにモデルとして関連があるなら、それ同士で連係。
画面としてのみの関連なら、ViewModel同士で連係。

647 名前:デフォルトの名無しさん (ワッチョイ 800d-ke/V) [2016/11/22(火) 21:39:14.03 ID:0tp2RUgI0.net]
>>637
返信ありがとうございます
ViewModel同士の連係の方ですが、具体的にどのようにすればいいでしょうか?
例えばBのViewModelにあるIsEnabledというメンバー変数の値がある場合、StaticにしてAのViewModelでBのViewModelのインスタンスを作るのでしょうか?

648 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/22(火) 21:48:58.09 ID:agBMDwRZ0.net]
>>638
AがBのインスタンスを作るんならStaticにする必要は全く無いだろ
しかし、そもそもVMを設ける目的は単体テストであるということを考えると、
VMが別のVMに明示的に依存するのは好ましくない
理想を言えば、AからBを直接newしたりBのメンバに直接アクセスするのではなく、
インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
AにBのインスタンスを外から渡してやるのがいい
インスタンスを渡すのはViewでやるかDIコンテナ使う

649 名前:デフォルトの名無しさん (ワッチョイ 800d-ke/V) [2016/11/22(火) 21:58:02.53 ID:0tp2RUgI0.net]
>>639
ご教授ありがとうございます!
ただ、
>インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
>AにBのインスタンスを外から渡してやるのがいい
この部分がわからないので、コードで実例を教えてください

650 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/22(火) 22:11:27.86 ID:agBMDwRZ0.net]
>>640
こんな感じ
interface IEnableable { public bool IsEnabled { get; set; } }
class AView {
 private AViewModel vm;
 public AView() {
  this.vm = new AViewModel(BViewModelのインスタンスを取得());
 }
}
class AViewModel {
 private IEnableable b;
 public AViewModel(IEnableable b) {
  this.b = b;
 }
 void 連携する() {
  this.b.IsEnabled = true;
 }
}
class BViewModel : IEnableable {
 public bool IsEnabled { get { 略 } set { 略 } }
}
BViewModelのインスタンスを取得() のところはnew BViewModel()でもいいしシングルトンでも何でもいい
MVVMでは依存関係はなるべくViewに押し付けるのが基本

651 名前:デフォルトの名無しさん (ワッチョイ 800d-ke/V) [2016/11/22(火) 22:21:59.10 ID:0tp2RUgI0.net]
>>641
なるほど、このようにやるんですね
Viewに押し付けるというのも勉強になりました
本当にありがとうございます!



652 名前:デフォルトの名無しさん (ワッチョイ 9cba-XpIe) mailto:sage [2016/11/22(火) 22:34:41.26 ID:BBlq8Dj70.net]
アプリケーションの設定を保持するクラスを作ってこれをシリアライズできるようにしたのですが、
このシリアライズしたものをapp.configに含むことはできるでしょうか?
ファイル名や場所をコードで指定するのが嫌だなぁという程度の理由ですが。

653 名前:デフォルトの名無しさん (ワッチョイ b5dc-Th+s) mailto:sage [2016/11/22(火) 22:42:45.68 ID:agBMDwRZ0.net]
>>643
System.Configuration.ConfigurationSection
でも普通にSettings使った方が簡単だと思うけど

654 名前:デフォルトの名無しさん (ワッチョイ 9cba-XpIe) mailto:sage [2016/11/22(火) 23:20:36.22 ID:BBlq8Dj70.net]
そうですか、無いですか。ありがとうございました。

655 名前:デフォルトの名無しさん (ワッチョイ a030-qiik) mailto:sage [2016/11/23(水) 01:45:13.48 ID:MGsJz9yg0.net]
噛み合ってなさが絶妙

656 名前:573 (ドコグロ MM87-f5kA) mailto:sage [2016/11/24(木) 09:42:16.88 ID:EZR6VYZqM.net]
>>573 です。

if(1 == args.Count()){
var t1 = new TestItem("デバイス1");
}
if (2 == args.Count()){
t1.AddMeasured(new Measured("電圧", "V", 1));
t1.AddMeasured(new Measured("電流", "mA", 100));
testItems.Add(t1);
}
上記のようにすると下IF文内のt1が”現在のコンテキスト内に存在しません”となってしまします。
IF分の条件式は例ですがt1の生成と値の格納が同条件でない場合は
どのように処置するべきでしょうか。
やりたいことはテキストファイルから各語を読み出して格納して数値演算(平均値、最大、最小、標準偏差)したいのです。
テキストに格納してある情報は次の順になります。

”項目名1”
”項目名1の測定値1”
”項目名2”
”項目名2の測定値1”
 ・・・
”項目名10”
”項目名10の測定値1”
”項目名1”
”項目名1の測定値2”
 ・・・

1回目の”項目名n”を取得したときに配列(List)を生成し
その後は”項目名n”により選択した生成済みの配列に”測定値n”を格納したいです。
本業はHWよりのためC#基礎がわかって無く申し訳ありません。
でも何とかできることは自分で処理したいと思っています。
よろしくお願いします。

657 名前:デフォルトの名無しさん (ワッチョイ ab3a-/sNf) mailto:sage [2016/11/24(木) 10:18:45.81 ID:+mUg/yMV0.net]
>>647
if文の外で変数定義する。
『スコープ』の概念を学ぶべし。

今のレベルの基本が分かってない内はvar使わない方が良いかも。
varは便利だし正しく使えば特に害のない機能だけど、意味が分からないうちはやめとこう。

658 名前:デフォルトの名無しさん (ドコグロ MM27-f5kA) mailto:sage [2016/11/24(木) 11:09:09.16 ID:IyDqbIdrM.net]
>>648
ありがとうございます!
チャレンジしてみます。

659 名前:デフォルトの名無しさん (ワッチョイ a77b-rApL) [2016/11/24(木) 12:28:53.06 ID:P/Ibr7r50.net]
varは積極的に使うべきだよ。

660 名前:デフォルトの名無しさん (ワッチョイ c748-AQyI) mailto:sage [2016/11/24(木) 14:01:47.31 ID:4ySrR9x20.net]
>>647
標準偏差は自前で計算してもいいけどMath.NET Numericsというのが既にある(nugetで入れる)
ideone.com/kv7bLQ

こういうのってRの方が手っ取り早い気がする
CSVの読み込みからグラフ描画まで揃ってるしな

661 名前:デフォルトの名無しさん (ワッチョイ 5b3c-/sNf) mailto:sage [2016/11/24(木) 14:14:09.14 ID:G2Ig6Dqz0.net]
>>648
var関係ないやろ



662 名前:648 (ブーイモ MMc7-/sNf) mailto:sage [2016/11/24(木) 15:37:41.35 ID:cupH4QVAM.net]
>>650
それは同意する。積極的に使うべき。
ただ、スコープの理解がまだの方には少し毒と思っただけ。

>>649
異論も多いようなので、varに関しては先ほどの発言を気にせず自由にやって下さいな。頑張って!

663 名前:デフォルトの名無しさん (JP 0Hdf-sTmH) mailto:sage [2016/11/24(木) 17:51:15.84 ID:2Y5JG7GhH.net]
質問します。

ファイルの存在を確認する方法についての質問です。

if (System.IO.File.Exists(@"C:\tmp\sample.txt"))
{
MessageBox.Show("ファイルは存在します");
}
else
{
MessageBox.Show("ファイルは存在しません");
}

上記例の場合、
「tempフォルダ内のsample.txtというファイル」
の存在を確認するようになっていますが、
同時に異なる2つのフォルダ内の2種類のファイルの存在を
確認するにはどうすればいいのでしょうか?

C:\tmp1\sample1.txt
C:\tmp2\sample2.txt

が同時に(又は片方だけ)存在する場合の処理を行いたいと思っています。

File.Exists((@"C:\tmp1\sample1.txt")&&(@"C:\tmp2\sample2.txt"))
みたいな書き方はできないんでしょうか?

やってみたらNGになったんで質問した次第です。

よろしくお願いします。






[ 続きを読む ] / [ 携帯版 ]

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

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