全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 最新50
C#, C♯, C#相談室 Part63

1デフォルトの名無しさんsage2010/11/14(日) 20:10:48
前スレ
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech//

Visual C# 2010 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい
2デフォルトの名無しさんsage2010/11/14(日) 20:32:09
実際テンプレって今まであったの?
3デフォルトの名無しさんsage2010/11/14(日) 20:43:35
確認した。58まではあった。59でどっかのアホが勝手に消した
4デフォルトの名無しさんsage2010/11/14(日) 21:09:29
貼れよ(´・ω・`)

>>1
5デフォルトの名無しさんsage2010/11/14(日) 21:37:40
58からコピペ一部修正。面倒なのでリンクは更新しない

----------------------------------------
関連スレ

ふらっとC#,C♯,C#(初心者用) Part57
http://pc12.2ch.net/test/read.cgi/tech//

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech//

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech//

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech//

ASP.NET + Atlas or Ajax について
http://pc12.2ch.net/test/read.cgi/tech//

Microsoft Silverlight その5
http://pc12.2ch.net/test/read.cgi/tech//

Visual Studio 2010 Part3
http://pc12.2ch.net/test/read.cgi/tech//
6デフォルトの名無しさんsage2010/11/14(日) 21:39:03
参考リンク

MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
7デフォルトの名無しさんsage2010/11/14(日) 21:41:15
ふらっとC#,C♯,C#(初心者用) Part65
http://hibari.2ch.net/test/read.cgi/tech//
8デフォルトの名無しさんsage2010/11/14(日) 21:41:57
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
〜インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html


※コードの量が多い場合は下記サイトを使うなどしたほうがいいかも※

http://ideone.com/
http://codepad.org/ (C#非対応)
9デフォルトの名無しさんsage2010/11/14(日) 21:43:06
おつおつ
10デフォルトの名無しさんsage2010/11/14(日) 22:49:23
貼るならリンク更新しろよアホ
11デフォルトの名無しさんsage2010/11/15(月) 10:55:43
ファイルに関連付けられた文字列等を取得するにはどうしたらいいんでしょうか?
エクスプローラーのようにexeならアプリケーションとかdllならアプリケーション拡張とかicoならアイコンとかです。
12デフォルトの名無しさんsage2010/11/15(月) 15:28:45
ttp://dobon.net/vb/dotnet/system/findassociatedexe.html
13デフォルトの名無しさんsage2010/11/15(月) 18:24:12
あれっ、自分で作ったUserControlを部品として
Form上にコントロールとして配置するのってどうやるんでしたっけ。
ツールボックスのリストに表示されないし、
Form1.Designers.csに手書きで入力してもドキュメントアウトラインに表示されません。

・Visual Studio 2010
・.NET Framework 2.0
・WinForms対象

UserControlのデザイン自体はデザイナ上で問題なくできるんですが。
14デフォルトの名無しさん2010/11/15(月) 18:28:12
>>13
部品作ってしまえば確か部品が並んでるところの一番上に紫色のギアみたいな
アイコンででてこなかったっけ?
まあでてなけりゃ一度リビルドでもすれば登録してくれるはず
15デフォルトの名無しさんsage2010/11/15(月) 18:44:22
>>14
ソリューションごとリビルドしましたが、出てこないです。
ツールボックスのリセットも実行しました。
16デフォルトの名無しさん2010/11/15(月) 20:12:01
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
17デフォルトの名無しさん2010/11/15(月) 20:21:31
>>15
プロジェクトの参照設定でUserControlを含むプロジェクトを追加すればいいんじゃね?
18デフォルトの名無しさんsage2010/11/15(月) 20:30:34
オプションのデザイナのところに設定項目あるよ
19デフォルトの名無しさん2010/11/16(火) 00:58:21
すんません、.NETは2.0です。
20デフォルトの名無しさん2010/11/16(火) 00:59:58
.netは関係ないよ
IDEのバージョンでデフォルトの認識動作の違いとかあるんじゃないの?
21デフォルトの名無しさん2010/11/16(火) 01:01:21
あら、さっきの投稿が無い(笑)

すいません、質問させてください。

Datasetの取得中、あんまり長いものは途中でキャンセルしたいんですけどうまいやり方が浮かびません...

マルチスレッドは少し調べました。メインでタイマー、サブスレッドにて取得処理。

しかし、取得処理自体はオラクルコマンドの処理1行で済んでしまうので、Volatileのフラグをたてて中断、のようなキレイな終わり方ができません。

以下うろ覚えのソースです。

取得処理をスレッドプールのキューに追加
System.Threading.ThreadPool.QueueUserWorkItem(
New System.Threading.WaitCallback(取得処理),入出力用クラス)

0.1秒ずつカウントして、結果のデータセットのテーブルカウントがあればリターン
for(int time =0; time<=5000 ;time +=100
{
Thread.sleep(100)
if(入出力クラス.dataset.tables.count != 0)
{
取得処理で使用しているDBクラスをdispose
return 入出力クラス.dataset
}
}
============================
5秒以上経つようならどうしよう??
============================
22デフォルトの名無しさん2010/11/16(火) 01:02:33
取得処理自体はプログラム共通のDBクラスで
dbAccess.getDataSet( sql , params )
のみのようなものであとはトライキャッチとかファイナリーにディスポーズ書いてたりするだけです。

バックグラウンドで動いているので、5秒以上経つなら〜のところにエラーのダイアログとdispose書いてうまく行ってるかと思いきや、ThreadのIsAliiveがtrueだったので後ろでまだ動いてる気がします...

というかそもそもテーブルカウントで判定で良いのかな?

アボート以外でなにかよい案無いでしょうか。

環境
Windows XP SP3
Oracle 10g
Visual Studio 2005
.NET 2.0
23デフォルトの名無しさんsage2010/11/16(火) 03:18:10
TableAdapterなりの取得するところにタイムアウト設定しろ
LINQならトランザクション宣言してそこで設定しろ
24デフォルトの名無しさんsage2010/11/16(火) 11:13:50
>>18
???
オプションダイアログに『Windows フォーム デザイナー』の項目はありますが、
これのどこをいじればいいんでしょう?
25デフォルトの名無しさんsage2010/11/16(火) 11:14:39
>>17
exeと同じプロジェクトでUserControlを作っているのに、
どうやってプロジェクト参照しろと?
26デフォルトの名無しさんsage2010/11/16(火) 11:17:34
>>18
AutoToolboxPopulateをTrueにして、
ツールボックスのリセットを行ったら表示された!
Falseにしてリセットにしたらまた表示されなくなった!
こんなところで表示状態が切り替わるなんて、わけわからなさすぎる……。

ともあれ、どうもありがとうございます。
27デフォルトの名無しさん2010/11/16(火) 12:16:26
自分以外の特定のウィンドウのハンドルを手に入れて最小化したいんだけど、
http://d.hatena.ne.jp/tomoemon/20080430/p2
で、いいのかな?
x64環境でも「user32.dll」でウィンドウハンドルって取得できるの?
28デフォルトの名無しさんsage2010/11/16(火) 13:31:57
ぴんヴぉけより向こう側の話はスレチ
29デフォルトの名無しさんsage2010/11/16(火) 20:47:03
Processで実行中にダイアログだしたいんですが、
ApartmentStateはどこに設定すればいいんでしょうか?
それらしいメンバはみつからんのですが・・・
30デフォルトの名無しさんsage2010/11/16(火) 21:31:30
ThreadじゃなくProcessなの?
だったら起動するexeで設定する。
31デフォルトの名無しさんsage2010/11/16(火) 21:50:44
Dod窓のアプリを外部で起動させてます。
その後にダイアログをだそうとしてますが例外が発生してしまうんですよね・・・
Threadで外部アプリ起動させたりできるんでしょうか?
検索しても見つかりませんでした・・・
32デフォルトの名無しさんsage2010/11/16(火) 22:00:31
しらんがな。最低限のコードくらい晒せよ。
33デフォルトの名無しさんsage2010/11/16(火) 22:07:30
>>31
外部のアプリは関係なくて、
別のスレッドからアプリ本体のUI操作をやろうとしたんじゃね。
Windowを作ったスレッドじゃないとUI操作は出来ないよ。
34デフォルトの名無しさんsage2010/11/16(火) 22:24:29
STAThreadAttributeとかは?
3527sage2010/11/16(火) 22:32:21
>>28
・・・ああ、P/Invokeのことだったんですね>ぴんヴぉけ
失礼、ちょっと意味が分かりませんでした。
その後、少し調べてみたのですが

http://bbs.wankuma.com/index.cgi?mode=al2&namber=7934&KLOG=19
>> >DllImport("USER32.dll")を使用し
>> という前提だったので32bitでいいのかと思っていましたが、XXX32.dllでも64bitになる可能性があるのでしょうか?
>ありますよ。
>64bit Windows でも User32.dll は User32.dll というファイル名です。(すごくイヤだけど)

ということでいいのでしょうか?
もちろん、こちらの企図した動作をするか、というのはまったくの別問題ですが。
36デフォルトの名無しさんsage2010/11/16(火) 22:36:01
やってから質問しような。
37デフォルトの名無しさんsage2010/11/16(火) 22:37:54
>・・・ああ、P/Invokeのことだったんですね>ぴんヴぉけ
これ俺も分かんなかった
そういうことか
38デフォルトの名無しさん2010/11/16(火) 22:39:54
ピンボケって何の話ですか?
39デフォルトの名無しさんsage2010/11/17(水) 09:08:09
ぴんぼけどっとねっと
40デフォルトの名無しさんsage2010/11/17(水) 17:10:57
非同期I/Oでちょっと質問
CallBack内でEndRead()していて、次のバッファ読み開始は別スレッドで行っている
そして非同期完了待ちはAsyncWaitHandle.WaitOne()でしてるんだけども
どうもCallBack呼ばれた瞬間に待機解除されてるぽい
EndRead()が呼ばれるまで確実に待つ方法はないですか?
41デフォルトの名無しさんsage2010/11/17(水) 22:50:33
>>40
ちょいと具体的な話見えない。
それっぽいコード出せない?
42デフォルトの名無しさんsage2010/11/18(木) 00:38:03
こういう流れになって欲しいけど
1.BeginRead()
2.AsyncWaitHandle.WaitOne()
3.BeginReadのコールバック
4.EndRead()
5.AsyncWaitHandle.WaitOne()の待機解除


実際はこうなってしまって困ってるってこと?
1.BeginRead()
2.AsyncWaitHandle.WaitOne()
3.BeginReadのコールバック
4.AsyncWaitHandle.WaitOne()の待機解除
5.EndRead()
43デフォルトの名無しさんsage2010/11/18(木) 04:09:57
Task使えば?
44デフォルトの名無しさんsage2010/11/18(木) 08:26:16
コールバックなんかnullにしておいて、WaitOne側でEndReadしてやればいい。
4540sage2010/11/18(木) 14:44:01
>>42
その通りです

>>43
.net3.5なのです

>>44
設計が変わっちゃうのでなるべく避けたいところです
それしか無いならしょうがないですが
46デフォルトの名無しさんsage2010/11/18(木) 15:57:38
>>45
非同期IOなんて定番な処理の一つなんだから、
調べれば実装例くらい出てくるでしょ。

他の実装を提示されて設計を変えないといけないって、
設計自体が間違ってたんじゃないかとは考えないのかね。
47デフォルトの名無しさんsage2010/11/18(木) 16:39:52
こないだ出た非同期拡張(最終的にC# 5.0に入る予定の機能の先行版)ちょっと触ってみたところ、
もう昔の書き方に戻れそうになくなるくらい非同期IO処理が楽なんだけど。
48デフォルトの名無しさんsage2010/11/18(木) 16:56:52
まじですか、そいつは楽しみだ。
つーかもう5.0なのかw
49デフォルトの名無しさんsage2010/11/18(木) 17:35:45
なるほどyieldみたいな感じなのね
似たような言語内DSLみたいなものが増えてくのは気持ち悪いなあ
うまいことyieldの拡張みたいにして統合できないのかな
50デフォルトの名無しさんsage2010/11/18(木) 17:35:48
シリアルポートならDataReceived使えばいいしなぁ
51デフォルトの名無しさんsage2010/11/18(木) 17:44:48
intよりもInt32で宣言した方がVSの色分けが統一されて綺麗
イベントメソッドのシグネチャも、object senderではなくてObject senderだと統一される
お前らどうしてる?
52デフォルトの名無しさんsage2010/11/18(木) 17:51:48
特に気にせず他の言語の癖でキーワードの方だけ使ってる
stringとobjectとdecimal以外の組み込み型は実際には特別扱いされてるから
Int32とか書く方が不自然な気もする
5352sage2010/11/18(木) 17:53:31
誤解されそうだから補足しとくと、intとSystem.Int32は全く同じ意味だよ
でもSystem.Int32型はコンパイラに特別扱いされてCILの組み込み型になる
54デフォルトの名無しさんsage2010/11/18(木) 17:55:25
>>51
intはAuto CPUでビルドしたときに64ビットになるから扱いが変わってくる。

……と言いたかったんだがCLRはC++とは違うから自信がなくなってきた。
詳しい人、頼む。
55デフォルトの名無しさんsage2010/11/18(木) 17:58:58
>>54
http://msdn.microsoft.com/ja-jp/library/aa691144(VS.71).aspx
56デフォルトの名無しさんsage2010/11/18(木) 18:00:22
俺もIntだとサイズが不安だから、Int32使ってる
Intが8Bitな時代を知ってるオッサンだからかもだが
57デフォルトの名無しさんsage2010/11/18(木) 18:08:04
64bitでもintは32bit
58デフォルトの名無しさんsage2010/11/18(木) 18:17:31
>>56
ご苦労様です。いい時代になりましたね。
59デフォルトの名無しさんsage2010/11/18(木) 19:57:20
>>58
本当にそう思う
もう640KB制限は嫌じゃー
60デフォルトの名無しさんsage2010/11/18(木) 20:01:12
int=8bitの時代を知ってるというより
最近の技術情報を勉強してないだけ
知らないだけ
61デフォルトの名無しさんsage2010/11/18(木) 20:15:51
62デフォルトの名無しさんsage2010/11/18(木) 20:18:48
63デフォルトの名無しさんsage2010/11/18(木) 20:21:29
#
64デフォルトの名無しさんsage2010/11/18(木) 20:32:46
>>56
ナイストラウマ。

でも、いまどき、JavaもC#もintのサイズは仕様として32ビットに固定されてる。
Cに戻らない限りはそのトラウマは忘れていい。
65デフォルトの名無しさんsage2010/11/18(木) 21:23:17
mov ax, ds:[si] ですね。わかります。
66デフォルトの名無しさんsage2010/11/18(木) 21:55:19
rep cmpsb
67デフォルトの名無しさんsage2010/11/19(金) 00:47:30
TaskとThreadの使い分けってどうすればいいの?
IsBackgroundが無かったり、Disposeが必要だったり、Taskのメリットがよくわかりませぬ。
あとTaskは複数走らせた時に開始がやたら遅いのが気になる。
68デフォルトの名無しさんsage2010/11/19(金) 01:52:03
基本は全部 Task で OK。
Thread はもはや生で使うものじゃない。
69デフォルトの名無しさんsage2010/11/19(金) 18:12:38
質問:イベントプロパティに登録された、デリゲートの複製を行いたいのですが、どうやって記述すればいいのでしょうか。
環境: .NET Framework 4.0
サンプルコード: http://ideone.com/lTx2v

あるイベントを実装させるために、IHostインターフェイスを定義してます。
そのIHostインターフェイスを実装する、Hoge、Bogeクラスがあり、あるタイミングでイベントを発生させます。
Parentクラスは、そのHoge、Bogeクラスを内包し、ある状態を元に、Hoge、Bogeクラスのインスタンスを切り替えながら処理を行います。
ProgramクラスでParentクラスのインスタンスを作成し、処理したいNoticeイベントのデリゲートを登録します。
Programクラスからは、Hoge、Bogeクラスは見せたくなく、Parentクラスを通して呼び出したいのです。

これって、一旦、Hoge、BogeクラスのイベントをParentクラス内で受けて、呼びなおすしかないのでしょうか。
シンプルに代入できたら楽なのですが・・・。
70デフォルトの名無しさんsage2010/11/19(金) 18:59:38
>>69
こんな感じでいかがでしょうか
http://ideone.com/AjJ6D
71デフォルトの名無しさんsage2010/11/19(金) 19:20:40
>>70
うおぉ(><
目からうろこです・・・。

なるほど。
クラス外からイベントプロパティを触ろうとしてるのが間違いだったのですね;
とりあえず、イベントを匿名メソッドで一回受けて、呼びなおす方法で回避していたのですが、これですっきりしました。
本当に、ありがとうございます。
72デフォルトの名無しさんsage2010/11/19(金) 19:24:33
メタ構文変数のhoge、huga、piyoはよくみるけどbogeは初めてみたw
73デフォルトの名無しさんsage2010/11/19(金) 19:29:52
Piyoちゃん、かわいいです ><
74デフォルトの名無しさんsage2010/11/19(金) 19:35:32
>>72
あはは^^;
適当に名前付けるときに、「ほげほげ」は思いついたんだけど、「もう一つなんだっけ?」って思い出せなくて、
「ge」をそろえて思わずつけちゃったw

次、質問することがあったらpigeにしますかね(笑)
75デフォルトの名無しさんsage2010/11/19(金) 19:40:29
>>75
Hageは深刻なエラーを生み出す可能性があるので
上司が目を通すコードには絶対に使わないように
76デフォルトの名無しさんsage2010/11/19(金) 19:47:48
>>75
Hageの扱いはデリゲートなので、Kamiを複製するときは、注意ですね。
77デフォルトの名無しさんsage2010/11/19(金) 19:50:57
山田くーん!座布団全部持って行きなさい!
78デフォルトの名無しさんsage2010/11/19(金) 20:43:15
>>69
>これって、一旦、Hoge、BogeクラスのイベントをParentクラス内で受けて、呼びなおすしかないのでしょうか。 

そのほうが自然じゃないかな。
Parent側で複数イベントに対応して構わないならすこぶるシンプルになる。

private IHost Host {
  get { return this._host; }
  set {
    if (_host != null) _host.Notice -= _host_Notice;
    _host = value;
    if (_host != null) _host.Notice += _host_Notice;
  }
}
private void _host_Notice(object sender, EventArgs ev) {
  EventHandler eh = Notice;
  if (eh != null) eh(sender, ev);
}
public event EventHandler Notice;
79デフォルトの名無しさんsage2010/11/19(金) 21:36:44
>>78
そうそう、まさにその「_host_Notice」をさらに匿名メソッドで、
「if (_host != null) _host.Notice += (object sender, EventArgs ev) => { 省略 }」
な感じで書いてたのが私の回避コードでした。

たぶん>>78さんのやり方のほうが、わかりやすくていいんですよね。

Parentクラスからもイベント呼び出しする可能性があるなら、この実装でもよかったんですが、
今回のは、完全に中身の処理をHoge、Bogeクラスが担当して、Parentクラスは切り替えのみの担当で、
完全に器の状態だったので、イベントをリレーするような感じにするのも「なんだかなー」と思ったのがきっかけでした。

まあ、あとは、「できそうでできないけど、どうなのよ!」という知的探究心というか、やり方があるなら知りたかったという感じで・・・。

想像してた解決方法が、登録されたデリゲートの列挙を取得し、foreachっぽい処理で再登録するようなものをイメージしてたので、
リフレクションあたりとかも、調べてたんですよね・・・。

なので、>>70さんの方法は、まさに驚きでした。
80デフォルトの名無しさんsage2010/11/20(土) 11:21:48
C#で自分で作ったクラスのオブジェクトをBinaryFormatterで
シリアライズして保存したファイルを,
そのクラスがない環境で読みだすにはどうすればいいでしょうか。
BinaryFormatterのシリアル化の仕様とかどこかで公開されてますか?
81デフォルトの名無しさんsage2010/11/20(土) 11:39:54
見たことないなぁ。

それはやっぱXMLシリアライズした方が。
通信路をZIP圧縮でもしとけばXMLでもそうたいしたサイズにならないし。
82デフォルトの名無しさんsage2010/11/20(土) 12:12:13
>>80
それはきつそうだなぁ。
>>81さんの言うとおり、普通にXMLシリアライズしたほうがいいとおもう。
吐き出したXMLファイルを圧縮するなら、LZMA SDKがお勧め。いわゆる7z形式。
http://sevenzip.sourceforge.jp/sdk.html

C#のライブラリでStreamに書き込めば、かなりサイズが小さくなるよ。
ライセンスもパブリックドメインだから、自由に使える。

もっと気軽に使いたいならSevenZipSharp、SevenZipLibなんてのもあるよ。
83デフォルトの名無しさん2010/11/20(土) 13:44:13
>>82
単一のファイルを手っ取り早く圧縮・解凍するんだったら、gzipかdeflateならよそから持ってきたDLLなんか要らない。
ただgzipおよびdeflateはストリームを圧縮する規格で、2個以上のファイルを一つにまとめるとかいった事が出来な
いので単一のバイトストリームを圧縮することしかできません。
XmlSerializer serializer = new XmlSerializer(typeof(Hoge));
using (FileStream fOut = File.OpenWrite(@"C:¥test.xml.gz"))
{
using (var gzs = new System.IO.Compression.GZipStream(fOut, System.IO.Compression.CompressionMode.Compress))
{
serializer.Serialize(gzs, new Hoge());
gzs.Flush();
}
}
HTTPでシリアライズしたデータを伝送するならレスポンスヘッダに「Content-Encoding: gzip」
を仕込むことで、たいていのクライアントはgzipデータを展開しながら読み込むことが出来ます。
(HTTPリクエストヘッダ中に「Accept-Encoding: gzip, deflate」とか入れてくるブラウザ等が対応。
少なくともIE4以上、Firefox1以上で対応。パソコン用ブラウザでgzip未対応なものはもう存在しない)
2chのdatファイルとかも端末がgzip対応していればgzipだったかdeflateで圧縮したデータを送
信してくる。
8480sage2010/11/20(土) 14:02:37
ありがとうございます。
わかりました,BinaryFormatterの読み出しは厳しそうですか。

それで質問が変わるのですが,
循環参照を含むオブジェクトグラフを
XML形式にSerializeできるライブラリとかないでしょうか。
BinaryFormatterなら循環参照OKなのですが
.NET Frameworkに入ってるXML関係の機能は
見たところ循環参照OKなのがなさそうなので・・・。
JavaだとSimpleとか循環参照OKなXMLシリアライザがあるのですが
そういう感じのがあったらうれしいです。
85デフォルトの名無しさんsage2010/11/20(土) 14:24:20
そうだねえ、GZipStreamなんてのもあるね。
こっちは7z形式の圧縮サイズが異常に小さくなるから、お勧めしただけなんだ。
それにLZMA SDKはソースに組み込めるからDLLにする必要もない。プロジェクトにフォルダ追加すれば使える。

それに、その用途ならその選択肢はベストなのはわかる。
が。。しかし、>>80の話のどこからHTTPで伝送する話が出てきたんだ・・・。
どういう要件で使ってるのか、詳細がわからないのにすごい限定してないかい?

まあ、それいうと、圧縮の話は>>81の話に便乗しただけだけども・・・。

まあ、そもそも「こんな方法もあるよ」っていう提案だから、そんなに「つんけん」しないでねん。
外部DLLを使うか使わないかは、>>80さんの判断だよ。
86デフォルトの名無しさんsage2010/11/20(土) 14:32:03
>>84
NetDataContractSerializerは?
8780sage2010/11/20(土) 14:45:59
>>86
NetDataContractSerializer,DataContractSerializerで
循環参照もジェネリック型もOKそうな感じなので調べてみます。
どうもでした。
8880sage2010/11/20(土) 15:03:02
NetDataContractSerializerは使いやすい代わりに
なかなか猛烈なXMLを吐きますね。
紹介していただいたzip圧縮ライブラリも検討しつつ,
なんとかうまいこといきそうです。
ありがとうございました。
89デフォルトの名無しさんsage2010/11/20(土) 15:03:38
Moo烈
90デフォルトの名無しさんsage2010/11/20(土) 16:41:10
.Net 標準のは圧縮率が悪すぎて使い物にならない。
ファイルによっては2倍以上に膨れあがることもあるからダメダメ。
91デフォルトの名無しさんsage2010/11/20(土) 17:08:49
>>90
ぐぐるとそんな話ばっかり出てくるね。
92デフォルトの名無しさんsage2010/11/20(土) 17:13:25
>>90,91
.NET標準の範囲となるとgzip/deflateによるものになると思うが、
何がそんなに圧縮率が悪いと言うんだ?
tar.gzと同程度になるはずだが。
93デフォルトの名無しさんsage2010/11/20(土) 17:28:05
ファイルパスの羅列みたいな重複が極端に大きいはずのデータでも80%くらいだったりとかしたな
どうせ実装のスライド窓が小さいとかそんなんだと思う
94デフォルトの名無しさんsage2010/11/20(土) 17:32:04
ちなみにGZipStreamの圧縮レベルは1で固定
95デフォルトの名無しさんsage2010/11/20(土) 19:15:33
[TypeConverter(typeof(ExpandableObjectConverter))]の属性定義なしの
オブジェクトをプロパティグリッドで展開したいのですが、
そのための設定またはサードパーティ製のプロパティグリッド
をご存じないでしょうか。
96デフォルトの名無しさんsage2010/11/21(日) 09:34:35
>>95
属性を外から追加するのはTypeDescriptorのAddAttributesとかAddProviderあたりでなんとか
97デフォルトの名無しさん2010/11/21(日) 12:33:57
【質問】C#の話じゃないかもしれないけど
System.Windows.Forms.ListView を仮想モードで使うとShiftキー使った選択で例外が発生するんですけど
これってバグですか?
1個選択状態からShift+右矢印で2個選択にして、もう一回Shift+左矢印で1個選択にしようとすると
ArgumentException(startIndex 値に endIndex 値より大きい値を指定することはできません。)
が発生するんですが。ちなみにVirtualMode=falseだと発生しません。CtlrキーでもOK
テストコードはこんな感じです。
private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e){
e.Item = new ListViewItem(e.ItemIndex.ToString("D5"));
}
98デフォルトの名無しさんsage2010/11/21(日) 12:58:09
毎回newするんじゃなくてDictionaryかなんかにキャッシュしたらどうなるの?
MSDNのサンプルじゃそうやってるようだけど
99972010/11/21(日) 13:43:48
ありがとうございます。
配列から取り出してもやっぱり出ます。

public Form1()
{
InitializeComponent();
this.myCache = new ListViewItem[5];
for (int i = 0; i < 5; i++)
{
this.myCache[i] = new ListViewItem(i.ToString("D5"));
}
this.listView1.VirtualListSize = 5;
}

private ListViewItem[] myCache;

private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
e.Item = myCache[e.ItemIndex];
}
100デフォルトの名無しさんsage2010/11/21(日) 13:44:38
>>99
そもそも本当に>>97の行を実行した時に例外が起こるの?
絶対違うでしょ
101デフォルトの名無しさんsage2010/11/21(日) 13:57:07
選択関連で何かしてない?
VirtualモードのときはSelectedItems使えないよ。
SelectedIndexChangedイベとSelectedIndices使って全部自分でやる。
102デフォルトの名無しさんsage2010/11/21(日) 15:47:50
うん!
10397sage2010/11/22(月) 00:11:12
すいません。急用ができて落ちてました。
他の方の環境では再現されないとなるとうちの環境特有の現象なんでしょうかね。
ちなみにテストコードではセレクト系のイベントハンドラは書いていません。
もうちょっと調べてみますです。。。
104デフォルトの名無しさんsage2010/11/23(火) 00:41:03
StyleCop使っててSuppressMessageしたいんだけど、
引数がくそ長くてうざいからconstにしたら抑制できませんでした。
何か良い方法はないでしょうか・
105デフォルトの名無しさん2010/11/23(火) 03:09:16
C#4.0ってどうなってるの?もうつかえるの?
106デフォルトの名無しさんsage2010/11/23(火) 03:23:34
VS2010や.NET4と一緒にリリースされてだいぶ前から使える
107デフォルトの名無しさんsage2010/11/23(火) 06:43:21
CompactFrameworkではISerializableがないのですが、例えば画像など
XmlSerializerで扱えない(ですよね?)クラスは
どうやってシリアライズするのでしょうか?
108デフォルトの名無しさんsage2010/11/23(火) 08:17:25
自分で適当にバイナリ化するか
CF向けシリアライザライブラリをどっかから拾ってくるか
109デフォルトの名無しさんsage2010/11/23(火) 10:01:11
単純に画像をシリアル化するならImage.Saveでいいじゃん。
画像を含むクラスをシリアル化したいなら
OnSerializingAttributeを指定したメソッド内で、
画像だけ別ファイルに保存、パスを記録しておく。
そんでデシリアライズの時にOnDeserializedAttributeを
指定したメソッド内で、パスから画像を復元。
ファイル分けたくないならImage.Save(Stream)あたりを使ってうまいことやればいい。
110デフォルトの名無しさんsage2010/11/23(火) 10:18:45
>>109
OnSerializing以前にそもそもBinaryFormatterもSoapFormatterも無いらしいぞ
XmlSerializerでシリアライズの調整するならIXmlSerializableかね
111デフォルトの名無しさんsage2010/11/23(火) 18:15:52
細かいことやりだすとわかるがCFは地獄
色々試行錯誤するも最後には非.netで適当に書いてP/Invokeが速いことに気づく
112デフォルトの名無しさんsage2010/11/23(火) 18:35:46
質問です。
大きいファイル(10MB程度)の最初の1024byteと最後の1024byteをそれぞれbyte型配列bufs1とbufs2に格納したいと考えています。
現在以下のようなコードを書いていますが、最後から1024byteを取得する方法が分かりません。
どのようにするのが一番いいんでしょうか?よろしくお願いします。

// ここからコード
FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);

byte[] bufs1;

byte[] bufs2;

bufs1 = br.ReadBytes(1024);
// ここまでコード
113デフォルトの名無しさん2010/11/23(火) 18:42:53
>>112
ファイルサイズを事前に求める必要があるかもしれないけど
br.Read
で位置とサイズ指定をして読み込めるね
114デフォルトの名無しさんsage2010/11/23(火) 18:42:54
読み込んだバッファと、その一つ前のやつを持っておいて、
1024バイト分切り取ればいい。

って、どうみても初心者ネタだろ。
115デフォルトの名無しさんsage2010/11/23(火) 18:45:38
>>112
ストリームの最後から1024バイト手前にSeekするだけ。
116デフォルトの名無しさんsage2010/11/23(火) 18:45:42
>>113
こんなに早く回答が得られるとは思っていませんでした。
ありがとうございました。
117デフォルトの名無しさんsage2010/11/23(火) 18:49:59
これでいけるか?
// ここからコード
string fullPath = "";
FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);

byte[] bufs1;

byte[] bufs2;

bufs1 = br.ReadBytes(1024);

fs.Seek(1024, SeekOrigin.End);
bufs2 = br.ReadBytes(1024);
// ここまでコード
118デフォルトの名無しさんsage2010/11/23(火) 18:51:47
ああ
>string fullPath = "";
これは忘れてくれ
こっちで見る際に入れたダミーだ
119デフォルトの名無しさんsage2010/11/23(火) 19:09:42
いつも思うのだがBinaryReaderって存在意義を見いだせない
直接Stream.Read呼び出せば十分
120デフォルトの名無しさんsage2010/11/23(火) 19:10:13
>>117
fs.Seek(-1024, SeekOrigin.End);
でいけました!

皆さんありがとうございました。次からは初心者スレに行きたいと思います。すいませんでした。
121デフォルトの名無しさんsage2010/11/23(火) 19:12:08
おう、気にすんな
122デフォルトの名無しさん2010/11/23(火) 22:04:01
>>105に答えてもいいんだよ。
123デフォルトの名無しさんsage2010/11/23(火) 22:08:53
答えてるじゃん
124デフォルトの名無しさんsage2010/11/23(火) 22:12:59
馬鹿には見えないんです
125デフォルトの名無しさん2010/11/24(水) 00:22:01
ありがとうございました。
126デフォルトの名無しさんsage2010/11/24(水) 10:55:17
>>119
バイナリファイルからCの構造体を読むときには使うでしょ
ポインタ使って構造体にキャストしてもいいけど、それが嫌なら
BinaryReaderでフィールドを一つずつ読むしかない
自分でbyte配列に読み込んでBitConverterで変換してもいいけど
BinaryReaderの再発明になるだけ
127デフォルトの名無しさん2010/11/24(水) 12:06:16
C# でDirectShow使うなら今って何が主流でしょ?
一昔前まではDirectShow.NETだったと記憶していますが…

やりたいことはUSBカメラの画像をBitMapオブジェクトに落とす事
128デフォルトの名無しさんsage2010/11/24(水) 12:08:50
>>127
そういう用途ならむしろOpenCLの方が向いてるかもだけどな。
DirectShow.NET以外の選択肢があるのか?

オレはPDSのDShowNETを使ってるが、コードが古いので色々改修している。
作者に連絡をとってみたが、もう興味はない(からPDSにしている)と蹴られたw
129デフォルトの名無しさんsage2010/11/24(水) 12:33:48
OpenCVだろ
130デフォルトの名無しさんsage2010/11/24(水) 13:01:43
カメラの取り込み程度ならOpenCVでいいな
131デフォルトの名無しさんsage2010/11/24(水) 13:07:29
OpenCV調べてみたら結構機能が豊富
ちょっと掘り下げてみることに・・・

サンクスです。
132デフォルトの名無しさんsage2010/11/24(水) 13:17:24
Silverlight4のOOBでよくね
USBカメラの利用は超簡単だよ
133デフォルトの名無しさんsage2010/11/24(水) 15:18:59
OpenCVだった。恥ずかしい……。
みんなありがと。
134デフォルトの名無しさんsage2010/11/29(月) 16:12:18
どちらかというと.netの話になると思いますが・・・。
C#から使える組み込みDBで、どのような選択肢があるでしょう?
とりあえず調べた限りでは
・ACE(Access Database Engine)
・SQL Server Compact 3.5
などというモノがありますが、他に選択肢があれば予め確認しておきたいのです。条件としては、
(1)ターゲットはWindowsのみ
(2)MByteのblobが扱えること
(3)GByteのデータ量で破綻しないこと
 →画像データを扱うためです。レコード数はコミコミで精々五桁ですが、総量は大きいです。
(4)インストールが容易であること。
 →「完全組み込み、データファイルを配布するだけでOK」が理想ですね。以下、
   「XCOPYでOK」→優
   「DLLのインストールが必要」→良
   「別途インストールが必要」→パラメータを付加してのサイレントインストールならぎりぎり可
というところです。(3)があるので、SQL Server Expressは考えていません。

JavaならHSQLDBやH2 Database Engine、SQLiteという選択肢がありますが、C#には上記二つ以外に何かあるでしょうか?
135デフォルトの名無しさんsage2010/11/29(月) 16:54:41
>>134
SQLiteはまんま使えるよ。暗号化機能のおまけ付き。
4GB越えもライブラリとしてはサポートされるが、
ファイルシステム側の制限に引っかかる場合はある。
136デフォルトの名無しさんsage2010/11/29(月) 18:17:19
SQLite用のADO.NET providerが↓にあるのでC#から容易にアクセスできるよ.
http://sqlite.phxsoftware.com/
137134sage2010/11/29(月) 20:29:10
>>135
>>136
ご紹介ありがとうございます。検索してみたところ、結構皆さん使っているようですね>SQLite On C#
ADO.NET 3.5 Entity Frameworkにも対応しているようですね。4.0以前では今ひとつ評判が悪いようですが・・・。
まぁ、今回はそれほど大きなアプリケーションではないので(JavaではDbUtils使う程度のモノですw)どれを使うにしろ、自前で簡単なO/Rマッパを実装するつもりです。

では、SQL Server CompactかSQLiteのどちらか、という感じでしょうかね?
138デフォルトの名無しさんsage2010/11/29(月) 22:22:52
SQLiteはVSで扱ってると「オブジェクト参照がオブジェクト インスタンスに設定されていません」って出てくるのが何時までたっても解決できない
なぜかそれでも操作はできるしウザイだけで支障はないけど
139デフォルトの名無しさんsage2010/11/29(月) 22:55:00
こわw
140デフォルトの名無しさんsage2010/11/29(月) 23:58:55
>>137
SQLiteはFirefox(多分ver3以上)の履歴データとか、SONYのwalkmanを管理する
アプリ(x-Appli)が使ってるようです。商用でも稼働実績はありますが・・・
一昔前の不安定だったFirefoxでは、ブラウザがハングしたときのタイミング次第
で*.sqliteファイルが壊れてしまい、DBが入っているファイルを消さないとFirefoxが
起動しなくなる事が時々ありました。
SONYのやつは音楽データはファイルとして管理し、アルバムの構成情報とか
だけDBに保持しているようです。
消えたら大騒ぎになるデータをsqliteだけに保存するのはDANGERだと思います。
141デフォルトの名無しさんsage2010/11/30(火) 01:14:41
GoogleChromeなんかも使ってるぞ
142デフォルトの名無しさんsage2010/11/30(火) 01:48:42
俺も使ってるよ
143デフォルトの名無しさんsage2010/11/30(火) 03:00:30
>>140
Firefoxがタコなだけだろ。
SQLiteは十分枯れてるよ。
Linuxだとディストリ本体のメタデータの管理で使ってるくらいなんだから。

ちなみにSkypeのメタデータはほとんどSQLiteで管理されてて、
テキストで書き出す方法が基本的にはない。
144デフォルトの名無しさんsage2010/11/30(火) 23:05:08
まあ、FirefoxというよりFlashのハングが原因だったようだけどね。
Firefox3.5〜3.6くらいからプラグインを別プロセスで走らせるように
してFlashが死んでもFirefoxは倒れなくなった。
145デフォルトの名無しさんsage2010/11/30(火) 23:27:44
アプリが不正終了すると壊れるなんて、SQLiteってトランザクションできないんですか。
恐ろしいですね。
146デフォルトの名無しさんsage2010/11/30(火) 23:39:55
そうかもね
147デフォルトの名無しさんsage2010/11/30(火) 23:42:18
DBソフトはともかく、画像はファイルシステムに保存してDBはインデックス情報だけ
ってわけにはいかないの?
DBが壊れてもある程度復旧できるし、画像ファイルが見えた方がやりやすくない?
148デフォルトの名無しさんsage2010/11/30(火) 23:53:33
>>144
プラグインコンテナー自体がバグの温床になってる件
149デフォルトの名無しさんsage2010/12/01(水) 00:01:13
>>147
賛成だな。画像さえDBに保存しなければ、DBファイルはそれほど大きくならないだろう。
そうするとアプリ起動時にDBのコピーを作って、稼働中はコピーDBを編集。
アプリ正常終了時に編集されたDBファイルをリネームする形で書き戻す。
ファイルのリネームは一瞬だからアプリが変なタイミングで死んでも(KILLされても)
DBが完全に壊れることはない。
150デフォルトの名無しさんsage2010/12/01(水) 07:31:16
画像自体がシステムにとって重要なデータなら
画像にもASIDなトランザクションきかせたいやん。
151デフォルトの名無しさんsage2010/12/01(水) 07:34:11
ASIDじゃなくてACIDです。
152デフォルトの名無しさんsage2010/12/01(水) 09:21:50
SQLiteトランザクションあるよ?
てかトランザクション使わないと処理めっちゃ遅くなるし
単純にFirefoxが使い方間違えてるだけじゃないかな
153デフォルトの名無しさんsage2010/12/01(水) 09:27:43
トランザム(`・ω・´)
154134sage2010/12/01(水) 11:15:23
皆様、アドバイスありがとうございます。
一応、画像のデータは入れなおそうと思えば入れなおせる予定ですので、コケても一応は大丈夫です。
ただし前にも書いたとおり全部でGByte単位になりますので「手間と時間が半端ない」という問題はありますが・・・。
これは仕様面の要求で「生画像は隠蔽したい」というコトもありますので、どちらを使うにしろDBにblobで格納するようにしたいと思っています。
他の「コケたらまずいデータ」は随時半強制的にバックアップを取らせる必要があるでしょうが、まぁコレはどっちを選んでも同じことですからね。

>SQLiteでトランザクション
今(2010/12/1現在)のgoogleでトップに出てくるのがコレですね
http://kumalog.com/2008/05/04210652.php
C#環境+もう少し実際的なデータで改めて検証する必要はあるでしょうが、それでも35倍は確かに凄いですね。
まとめてデータを更新するような時には気をつけないと・・・。
155デフォルトの名無しさんsage2010/12/01(水) 11:40:35
>>154
まとめてっつーより、トランザクション指定せずに
書き込んだら明らかに遅いからすぐに分かる。

ちゃんとトランザクション処理は書いてあげたほうがいいよ。
別に難しいわけでもないし。
156デフォルトの名無しさんsage2010/12/01(水) 13:49:02
>>154
画像を隠蔽するのが目的ならファイルで管理とかBLOBで管理とかは関係ないじゃん。
157デフォルトの名無しさんsage2010/12/01(水) 13:56:39
他の暗号化する方法は考えたのかな?
とりあえずローカルで動くものは完全には暗号化できないんで
扱い易さとのバランスを考えた方がいいと思うよ
158134sage2010/12/01(水) 20:31:10
>>156
>>157
ああ、それはもちろん、画像の管理が主で隠蔽が従です。
「少なくとも四桁になる画像を(まぁ、ディレクトリは分けるにしろ)生の形で展開したくない」
「ユーザーの目に直接触れないようにしたい」
というのが、blobにバイナリで格納する目的です。
何を使うにしろ本気でクラックすればすぐに解析されてしまうでしょうし、それは承知しています。
159デフォルトの名無しさんsage2010/12/01(水) 21:38:04
とにかくblobを使ってみたいってことだよね
160デフォルトの名無しさんsage2010/12/02(木) 01:29:43
リモートデバッグについて質問です。
Windows VPS Server(Windows Server2003)にVS2008Proをインストールして
テストプログラムを作ったのですが、デバッグしようとすると・・・
「リモートデバッグモニタ(MSVSMON.EXE)の開始に失敗しました。
リモートデバッガが正常にインストールされてることを確認してください。」
とエラーメッセージが出ます。

このリモートデバッガは正常にインストールされており、アクセス許可を与えても
メッセージが出ます。
サーバーのファイヤーウォールが原因なのでしょうが、具体的な解決方法が解りません。
161デフォルトの名無しさんsage2010/12/02(木) 05:56:36
>>160
リモートデバッグはお作法が色々とあるから
レスのやりとりだけで解決させようとすると面倒だ。
MSDNのフォーラムの過去ログを漁ってみれ。
162デフォルトの名無しさんsage2010/12/02(木) 16:55:25
質問です。
System.Threading.Thread.Sleep(1000);
これで1秒メインスレッドを停止させる。という事ですが
プログラムのメインスレッドを止めずに3秒待機させたいのです。

私が考えたのが、
「別のスレッドTで3秒カウントさせてカウントが終了した時点で
bool変数hogeをfalseからtrueにしてメインスレッドでそれを感知する。」
という風に考えました。

しかし別のスレッドTではメインスレッドの変数を扱えないようなのですが
どうすればいいのでしょうか?

よろしくお願いします。
163デフォルトの名無しさんsage2010/12/02(木) 16:59:33
>>162
どういうシチュエーションか分からないが、
複雑でないことならTimerを使えばいいんじゃね?
164デフォルトの名無しさんsage2010/12/02(木) 17:09:31
>>163
すみません、言葉が抜けていました。
シチュエーションが決まっている訳ではなくて、
知識として知りたいのですが、Timerを使用しない場合はどうなりますか?
165デフォルトの名無しさんsage2010/12/02(木) 17:15:26
>>164
メインスレッド側がなにしてるのかわからないと決められないが(CUI/GUI)、
中断される作業をyieldを使って実装しておいて、
再開していいか小刻みに問い合わせるという方法があるな。

マルチスレッドならワーカースレッドをまるごと止めればいいし。
166デフォルトの名無しさんsage2010/12/02(木) 17:26:10
>別のスレッドTではメインスレッドの変数を扱えない
そんなことなくね?
もし同期の話をしてるならlock使えばいいだけだし
167デフォルトの名無しさんsage2010/12/02(木) 17:39:30
var sw = System.Diagnostics.Stopwatch.StartNew();
while (sw.ElapsedMilliseconds < 3000) {
  // メインスレッドの処理とやら
  Console.WriteLine("wait");
  System.Threading.Thread.Sleep(500);
}
これでいいだろ
168デフォルトの名無しさんsage2010/12/02(木) 18:10:05
指定時間後にシグナルが立つようなのって無かったっけ?
169デフォルトの名無しさんsage2010/12/02(木) 18:14:15
>>167
>プログラムのメインスレッドを止めずに3秒待機させたいのです。
170デフォルトの名無しさんsage2010/12/02(木) 18:29:53
>>167がダメだというなら
プログラムのメインスレッドを止めずにってどういう事なのか
もう少し詳しく書いてくれ。
自分としては時間のかかる一連の処理って考えてたんだけど違うの?
171デフォルトの名無しさんsage2010/12/02(木) 18:38:01
>これで1秒メインスレッドを停止させる。という事ですが
違います。

>しかし別のスレッドTではメインスレッドの変数を扱えない
変数はスレッドに属するものではありません。

>>170
>>167でいいでしょ。スレッド使いたいなら↓
var flag = false;
var flagLock = new object();

Task.Factory.StartNew(() => {
 Thread.Sleep(3000);
 lock( flagLock ) flag = true;
});

while( true ){ lock( flagLock ) if( flag ) break;}
172デフォルトの名無しさんsage2010/12/02(木) 18:49:43
そういやメインスレッドじゃなくて現在のスレッドだな
173デフォルトの名無しさんsage2010/12/02(木) 18:53:36
>>169
馬鹿は黙ってろ
174デフォルトの名無しさんsage2010/12/02(木) 18:54:41
煽ると初心者スレみたいなことになりそうだからやめてくれw
175デフォルトの名無しさんsage2010/12/02(木) 21:37:29
一方が読み込み専用、もう一方が書き込み専用ならロックしなくても大丈夫そうな気がするけど
なんか問題あるの?
176デフォルトの名無しさんsage2010/12/02(木) 21:44:55
確かにロックしなくていいけどそれより>>171ならWaitHandle使うべき
177デフォルトの名無しさんsage2010/12/02(木) 21:45:55
boolだったら特に問題はないわね<書き込みするのが1スレッドだけなら。
178デフォルトの名無しさんsage2010/12/02(木) 21:48:29
たしかにこういう場合はサブスレッドに仕事させてメインスレッドはWaitHandleで待つべきだけど
メインスレッドは止めたくないっていってるしなぁ
179デフォルトの名無しさんsage2010/12/02(木) 21:50:21
じゃあTimer使うかフラグ使わずにInvoke使うかどっちか
180デフォルトの名無しさんsage2010/12/02(木) 21:51:00
>>176,177
そうなのか、ありがとう
しつこくなってしまって申し訳ないんだが、
boolだったらってことは別のだったら問題あるの?
構造体だとちょっと問題ありそうなのは想像つくけど
181デフォルトの名無しさんsage2010/12/02(木) 22:03:22
環境によるけど32ビットを超える大きさの値(doubleや構造体)は
書き換え操作や読み取り操作が分割される可能性があるので、あるスレッドが値を書き換えている途中に
別のスレッドが同じ変数を読み出すと間違った値が読み出される。
>>171はたまたまロックが必要ないけど、ロックしなくていいかどうかはとってもデリケートな問題なので、
複数のスレッドから使われる変数にアクセスするときは基本的には常にロックが必要と考えてもいい。
boolでも flag = !flag とかはロックが必要。
182デフォルトの名無しさんsage2010/12/02(木) 22:03:28
>>168
スレッドプールにタイムアウト後デリゲート実行するのならある
183デフォルトの名無しさんsage2010/12/02(木) 22:06:21
>>181
なるほど、詳しい解説ありがとう
184デフォルトの名無しさんsage2010/12/03(金) 05:43:03
>>181
>あるスレッドが値を書き換えている途中に
>別のスレッドが同じ変数を読み出すと間違った値が読み出される。
C#ではこれは無いんじゃないの?
185デフォルトの名無しさんsage2010/12/03(金) 07:52:40
boolにlock不要って言うけど、lockかThread.MemoryBarrierしないであるスレッドの
データを他スレッドが読めることって保証されてないんじゃ。x86なら読めるだろうけど。

>>184
Interlocked.Add(Int64, Int64)のMSDNの説明とか参考になる。
186デフォルトの名無しさんsage2010/12/03(金) 10:40:09
CLIではプラットフォームの自然なサイズに依存するとあるんだが
C#の言語仕様では32ビット以下のプリミティブ型の読み書きは分割できないと決まってるんだよね
実装はどうあれC#を使う以上はlockいらない
187デフォルトの名無しさんsage2010/12/03(金) 11:53:05
他のアプリケーションがアクティブになったり
ウィンドウが移動されたことを検知したいのですが
どんなAPIを使えばできるでしょうか。

ウィンドウを移動するとウィンドウの座標を表示してくれる
アプリとかありますが,あれをどうやってるのかな,という感じです。
188デフォルトの名無しさんsage2010/12/03(金) 11:58:59
他のアプリの動きの検出はさすがに P/Invoke で OS 機能をフックじゃなかったっけ。

Windows Code Pack(Windows 依存の強い機能を .NET から使うライブラリ)からできないかな。
189デフォルトの名無しさんsage2010/12/03(金) 12:02:13
グローバルフックが必要になってC#だけじゃ無理、になる予感
190デフォルトの名無しさんsage2010/12/03(金) 12:08:05
グローバルフックするだけなら DllImport するだけだし、
自分で書くのは C# だけでいけるよ。
191デフォルトの名無しさんsage2010/12/03(金) 12:10:04
>>190
ローレベルフックを除いてグローバルフックはネイティブDLLじゃないと駄目だろ?
192デフォルトの名無しさんsage2010/12/03(金) 12:15:59
ローレベル入力だけなのか。
193デフォルトの名無しさん2010/12/03(金) 12:21:22
>>187
ウインドウの移動程度ならプロセスを一定サイクルで調べて
ハンドルかプロセスIDから位置を調べればいいんじゃね?
194187sage2010/12/03(金) 12:40:24
どうもです。

なんかグローバルフックを調べてみたら
1. 基本的にはフックされた側のプロセス内でコールバック関数は実行される
2. LowLevelのマウスフック・キーボードフックだけは
フックをインストールしたプロセス内でコールバック関数が実行される
3. ひとつのプロセスで複数のバージョンの.NET Frameworkのランタイムを実行できない
ので,LowLevelのマウスフック・キーボードフック以外はやめとけという感じでした。
これだとウィンドウの移動を検知するのは無理ですね。

.NET Framework 4のインプロセスside-by-side実行とかいうのが
この話に影響するかどうかよくわかりません。。。
195デフォルトの名無しさんsage2010/12/03(金) 14:04:55
>>194
ま、DLLフックとside-by-sideテクノロジーは相反しちゃうよなぁ。
でもWindowを列挙したり、現在アクティブなWindowを検出するのは
WinAPIだけでできるっしょ。
196デフォルトの名無しさんsage2010/12/03(金) 15:11:25
C#でnPro下のソフトにキー割り込みをかけたいのですが可能でしょうか?

・SendKeys
・SendInput
・ウィンドウハンドルを指定してのPostMessage

はやりましたが無理でした。
メモ帳などにはキー入力を送れているので、処理が間違ってるという事はないと思います。
同じプログラムで対象をメモ帳からnPro下のソフトに変えただけですから。

エラーが出るとかではなく、反応しません。
traceしたいところですが、その対象ソフトのnProがIDEの起動を妨げていて
ソフトを起動しながらだとnProが邪魔をしてIDEを立ち上げられず、traceできません。
197デフォルトの名無しさんsage2010/12/03(金) 15:44:28
>>196
nPro、すなわちnProtectがウイルスやクラッキングを防御するソフトなんだから、
お前がやってることはハッキングじゃねーか。
198デフォルトの名無しさんsage2010/12/03(金) 16:06:18
あほすぎる
199デフォルトの名無しさん2010/12/03(金) 16:28:43
>>196
つまりnProを使ってるなんらかのオンラインゲームの自動操縦をやりたいってこと?

ゲームが対応してるかどうかわからんけど今思いついたのはゲームを仮想環境上で
動かしてホスト側で自分のツール動かしたらどうだろ?

仮想マシンにキーコードを送るのならnProは関係ないはずだし
200デフォルトの名無しさんsage2010/12/03(金) 20:36:12
ライセンス違反の方法を教えてくださいって馬鹿だろ。
201デフォルトの名無しさんsage2010/12/03(金) 21:09:14
普通のフックじゃなくて、SetWinEventHook() でいけるかも。>>194
202デフォルトの名無しさんsage2010/12/03(金) 22:40:49
ハッキングとかあほとかライセンス違反とかw

目的も知らずにそこまで言うとは理解しがたい。
身の回りの技術に疑問を持つって言うのはプログラマにとって必要な気質だろ?
質問の仕方と場所を間違えている気はするが。

つかハッキングって言葉には気をつけような。
少なくとも俺はこいつ馬鹿だなって思った。
203デフォルトの名無しさんsage2010/12/03(金) 22:49:14
>>202
>目的も知らずに
nPro使ってるようなので、>>196が禁じられてないようなのってあるのか?
普通ライセンス違反になるはずだが

お前みたいな馬鹿が寄ってきて荒れるから、この手の話題は嫌われるんだ。
204デフォルトの名無しさんsage2010/12/03(金) 23:33:06
技術は好きだが、それを使って何をするかには興味がねーのよ
ゲームにキーを投げたいと
はぁ
それで?
205デフォルトの名無しさんsage2010/12/03(金) 23:39:29
技術が好きだというくせに、自分で考えようとはしないのか。変な奴だ。
技術に罪はないが、よからぬ事に応用できるような話は誰も教えてくれないと知れ。
206デフォルトの名無しさんsage2010/12/04(土) 00:28:24
しらない人のためにいっておくと
>身の回りの技術に疑問を持つ
これこそまさにハッキングの本質な
207デフォルトの名無しさんsage2010/12/04(土) 00:38:03
本質を語れる男が2ch
さいこーだね
笑っちゃうね
真性のアホ?
208デフォルトの名無しさんsage2010/12/04(土) 00:40:47
>>207
なにいってんの?
あのなの?
209デフォルトの名無しさんsage2010/12/04(土) 00:45:57
なのなの!!
210デフォルトの名無しさんsage2010/12/04(土) 00:47:50
すまん、ちょっと酔っ払っててまともにキーb-ど操作ができないいんだ
211デフォルトの名無しさんsage2010/12/04(土) 00:52:41
頭がまともに起動したらいらしてください
212デフォルトの名無しさんsage2010/12/04(土) 00:54:24
またこいとおっしゃるか、やさしいのね
213デフォルトの名無しさんsage2010/12/04(土) 00:57:56
中学生がお酒飲んじゃだめでしょ
214デフォルトの名無しさんsage2010/12/04(土) 01:02:16
中学生じゃない!
でも中学生並みに頭悪いっていいたいんだろ?
そのとおりだから許す
215デフォルトの名無しさんsage2010/12/04(土) 05:36:45
中学生ですが、皮を剥いたら痛いんですが、どうすればいいですか?
216デフォルトの名無しさんsage2010/12/04(土) 06:26:27
割礼
217デフォルトの名無しさんsage2010/12/04(土) 08:03:30
>>185
Addは読み出し>加算>書き込みの複数命令だからあらゆるケースでロックが必要だわな

で、64ビットの読み書きはプラットフォーム次第で>>184が発生するって事か
218デフォルトの名無しさんsage2010/12/04(土) 10:28:02
bool、char、byte、sbyte、short、ushort、uint、int、float、および参照型の読み取りと書き込みは分割不可能です
219デフォルトの名無しさんsage2010/12/04(土) 16:25:49
>>217
x86のADDはメモリオペランドを取れるし、32bit以下でキャッシュラインをまたいでいなければ
アトミック性も保証される。
220デフォルトの名無しさんsage2010/12/04(土) 16:41:13
つまりスレッド間連携が1方向1変数ならロック不要ですよって事?
でも読み取る変数が後からプロパティに変更されたら安全とは言えなくなる?考えすぎか。
221デフォルトの名無しさんsage2010/12/04(土) 16:48:31
>>219
32bit以下の値を読むだけなら、ADD(というか、read-modify-writeな処理全て)
がアトミックであろうがなかろうがそもそも無問題な気がするんですが....
222デフォルトの名無しさんsage2010/12/04(土) 20:14:59
読んだ値をif文とかで使うと危ない
223デフォルトの名無しさんsage2010/12/04(土) 20:17:15
volatile を入れたくなる症候群
224デフォルトの名無しさんsage2010/12/05(日) 23:33:26
Windows7(68bit) + VisualStudio2005sp1 の組み合わせなのですが、

新規作成→VisualC++ → CLR → クラスライブラリ で作成したクラスhogeを
新規作成→VisualC# → Windows アプリケーション で作成したフォームから
参照設定をして呼びだすと

「アプリケーションのコンポーネントで、ハンドルされていない例外が…、
ファイルまたはアセンブリ 'test, Version=1.0.3991.42024. Culture=nautral,
PublicKeyToken=null', またはその依存関係の1つが読み込めませんでした。
間違ったフォーマットのプログラムを読み込もうとしました。」

といってエラーが出てしまうのですが、原因が分かる方がいましたら
ご教授頂けませんでしょうか?
225デフォルトの名無しさんsage2010/12/05(日) 23:35:57
68bitだと・・・!
226デフォルトの名無しさんsage2010/12/05(日) 23:37:02
すんません、64ですw
227デフォルトの名無しさんsage2010/12/05(日) 23:38:36
少なくともC#側の問題ではない
それだけの情報でわかるのはそれくらい
228デフォルトの名無しさんsage2010/12/05(日) 23:38:59
9bit処理系もRFCに載るくらい有名だろ
驚くことじゃない
229デフォルトの名無しさんsage2010/12/05(日) 23:42:34
まあ多分x86で作ったDLLをAny CPUでロードしようとしてるんだろ
230デフォルトの名無しさんsage2010/12/05(日) 23:48:43
>>224
hogeの入ってるdllをexeと同じディレクトリにコピーしてない、なんてオチだったりしてw
2005以降はビルド時自動でコピーするように出来たはずだと思ったけど。
231デフォルトの名無しさんsage2010/12/05(日) 23:49:49
>>229
ご指摘のように、
C#側のプロパティ > ビルド > プラットフォームターゲット = x86
にしたらエラーにならなくなりました!
即レス有難うございました!!
232デフォルトの名無しさんsage2010/12/05(日) 23:53:39
ネイティブコード使いたいだけなら普通のC++でdll作ったほうがいいよ
C#の方をAnyCPUにできるしMSも見放してるC++/CLIなんていう将来不安な言語を使わなくて済む
233デフォルトの名無しさんsage2010/12/06(月) 02:00:37
そうなんですか…。
色々調べてみます。有難うございます!
234デフォルトの名無しさんsage2010/12/06(月) 02:22:52
どういたしまして
235デフォルトの名無しさんsage2010/12/06(月) 12:26:12
>>232
あまり濫用すべきでないのは事実だけど、
CLRホストを作るときにはどうしても必要なものだから今後もなくなることは無いよ。
将来不安、というのは嘘というかデマに近い。
236デフォルトの名無しさんsage2010/12/06(月) 14:21:10
別にCLRホストを作るときにC++/CLIは必要ないよ。ただのCOMインターフェイスなんだから。
C++/CLIでホストしたからってホストされてるCLR上のオブジェクトを透過的に扱えるわけでもない。
VSだって普通のネイティブのC++でCLRをホストしてる。
C++/CLIはVS2010でインテリセンス切られたしCLR3とCLR4とでアセンブリの互換性無し。
237デフォルトの名無しさんsage2010/12/06(月) 16:33:11
abcdefghijklmnopqrstuvwxyz
05 ...0x 0y 0z
10 11 12...1x1y1z
a0 a1 a2...ax ay az
z0 z1 z2 z3.. zx zy zz

000 001 002...00x 00y 00z
010 011 012...01x 01y 01z
...
長くなりそうなのでこのくらいで止めておきます。
このように文字を順番に表示するプログラムを作りたいのですがどうすれば良いでしょうか?
宜しくお願いします。
238デフォルトの名無しさんsage2010/12/06(月) 16:39:15
なにを聞きたいのかがわからん
画面に表示する方法?文字列を生成する方法?
239デフォルトの名無しさんsage2010/12/06(月) 16:39:35
>>237
テキストで書き出すの?
string.Formatの初期指定機構を使えばいい。
標準出力に書きだすなりストリームに書き出すなりはお好みで。
240237sage2010/12/06(月) 16:47:13
文字列を生産して 順番にテキストに保存したいと思います。
ttp://d.hatena.ne.jp/mclh46/20100626/

このサイトの様にしていただければと思います。
241デフォルトの名無しさんsage2010/12/06(月) 17:15:34
そのサイトでは文字が重複しないようにしてあるんだけど
242デフォルトの名無しさんsage2010/12/06(月) 17:30:55
ヒントないとさすがにわからん
順番っていってもいろいろな順番があるわけで
表示にもいろいろあるし
243デフォルトの名無しさんsage2010/12/06(月) 17:44:22
使用文字が abcdefghijklmnopqrstuvwxyz で重複おkで?

2文字拾う全てのパターン * 2文字並び替える全てのパターン
3文字拾う全てのパターン * 3文字並び替える全てのパターン


重複おkだと最大文字長決めないと無限だわね。
244237sage2010/12/06(月) 17:46:15
>>243
そういう事です><
うまく書き表せなかったので、助かりました。
245デフォルトの名無しさんsage2010/12/06(月) 17:49:25
ループで頑張るなり基数変換なりすれば?
246デフォルトの名無しさんsage2010/12/06(月) 20:12:25
もういらんかもしれんが
再帰使いたくないんなら、(最大桁数)進数を表す配列作って、インクリメントしながら各桁の値を文字配列のインデックスに当てはめていけばおk
247デフォルトの名無しさんsage2010/12/06(月) 20:17:14
ランダムに生成しまくって重複していなければ追加
一時間くらい続ければたぶんあってる
248デフォルトの名無しさんsage2010/12/06(月) 20:23:50
・重複を確認するコスト
・ランダム生成で既存の結果と重複してない確率
・最後ソートするコスト

無駄すぎ
249デフォルトの名無しさんsage2010/12/06(月) 21:01:55
>>247
最悪
プログラムやめろ
250デフォルトの名無しさんsage2010/12/06(月) 21:09:22
ボゴソートdisってんの?
251デフォルトの名無しさんsage2010/12/06(月) 22:18:43
暇になっちまった
なんか面白い題材ないかな
252デフォルトの名無しさんsage2010/12/06(月) 23:10:47
ボゴソートの最適化
253デフォルトの名無しさんsage2010/12/06(月) 23:33:18
暇ならクォータニオンクラス作って
254デフォルトの名無しさんsage2010/12/06(月) 23:40:42
何その車の再発明。
255デフォルトの名無しさんsage2010/12/06(月) 23:46:18
暇じゃないならいいよ
256デフォルトの名無しさんsage2010/12/07(火) 00:52:24
まあベクトルとか行列はあちこちで作られてるけどなw
257デフォルトの名無しさんsage2010/12/07(火) 01:29:25
クラス使わずに生で扱えよ
258デフォルトの名無しさんsage2010/12/07(火) 01:56:01
生はいいよね
259デフォルトの名無しさんsage2010/12/07(火) 02:00:59
生でやり始めるとラップしたときよりも後々面倒だよな
260デフォルトの名無しさんsage2010/12/07(火) 02:03:48
デフォで値渡しなのと初期化がな
261デフォルトの名無しさんsage2010/12/07(火) 02:27:14
ラッピングしないで生でやると後々責任とらされるリスクが高い
262デフォルトの名無しさんsage2010/12/07(火) 02:36:59
俺の上司には一人で頑張るから気にしないでと言われてるけど
263デフォルトの名無しさんsage2010/12/07(火) 13:56:10
オレも昔はラッピングなんてしてなかったな
何度眠れぬ夜を過ごした事か…
264デフォルトの名無しさんsage2010/12/07(火) 15:52:54
マルチスレッド未対応のクラスをマルチスレッドに
対応させる汎用的なラッパーがあれば便利だなと
思ったんですが思いつきませんでした。
元のクラスを変えずにラップする簡単な方法は
ありますか?

・利用側でスレッドを意識させたくない。
・出来れば利用側でDisposeを意識させたくない
265デフォルトの名無しさんsage2010/12/07(火) 15:59:29
なんの処理をやるかわからんのに
なんでもマルチスレッドにできるわけがない
266デフォルトの名無しさんsage2010/12/07(火) 16:07:53
う〜ん、とりあえず単純にロックとロック解除
を自動で行うだけでよかったのですが。

なんの処理をするかは利用側が知っているので
利用側が必要に応じてラップクラスを使うと。
267デフォルトの名無しさんsage2010/12/07(火) 17:08:00
元々再入可能じゃないなら無理だよ
静的変数に状態持たせてたりしたらどうやったって無理
268デフォルトの名無しさんsage2010/12/07(火) 17:17:26
インスタンスごとにそれぞれ別のAppDomainを持たせてその中で対象のクラスをロードすればいいよw
それでもファイルや外部のAPIなどに依存してた場合に不都合があるかもしれないから万全ではないな
もっと一般的に安全に動作させるためには,全スレッドで共通のstatic変数のオブジェクトをロックして
同時に動作させないようにするしかないな
269デフォルトの名無しさんsage2010/12/07(火) 19:44:50
そんなことより別スレッドからだとControl.Invokeいちいちしなきゃならんのなんとかならんのか
ジェネリックコレクションのSyncRootの取り方もマンドクセし
次のバージョンじゃちったーマトモになるのか?
270デフォルトの名無しさんsage2010/12/07(火) 20:58:11
>>267
全メソッドを排他制御するだけでかなりいけると思うが。
アホな俺に「静的変数で状態保持」して破綻する例を教えてくれ。
271デフォルトの名無しさんsage2010/12/07(火) 21:15:49
>>270
static int temp;
void hoge() { temp = 1; assert(hage() == 2); }
int hage() { return temp * 2; }
VBなんかだと普通にあるよこんなの
272デフォルトの名無しさんsage2010/12/07(火) 21:16:53
static int temp;
void hoge() { temp = 1; hage(); assert(temp == 2); }
int hage() { temp *= 2; }
訂正
273デフォルトの名無しさん2010/12/07(火) 21:39:51
>>264のやりたいのは↓程度のことじゃないの?
汎用化はできないけど、動作は問題ないと思うけど。
class X2 : X {
 public new void hoge() { lock(typeof(X2)) base.hoge(); }
 public new void hage() { lock(typeof(X2)) base.hage(); }
}
274デフォルトの名無しさんsage2010/12/07(火) 21:48:45
問題があるかないかなんてX.hoge/hageの実装次第だし
275デフォルトの名無しさんsage2010/12/07(火) 21:52:56
>あるかないか
あるかないかじゃなくて、その「ある」例を挙げてくれてと言っているんだろ
276デフォルトの名無しさんsage2010/12/07(火) 22:03:27
>>273
これだとクラス間の相互参照でデッドロックするから、
グローバルなobjectでlockする必要があるね。
277デフォルトの名無しさんsage2010/12/07(火) 22:11:36
>>264
http://ideone.com/lkvpT
インスタンス単位のロックで作ってみた
dynamic専用ね
ほとんど試してないけど
278デフォルトの名無しさんsage2010/12/08(水) 17:51:44
( ・ω・)y─┛〜〜
279デフォルトの名無しさんsage2010/12/09(木) 23:03:52
VS2010で勉強しているのですが、入門編〜の参考書でよい書籍はございませんでしょうか?
280デフォルトの名無しさんsage2010/12/10(金) 02:20:08
ufcpp
2812642010/12/10(金) 16:05:11
返答ありがとうございました。
やっぱりスレッドは難しいんですね・・。
>>277
ぜひ参考にさせてもらいます。

またスレッドの件でなんですがサブスレッド終了時に
メインスレッドと同期をとりながら終了処理するにはどんな
方法が一般的なんのでしょうか。
可能であればメインスレッド(Form)のイベントとして処理させ
たいです。

例えば
・サブスレッド終了時にメインスレッド側でメッセージボックスを表示
・メインスレッド(Form)で他のダイアログ表示等の何か処理していた
 場合は終了まで待つ
という感じです。

思いついたのが
1、Formのメソッド毎にlock等の排他をする
2、サブスレッドでPostMessageにイベントを入れておく
3、処理キュークラスを作ってそれに全ての処理を任せる
です。
2をC#で簡単に出来るのであればそれを使いたいと考えています。





282デフォルトの名無しさんsage2010/12/10(金) 16:06:47
モーダルウィンドウでいいだろ…
283デフォルトの名無しさんsage2010/12/10(金) 16:41:19
>>281
264みたいなものが最初からあったら誰も苦労しないだろ。
話の前提がおかしい。

>サブスレッド終了時にメインスレッドと同期をとりながら終了処理する
普通にイベントを通知すればいい。

チュートリアル : イベントベースの非同期パターンをサポートするコンポーネントの実装
http://msdn.microsoft.com/ja-jp/library/bz33kx67%28VS.80%29.aspx

人に質問する前に自分調べてるかい?
284デフォルトの名無しさんsage2010/12/10(金) 16:55:36
とりあえずメインスレッド側に終わったこと通知してあとはメインスレッドでメッセージ出すなり表示するなりやればいいだけじゃないのかと・・・
285264sage2010/12/10(金) 18:02:56
勉強不足で申し訳ない。
>>283
ありがとう。
urlの内容一度試して再度考え直してみます。

スレッド自体あまり使ったことなかったのでこの際
使ってみようと思い264くらいのものでうまくいくんじゃ
ないかと思っていました。

具体的にやりたかったのは他のプログラムを起動し
終了時にデータを更新するというものです。
ただし、他のプログラムを起動している間も自身は
通常通り動かす必要があります。
そこでデータを更新どうやって行うかに悩んでいました。
メインフォームが特定の状態の時に更新させたいの
ですが、あまり込み入った修正をせずにその判断や
排他処理を集中させる方法がわからなかった次第です。

データの操作はすべてメインスレッドに行わせれば
楽かなとか、更新できない状態の時にその更新
イベントをどう保持するか、PostMessageに入れて
置けないかとか考えながらごちゃごちゃの質問を
してしまいました。(今もごちゃごちゃかもしれまんせんが)
286デフォルトの名無しさんsage2010/12/10(金) 18:33:30
うぜぇ
287デフォルトの名無しさんsage2010/12/10(金) 19:00:28
10年以上前の設計臭い
MVCとかMVVMとかの概念を覚えた方が良いと思う
288デフォルトの名無しさんsage2010/12/10(金) 19:07:24
MVCってなんですか?
MVVMってなんですか?

289デフォルトの名無しさんsage2010/12/10(金) 19:14:32
ぐぐれ
290デフォルトの名無しさんsage2010/12/10(金) 21:01:38
だから通知にしろって皆が言ってるだろ
イベントが何のためにあるか考えろよ
291デフォルトの名無しさんsage2010/12/11(土) 00:02:49
イベントなんて飾りです
292デフォルトの名無しさんsage2010/12/11(土) 00:10:42
AsyncOperation使ってUIスレッドでイベント起こすのが正しいんだろうけどそこまでするほどのこととは思えん
非同期イベントパターンは完璧なコンポーネント作って利用者に楽させるための仕組みであって
利用側も提供側も自分なら面倒なだけ
293デフォルトの名無しさんsage2010/12/11(土) 00:32:55
そこでC# 5.0(に入る予定)の async/await よ。
超簡単に非同期処理書ける。
294デフォルトの名無しさんsage2010/12/11(土) 00:47:16
C# 5.0出るまで寝てるわ
295デフォルトの名無しさんsage2010/12/11(土) 00:51:05
asyncの元ネタのRxでも使ってろ
296デフォルトの名無しさんsage2010/12/11(土) 00:53:13
>>295
いや、元ネタじゃないよ。
むしろ棲み分けできそうな感じ。
await は非同期IOとかで1つの値を1度きり取る用。
Rx は非同期イベントがストリーム的にやってくる時用。

async の元ネタはむしろ、Robotics Studio の並列ライブラリとかになるっぽい。
297デフォルトの名無しさんsage2010/12/11(土) 11:31:51
WCFで、ISerializableによってシリアライズするデータは
silverlightと連携することができない、でおkですか?

それと、silverlightにはServiceContract属性があるのですが、
ホストになれないのに、これにはどんな用途が?
298デフォルトの名無しさんsage2010/12/11(土) 11:48:14
>>297
SilverlightにはISerializableは無いからIXmlSerializableかDataContract使う
ServicecContractはクライアントのプロキシでも使われる
299デフォルトの名無しさんsage2010/12/11(土) 13:07:28
>>298
ありがとうございます。ところでISerializableってなかったことに
されそうな(古臭い)ものって認識でいいんですかね?
今後独自にシリアライズ実装する場合はIXmlSerializableでよろしく?
300デフォルトの名無しさんsage2010/12/11(土) 13:24:23
用途によるだろ
その意味ではIXmlSerializableも使わないで無理にでもDataContractだけ使ったほうがいいんじゃないの
301300sage2010/12/11(土) 13:28:58
書き込みミス
シリアライズしたときと同じ型がデシリアライズに必要なのはWebサービスに適さないから
Silverlightでは旧来のシリアライザが削られてるけど、有効な場面ももちろんあるだろ
別の型でデシリアライズすることを考えるなら、IXmlSerializableも使うべきじゃない
302デフォルトの名無しさんsage2010/12/11(土) 13:46:05
>>301
ありがとう。納得しました。
知識豊富で説明もお上手ですね、かっこいいー
303デフォルトの名無しさんsage2010/12/13(月) 00:54:11
C#初心者による質問失礼します。
Wiiリモコンを使ったプログラミングをVC#でやっているのですが、
マルチスレッド処理がよく分からずつまっています。
処理仕組みは分かりますがプログラムとしてうまくいきません。

http://www.kosaka-lab.com/tips/2009/02/wii-values2.php
このページを参考にしています。
スレッド処理を用いて連続して音を再生したいのですが、誰か教えていただけませんか?
304デフォルトの名無しさんsage2010/12/13(月) 01:04:38
どんだけだよw
305デフォルトの名無しさん2010/12/13(月) 01:07:41
>>303
そんな漠然とした質問に回答を与えてくれる人間がいると思うのマジで。
独りよがりじゃないのか?

なんで読み手の立場に立って自分の文書読み返す、という作業をしようとしないのだろう。
306デフォルトの名無しさんsage2010/12/13(月) 01:20:59
いったんWiiリモコンのことをは忘れて、
スレッドを用いずに連続して音を再生する方法を見つけてからスレッド化する
307デフォルトの名無しさんsage2010/12/13(月) 08:37:13
>>303
とりあえずhttp://ideone.com/でうまくいかないコード晒してみそ
308デフォルトの名無しさんsage2010/12/13(月) 09:06:09
>>305
まあ無理もない。
俺もこのWiiリモコンプログラミングの本持ってるけど発展のしようがないようなコードと内容しか書いてないんだよね。
一番良いのは同じようにこのプログラミングをやっている人に聞くのがいいと思う。

で、俺も分からないからずっと前に本棚で眠らせているので>>303には答えられないわけだが。
309デフォルトの名無しさんsage2010/12/13(月) 09:13:25
とりあえずwiiリモコンは関係ないってことで
310デフォルトの名無しさんsage2010/12/13(月) 09:32:47
>>308
馬鹿なの?
311デフォルトの名無しさんsage2010/12/13(月) 10:30:27
人のことを馬鹿って言っちゃダメ!(´・ω・`)
312デフォルトの名無しさんsage2010/12/13(月) 10:35:27
>>303
その参考ページがPlaySyncつかっててFormが固まるから、マルチスレッドにしようとしてるとかだったりして。
それならwavePlayer.Play()に変えたら固まらずに再生できるよ。
まぁSoundPlayerは次々再生しても1つだけしか鳴らないみたい。
連続が多重にということなら、DirectX(DirectSound)つかわにゃーいけないぽいの。
とか適当に答えてみる。
313デフォルトの名無しさん2010/12/13(月) 17:05:26
【C#, C♯, C#】 MonoMac 【MonoDevelop】
http://hibari.2ch.net/test/read.cgi/mac//
314デフォルトの名無しさんsage2010/12/13(月) 22:15:02
SplitContainerの左右または上下のパネルっていうのは
SplitContainerのウィンドウの上に表示されているの?
それとも、その下のウィンドウの上に表示されているの?

つまり、前者ならまず親ウィンドウがあって、その上にSplitContainerの
ウィンドウがあって、さらにその上にパネルがある三層構造
後者なら、親ウインドウの上にSplitContainerと各パネルの
二層構造なんだけど、どちらなんですか?
315バルサン(´・ω・`) ◆E.J7ujd3Xbu. sage2010/12/13(月) 22:16:58
(´・ω・`)
316デフォルトの名無しさんsage2010/12/13(月) 22:17:12
初心者スレでスルーだったので、こっちに書いてみます。

USB接続の外部記憶装置を特定して、ドライブ番号が変わっても追従させることは可能でしょうか?
特定のUSBメモリを毎回参照させて、他の外部記憶装置が加わってUSBメモリのドライブ番号が変更されても自動で参照出来るようにしたいのです。

USBメモリのボリュームラベルをあらかじめ変更しておいて、接続しているドライブから探すくらいでしょうか?
同じボリュームラベルは存在しないという前提になってしまいますが。
317デフォルトの名無しさんsage2010/12/13(月) 22:25:20
>>314
適当にSplitContainerその他配置して、デバッガ動かして適当なところでブレイクして、
FormからControlsを辿っていくと良いよ
318デフォルトの名無しさんsage2010/12/13(月) 22:30:51
>>316
基本無理。
319デフォルトの名無しさんsage2010/12/13(月) 22:49:08
>>316
USBメモリに適当なファイル入れる

そのファイルの有無で判別する
320デフォルトの名無しさんsage2010/12/13(月) 22:57:39
ttp://supermab.com/usbid.html
ぐぐったらこんなの出てきたけど。
321デフォルトの名無しさん2010/12/13(月) 23:32:41
>>318
知らないならレスしなくていいよ。
無知さらすだけだから
とっとと死ねよ。
322デフォルトの名無しさんsage2010/12/13(月) 23:42:56
たしかにこのスレ間違った答えや、そもそも答えないくせに
余計なレスつける馬鹿が多いな
323デフォルトの名無しさんsage2010/12/13(月) 23:49:27
IDすらない匿名掲示板じゃ所詮無理なんだよ
Stack Overflowみたいなサイト作ればけっこう需要ありそうだけどね
324デフォルトの名無しさんsage2010/12/14(火) 03:05:01
最近は糞みたいな機械翻訳された質問サイトが引っかかって鬱陶しい。
325デフォルトの名無しさんsage2010/12/14(火) 10:54:37
-site:efreedom.com -site:w3support.net
326デフォルトの名無しさんsage2010/12/14(火) 20:15:23
>>316
随分前にUSBメモリをドングル代わりに使いたいって人がいて↓を紹介したけど、
同じ方法の応用でいけるんじゃないかな
http://supermab.com/usbid.html

USBデバイスは、VID、PID、SerialNoの少なくとも3つのIDを持っている。
VIDは生産者固有。PIDは製品種固有。SerialNoは製品固有。

余程もぐりのメーカーでない限りSerialNoは製品一つ一つに個別の値が振ってあるから、
この3つの値を使えば個々のUSBメモリを識別できるはず。

前にちょっと試した時には想像と違って偉く簡単にできてかえって驚いた記憶がある。
327デフォルトの名無しさんsage2010/12/14(火) 21:58:05
>>326
おれは316じゃないけど、USBデバイスを識別できたとして、
ドライブ文字との対応はどうやってとるの?
328デフォルトの名無しさんsage2010/12/14(火) 22:03:40
原則無理
329デフォルトの名無しさんsage2010/12/14(火) 22:07:24
WMIでWin32_DiskDrive/Win32_DiskPartition/Win32_LogicalDisk使うとか
330デフォルトの名無しさんsage2010/12/14(火) 22:31:52
いい加減スレチ
331デフォルトの名無しさんsage2010/12/15(水) 13:55:13
XmlSerializeについて質問です




aaa


bbb



上のようなXMLがあったとき、itemタグを読み込むにはどうしたらいいでしょうか?

[XmlRoot("test")]
class Test
{
[XmlArray]
[XmlArrayItem(ElementName="item", IsNullable = true, Type=typeof(TestItem)]
public TestItem[] Items { get; set; }
}

のように記述しても読み込まれないみたいです。よろしくお願いします
332デフォルトの名無しさんsage2010/12/15(水) 14:00:35
XmlElementAttribute
いい加減「XMLを読むのにXmlSerializer」は滅びないかなぁ
333デフォルトの名無しさんsage2010/12/15(水) 14:07:13
DOM使え
334デフォルトの名無しさんsage2010/12/15(水) 14:12:37
System.Xml.Linq
335デフォルトの名無しさんsage2010/12/15(水) 14:22:42
XmlSerializerは宣言的で良いと思うけどな
DOMこそ滅びるべき
そのまま読みたいときもXLINQあればいいし
336316sage2010/12/15(水) 14:36:06
>>319-329
皆さんありがとうございます。

>>320>>326をそのまま試してみましたが、Win32_USBControllerのDeviceIDやPNPDeviceIDでは上手く情報を取得することが出来ませんでした。
USBポートが3つのPCでUSBメモリを抜き差ししても、表示される項目は常に2つでしたので、PC側のUSBコントローラの情報を取得していると思われます。
Win32_USBHubのDeviceIDにて、VID・PID・SerialNoの情報を取得することが出来ました。

また、Win32_LogicalDiskのVolumeSerialNumberでも、個別のシリアル番号を取得することが出来ました。
Cドライブから順番にシリアル番号を表示してくれるので、ドライブ文字との対応も出来ました。(抜けているドライブ文字はnullになります)
別PCでも動作させてみましたが、同様の動作を確認しました。

本当にありがとうございました。
337デフォルトの名無しさんsage2010/12/15(水) 14:37:25
XLinq使ったほうが早いみたいですね。ありがとうございました
338デフォルトの名無しさんsage2010/12/15(水) 16:17:43
>>331
332も言っているが、
(Xml)Serializerというのは文字通り
オブジェクトが持ってるコンテンツを
XMLにシリアライズするための手段であって、
既存のXmlを解析して読むための方法じゃないんだよ。

そういう用途には読むために用意された手段を使うべき。

通常はDOMや、SAXや、System.Xml.Linqを使う。
339デフォルトの名無しさんsage2010/12/15(水) 17:25:47
そんなことないよ。XmlSerializerは既存のXMLの読み書きを重視したクラスだ。
スキーマがあればデシリアライズ用のクラスを自動生成したりできる。
シリアライズというよりXMLとオブジェクトのマッピングなんだよ。
DataContractSerializerなんかもXML吐くけどこっちはほんとにシリアライザ。
340デフォルトの名無しさん2010/12/15(水) 20:14:33
テキストボックスの縦幅固定って解除できませんか?
341デフォルトの名無しさんsage2010/12/15(水) 20:21:27
>>340
プロパティでMultilineにすればOK
342デフォルトの名無しさん2010/12/15(水) 21:32:52
【C#, C♯, C#】 MonoMac 【MonoDevelop】
http://hibari.2ch.net/test/read.cgi/mac//

ちょっときてくれ
343デフォルトの名無しさん2010/12/16(木) 00:55:09
スクロールバーで動かした瞬間にパネル内のものがヌルヌル動くときと
マウスボタンをアップしたときじゃないと移動しない時の違いってなんでしょうか?
344デフォルトの名無しさんsage2010/12/16(木) 02:00:31
ああそれね
うろ覚えだけどスクロール中にSelectするんだったような
345デフォルトの名無しさんsage2010/12/16(木) 07:42:26
Selectとはなんでしょうか?
ググッてもそれらしい情報がありません。
346デフォルトの名無しさんsage2010/12/16(木) 12:08:48
GridのVirtualModeの事?
347デフォルトの名無しさんsage2010/12/16(木) 20:12:50
いえ、普通のフォームとかパネルで出てくるスクロールバーです。
たまにヌルヌル中のコントロールが動いてるときもあるんですが
条件がよく分からなくて。
348デフォルトの名無しさんsage2010/12/16(木) 21:27:22
そういうのは具体的にドレドレは動いてコレコレは動きません!って書けよ
349デフォルトの名無しさんsage2010/12/16(木) 22:11:12
>>343
ごめんSelect関係なかった
Formの中にPanel panel1;を置いてそのpanel1の中にPictureBox pictureBox1置いたクラス
pictureBox1にpanel1より大きい画像を読み込んでてpanel1にスクロールバーが表示されてる状態
panel1のScrollイベントにこれ↓を書けばスクロール中でもpictureBox1が連動して動く
private void panel1_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
this.panel1.HorizontalScroll.Value = e.NewValue;
else if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
this.panel1.VerticalScroll.Value = e.NewValue;
}
350デフォルトの名無しさんsage2010/12/16(木) 23:05:05
http://www.clks.jp/csg/dx002.html
このページに通りにDirectX SDKをインストールしたのですが、
参照の追加で.NETの欄にMicrosoft.DirectXが見当たりません。
何故でしょうか・・・?
351デフォルトの名無しさんsage2010/12/16(木) 23:10:11
それ古いよ
今はxnaだよ
ググってね
352デフォルトの名無しさんsage2010/12/16(木) 23:16:27
>>349
おお、ヌルヌルきました。
ありがとうございます!
353デフォルトの名無しさんsage2010/12/17(金) 00:34:16
Form.OnResize メソッドのヘルプに

Resize イベントを発生させます。

とありますが、OnResizeはどこから呼ばれているのでしょうか?
354デフォルトの名無しさんsage2010/12/17(金) 00:51:39
ライブラリが呼ぶこともあるし
継承クラス作ったときに自分で呼ぶこともあるし
355デフォルトの名無しさんsage2010/12/17(金) 00:53:22
基底クラス
356デフォルトの名無しさんsage2010/12/17(金) 00:53:45
>>354
Formをマウスで引き伸ばし際
具体的にはどのクラスのどのメソッドが呼んでるのでしょうか
357デフォルトの名無しさんsage2010/12/17(金) 01:06:02
WndProcでOnResize呼んでるんじゃないかな
358デフォルトの名無しさんsage2010/12/17(金) 01:07:50

回答する側もてきとーですね
359デフォルトの名無しさんsage2010/12/17(金) 01:08:17
>>356
それを知って何の意味があるのかは考えてる?
360デフォルトの名無しさんsage2010/12/17(金) 01:27:51
>>359
知らないことでなんのメリットがあるのかしらん?
361デフォルトの名無しさんsage2010/12/17(金) 02:23:28
>>360
知る必要の無いことを知る為に浪費する無駄な時間を削減できる事がメリット
362デフォルトの名無しさんsage2010/12/17(金) 02:35:44
知らないならレスしなければいいことじゃん
知らない話題に無理やりレスしてスレ引っ掻き回して、無駄な時間とかどの口がいってんの
363デフォルトの名無しさんsage2010/12/17(金) 02:47:07
知らない話題に無理やりレスしてスレ引っ掻き回してるくせに何言ってんだw
364デフォルトの名無しさんsage2010/12/17(金) 02:47:52
>>351
グラフィックカードが糞でXNA使えないんだ。
だから教えてくれないかな・・・?
365デフォルトの名無しさんsage2010/12/17(金) 02:55:18
このスレの人たちはなまじっか頭いいから煽り方も陰湿だよね
366デフォルトの名無しさんsage2010/12/17(金) 03:04:56
へー、きみ、陰湿に見えるのかい?
君とは話が合わないようだね
367デフォルトの名無しさんsage2010/12/17(金) 03:26:25
>>364
現在利用できるMDX1.1は.NET1.1用のみ
.NET2.0用のMDX2.0はβ版で開発停止。現在使用期限切れにより使えない状態になっている。

古いDirectX SDKなんかから今でも入手できるけど、情報少ない死んだライブラリだよ?
それを分かった上で使いたいなら続きはゲ制作板で聞いてくれ。
368デフォルトの名無しさんsage2010/12/17(金) 03:34:20
陰湿だね
369デフォルトの名無しさんsage2010/12/17(金) 04:12:20
>>362
誰も必要としなかった情報を求めてソース追うためにかかる時間と1行レスするためにかかる時間を一緒にすんなw
370デフォルトの名無しさんsage2010/12/17(金) 04:21:00
>>356を調べるのに時間かかりすぎってそれソース読むの遅いだけじゃね?
371デフォルトの名無しさんsage2010/12/17(金) 04:32:31
陰湿で無駄にプライド高いよね
372デフォルトの名無しさんsage2010/12/17(金) 04:43:09
>>353-371
まとめて死んで

373デフォルトの名無しさんsage2010/12/17(金) 04:43:18
おまえは今まで呼んだメソッドの回数を覚えているのか?
374デフォルトの名無しさんsage2010/12/17(金) 04:58:05
>>353-373
逝ってよし
375デフォルトの名無しさんsage2010/12/17(金) 05:20:40
この板ID表示すればいいのに
376デフォルトの名無しさんsage2010/12/17(金) 05:23:05
死ぬのは>>353だけでいい
377デフォルトの名無しさんsage2010/12/17(金) 05:23:45
深夜に孤独で陰湿な自演か
378デフォルトの名無しさんsage2010/12/17(金) 05:24:14
せやな
379デフォルトの名無しさんsage2010/12/17(金) 05:28:08
>>377-378は俺
380デフォルトの名無しさんsage2010/12/17(金) 05:29:57
自演してるやつは2ch運営に笑われてるってこと忘れんなよな
381デフォルトの名無しさんsage2010/12/17(金) 05:36:14
だから?
382デフォルトの名無しさんsage2010/12/17(金) 05:44:40
>>380
禿同
自演は死んだほうがいい
383デフォルトの名無しさんsage2010/12/17(金) 05:50:35
>>380-382も俺
384デフォルトの名無しさんsage2010/12/17(金) 07:33:47
結局、誰も答えれないかったか・・・

385デフォルトの名無しさんsage2010/12/17(金) 07:36:35
日本語でおk
386デフォルトの名無しさんsage2010/12/17(金) 07:38:04
イベントはOSが呼んでるんだよ
コールバック関数というんだよ
387デフォルトの名無しさんsage2010/12/17(金) 07:38:14
>>385
おまえこそ・・・
388デフォルトの名無しさんsage2010/12/17(金) 07:39:22
>>386
みたいな中途半端な知識しかないような奴ばっかだなw
389デフォルトの名無しさんsage2010/12/17(金) 08:12:45
C言語でおk
390デフォルトの名無しさんsage2010/12/17(金) 08:28:18
回路図も読めないのに偉そうなやつらだな
391デフォルトの名無しさんsage2010/12/17(金) 17:08:48
よく、常に手前に表示するためのボタンに、プッシュピンアイコンが付いていますが、
あれの画像はドコに格納されているんでしょうか。

最初はフォントかと思って、Wingdingsフォント、Webdingsフォントの中を
探してみたのですが、見つかりませんでした。
392デフォルトの名無しさん2010/12/17(金) 17:37:49
VC2008でMicrosoft Chart Controlsを使ってるんですが、これってX軸とY軸を入れ替えたりは出来ないんでしょうか?
横折れ線グラフ(上から下に向かって伸びていく折れ線グラフ)を作りたいんですが・・・。
VS2010では標準で入ってると聞きますが、こういうことをしたご経験のある方はいらっしゃいます?
393デフォルトの名無しさんsage2010/12/18(土) 00:43:48
C#でGoogle カレンダー表示するにはどうしたらいいんでしょうか。
環境はVS2008です
SDKインストール後、参照設定はついかしました。
394デフォルトの名無しさんsage2010/12/18(土) 03:29:24
>>393
WebBrowserコントロール貼り付けてNavigateするだけ
はい次の方どうぞ
395デフォルトの名無しさんsage2010/12/18(土) 03:47:54
>>393
俺も>>394と同じ事思いついた
はい次の回答者どうぞ
396デフォルトの名無しさんsage2010/12/18(土) 16:43:06
ちょい質問
public interface IA{
event Action ev;
}
こういうインターフェースがあるとして

class A:IA,IA とすると、明示的実装になるしかない?

明示的実装と言えば聞こえはいいけど、結局eventの場合は別途実体手書きするしかない
ev_Aとかev_Bみたいに、名前に型付けてとか出来ないかね
397デフォルトの名無しさんsage2010/12/18(土) 16:48:46
明示的実装しておいて
public event ev_A {
 add { ((IA
)this).ev += value; }
 remove { ((IA
)this).ev -= value; }
}
みたいにする
398デフォルトの名無しさんsage2010/12/18(土) 17:02:00
イベントアクセサ知らないだけ?こうかけるよ

event Action
IA.ev { add { ev_A += value; } remove { ev_A -= value; } }
public event Action
ev_A;
399デフォルトの名無しさんsage2010/12/18(土) 17:11:29
勉強になるなぁ
400396sage2010/12/18(土) 18:12:27
なるほどその発想はなかった
THX.
401デフォルトの名無しさんsage2010/12/18(土) 20:07:52
なんてテレパス
402デフォルトの名無しさんsage2010/12/19(日) 14:45:42
log4netでデバッグビルドとリリースビルドで
出力レベルとappenderが変わるようにしたいんですけどどうするのがいいですか?
出力レベルはapp.configで設定しているのですが手で値を変更しないといけなくて面倒です。
403デフォルトの名無しさんsage2010/12/19(日) 14:56:06
log4net使ったことないけどコードから設定できるなら
#if DEBUG
デバッグ用の設定
#else
リリース用の設定
#endif
でいいだろ
404デフォルトの名無しさんsage2010/12/19(日) 15:14:30
log4netは使ったこと無いんだが、log4jにはログ設定が書かれたファイル(log4j.properties)を
手動で読み込ませるメソッドがあります。
これと、[Conditional("DEBUG")]なメソッドを組み合わせればデバッグビルドの場合だけ
ログの設定をapp.config以外のファイルから読ませることができるはず。
たとえば

[Conditional("DEBUG")]
static void loadDebugLogConfig() {
  デバッグ用ログ設定の読み込み処理・・・
}

みたいな感じで、DEBUG用の設定ファイルを読み込む処理をDEBUG
ビルド版でしか実行されないように作っておく。(または#if DEBUGで
リリース版でもデバッグ版でも設定ファイルは手動ロードにする。)
405404sage2010/12/19(日) 15:15:21
おっと亀レスだったか。
406デフォルトの名無しさん2010/12/19(日) 16:21:51
PictureBoxコントローラの派生クラスみたいので、
実行時に枠を変化させて、画像のサイズも変化することができる
コンポーネントってどっかに落ちてないですか?
407デフォルトの名無しさんsage2010/12/19(日) 16:39:26
「枠を変化」の意味が分からないけど、
PictureBoxのSizeModeプロパティをStretchImageにしといて
実行時にPictureBoxのサイズを変えるのはダメなの?
4084062010/12/19(日) 16:56:10
>>407
実行時のPictureBoxをマウス操作で変化させたいんです
409デフォルトの名無しさんsage2010/12/19(日) 17:03:12
デバッガビジュアライザ用に似たようなの自作したことあるな
移動はドラッグだけど面倒だからサイズ変更は数値入力で
コンポーネントにもせずに適当にフォームに書き捨てただけ
410406sage2010/12/19(日) 17:12:16
>>409
やっぱ数値入力しかないんですかね。

要は、VSのGUIデザイナでコンポーネントを貼り付けると
回りに枠が現れて、その枠をマウス操作することでサイズ変更できますよね?

それを実行時にPictureBoxでもできないかと思ったんです。そうすれば、StretchImageにしておけば、
画像サイズも変更できますので。。

ありがとう。
411デフォルトの名無しさんsage2010/12/19(日) 17:16:52
それくらい自分で組もうぜ
412デフォルトの名無しさんsage2010/12/19(日) 17:29:24
  public partial class Form1 : Form
  {
    int xx,yy,ww,hh;
    Boolean flg = false;
    public Form1()
    {
      InitializeComponent();
    }
    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)    {
      if (flg)
      {
        pictureBox1.Width = ww - (xx - e.X);
        pictureBox1.Height = hh - (yy - e.Y);
      }
    }
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)    {
      if (flg) return;
      xx = e.X;
      yy = e.Y;
      ww = pictureBox1.Width;
      hh = pictureBox1.Height;
      flg = true;
    }
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
      flg = false;
    }
  }
413デフォルトの名無しさんsage2010/12/19(日) 17:34:01
それだと枠を操作してる感覚にはならないじゃん
枠の判定とかマウスカーソルの形変えたりとかハンドル表示したりとかカーソルがウィンドウ外に出たときとか
ちゃんと作ろうとすると微妙に面倒
414デフォルトの名無しさんsage2010/12/19(日) 17:35:28
数値入力よりはよくない?
415デフォルトの名無しさんsage2010/12/19(日) 17:43:15
ドラッグでリサイズできるならドラッグで移動(もしくは枠の左側ドラッグ)も必要でしょ?
めんどくせーよけっこう
416デフォルトの名無しさんsage2010/12/19(日) 17:47:39
そんなにめんどくさいならPGやめろよw
417デフォルトの名無しさんsage2010/12/19(日) 17:52:57
ピクチャボックスにしか使えないのは勿体ないから、
リサイズするための枠とドラッグして移動させる機能を中のコントロールに与えるパネルとして作るのがいいかな
ResizablePanelみたいなコンポーネントにして公開してね
>>416任せた
418402sage2010/12/19(日) 17:59:20
>> 404
どうもです。
ここにはlog4net使ってる人あまりいないようですね。
app.config以外で設定する方法を調べてみます。
419デフォルトの名無しさんsage2010/12/19(日) 18:04:31
めんどくせーよw
420デフォルトの名無しさんsage2010/12/19(日) 18:22:21
明日からまた仕事だ面倒だ
誰か俺の代わりにやってくんない?
421デフォルトの名無しさんsage2010/12/19(日) 18:23:14
あたし素人だけど、FrameworkElementあたりを相手に
リサイズ機能付けるクラスを作るだけじゃないの?
そんなに面倒くさいかな
422デフォルトの名無しさんsage2010/12/19(日) 20:37:57
どう見てもWinFormsだろ
WPFならもっと面倒だぞ
コントロールの位置決めが親要素に依存するから移動させるのはクソ難しい
423デフォルトの名無しさんsage2010/12/19(日) 21:31:06
WPFで作ってもCanvasに乗っけてDragイベント拾うだけじゃん。
424デフォルトの名無しさんsage2010/12/19(日) 21:49:26
■環境
・C#2010 + .NET2.0
・Windowsフォームアプリケーション

■やりたい事
・タスクマネージャーからプロセスの終了をされてもメッセージボックスを表示したい。

■ためした事1
・Form1_Shownに
Application.ApplicationExit += new EventHandler(End_Proc);
Application.ThreadExit += new EventHandler(End_Proc);
を追加

・private void End_Proc(object sender, EventArgs e){ MessageBox.Show("hoge") };
を追加

この2つを追加して実際にプロセスを終了させた

結果->メッセージボックスは表示されずに終了。

■ためした事2
・Form_Closingイベントを作成し、MessageBox.Sho("hoge");を入れる。

結果->メッセージボックスは表示されずに終了。

■聞きたい事
・どうすればプロセスの終了をされてもメッセージボックスを表示することができるのか。
・Form_Closingイベントはなぜ呼ばれなかったのか。
よろしくお願います。
425デフォルトの名無しさんsage2010/12/19(日) 21:55:28
無理
426デフォルトの名無しさんsage2010/12/19(日) 21:55:33
別プロセス立ちあげて監視
427デフォルトの名無しさんsage2010/12/19(日) 22:03:24
無理でしたか・・
dllをインジェクトしてそこから監視させる方法を取ることにします。
有難う御座いました。
428デフォルトの名無しさんsage2010/12/19(日) 22:09:58
なんでDLLインジェクションなんて話になるんだ…?
429デフォルトの名無しさんsage2010/12/19(日) 22:10:12
ムリなのか。
signal飛んでくるんじゃね?って思ってぐぐってみたけど、
http://msdn.microsoft.com/ja-jp/library/xdkz3x12(v=vs.80).aspx
> SIGTERM シグナルは、Windows NT では生成されません。

って書いてあるしな。
430デフォルトの名無しさんsage2010/12/19(日) 22:20:28
単体でできたら怖いだろ……
431デフォルトの名無しさんsage2010/12/20(月) 09:14:34
動画を再生するには何を使えばいいのでしょうか。
どこか説明している場所があれば教えて下さい

フォームを使うなりcreateWindowなりで新しいウインドウを作成して、WAV形式の動画を再生したいと考えてます
イメージとしては、フォームのタイトル部分が消えた、動画だけのウインドウです
プレイヤーを作成するのではなく、ゲーム中にカットインを挿入するために使用します
432デフォルトの名無しさんsage2010/12/20(月) 09:24:16
wavは普通音声フォーマットであって動画フォーマットではないんだが
まあ取り敢えずWMPコントロールでも使ってみれば
433デフォルトの名無しさんsage2010/12/20(月) 10:24:18
ゲームはXNAで作るべ
XNAなら動画再生も思いのままだべ
434デフォルトの名無しさんsage2010/12/20(月) 10:43:06
Backgroundworkerクラスにはスレッドの優先度を設定する
ことができないのでしょうか?ThreadクラスのPriorityみたいな。
435デフォルトの名無しさんsage2010/12/20(月) 10:48:37
うん無理
436デフォルトの名無しさんsage2010/12/20(月) 19:35:20
Thread.Priorityをいじればいいんじゃないの?
437デフォルトの名無しさんsage2010/12/20(月) 19:44:04
つーかMSDNを探せば一応どういうメソッドとかプロパティがあるか
わかるし説明や使い方書いてあるだろうに・・・
438デフォルトの名無しさんsage2010/12/20(月) 21:15:36
スレッドの優先度って変えたことないな
439デフォルトの名無しさんsage2010/12/21(火) 01:22:27
>>434
もう Task 使え。
440デフォルトの名無しさん2010/12/21(火) 14:37:37
C#でサーバー側を作る場合はどの編から手をつければいいでしょうか?
ヒントでもいいので教えてください
441デフォルトの名無しさん2010/12/21(火) 14:58:25
サーバ側のソケット待ちうけするところからじゃない?
442デフォルトの名無しさんsage2010/12/21(火) 15:11:22
WCFの類いとはちがうん?
443デフォルトの名無しさんsage2010/12/21(火) 15:13:44
あーすみません

サーバーを0から作るというより従来のcgiに相当する物を作る場合に
手をつけることですね・・・

linuxだとapach+phpとか用意してphpでcgi書いたりしますけど・・・

.netで同じようなことやろうとするとどうなるのかなあ・・・と思いまして
444デフォルトの名無しさんsage2010/12/21(火) 15:15:12
asp.net
445デフォルトの名無しさんsage2010/12/21(火) 17:29:21
ASP.NETは糞だけどね
ライブラリ部分無視してPHP的に使ったほうがいいよ
446デフォルトの名無しさんsage2010/12/21(火) 20:27:09
phpから入ったんならASP.NET MVCがいいと思う
ASP.NET無印、AJAXは表面上簡単だけど、いいかげんに作ってるとすぐ激重になる
447440sage2010/12/22(水) 10:47:07
ASP.netというのがあるですね
調べてみたいと思います。

ありがとうございました
448デフォルトの名無しさんsage2010/12/22(水) 11:49:31
ASP.netってWebProgにスレが立っては消えていくんだよな
449デフォルトの名無しさんsage2010/12/22(水) 11:52:48
ほとんど企業しか採用しないからじゃないか?
450デフォルトの名無しさん2010/12/22(水) 12:31:24
すみません。FormやコントロールにGraphicsクラスで書いたり塗りつぶしたりした
RectangleやTextを消すブラシっていうのは、ないんですか?
451450sage2010/12/22(水) 12:56:33
調べてみたら、無いらしい・・

書いたらそのまんまかよ・・消しゴムくらい用意してほしいっす。

スレ汚しゴメソ
452デフォルトの名無しさん2010/12/22(水) 12:58:18
>>451
何をいいたいのかわからんがキャンバスになってる色でRectangleで上書きするだけじゃないの?
453デフォルトの名無しさんsage2010/12/22(水) 12:59:27
まぁ、そうなんすけど・・
454デフォルトの名無しさんsage2010/12/22(水) 13:00:10
最近、この手の聞き方をする人増えたよね
煽りながらやるタイプ
2003年頃に裏情報で出てきて流行ってたよなw
455デフォルトの名無しさん2010/12/22(水) 13:02:57
そんなことより、おまえら、聞いてくれよ。

昨日、スーパーでお釣りもらうとき、プログラムの難しいことを考えながら
お釣りをもらおうとしたら、女の店員の指をけっこう触ってしまったのだよ。

で、なんかすげえ久しぶりに女の肌にふれて、その女の手もすげえすべすべだったから
なんかもうすげえさわっちゃったわけよ。

いやがられてるのは、わかりきったことだけど
たまんなくて、すげえ触っちまった。

帰るときにごめんなさいっていって出てきたよ。
456デフォルトの名無しさんsage2010/12/22(水) 13:25:41
おさわり探偵乙
457デフォルトの名無しさんsage2010/12/22(水) 16:39:28
とりま痴漢で通報しておいた
458デフォルトの名無しさんsage2010/12/22(水) 16:41:21
そんな手でちんこ触られたら気持ちいいんだろうなー
胸熱
459デフォルトの名無しさんsage2010/12/22(水) 22:28:50
職場のやつに取らせればいいんだよなw
460デフォルトの名無しさんsage2010/12/23(木) 02:16:24
最後に謝るのがもうダメ、屁タレ、痴漢として最後まで自分に誇りをもつべき
461デフォルトの名無しさんsage2010/12/23(木) 02:46:21
痴漢が自分に誇りを持つなw
462デフォルトの名無しさん2010/12/24(金) 14:33:08
C#でKinect使えるようにしてくれ
できればMonoでも動くような感じで
たのむ

Kinect ハック
http://hibari.2ch.net/test/read.cgi/tech//
463デフォルトの名無しさん2010/12/24(金) 14:35:11
>>462
ドライバーとその上のレイヤーの構造がわかれば余裕でしょ
win32APIとか触れるのに
464デフォルトの名無しさん2010/12/24(金) 15:23:41
自作ライブラリを作成していて、このライブラリの中で、
同じディレクトリに置いてある専用のデータファイルに読み書きしたいと考えています。
このとき、データファイルの絶対パスを取得する必要があると思うのですが、
どのように取得すればよいでしょうか。

以下は同等のPHPコード(例)です。
$data_file_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . "foo.dat";
465デフォルトの名無しさんsage2010/12/24(金) 15:25:08
>>464
.netに絶対パスとか取得するクラスあるよ
ぐぐってみ
466デフォルトの名無しさんsage2010/12/24(金) 15:25:26
>>464
スレ違い。
(PHPでDirectXを動かすという狂気な実装でなければ)
467デフォルトの名無しさんsage2010/12/24(金) 15:27:19
System.IO.Pathでぐぐれ
次からは初心者用スレでな
468デフォルトの名無しさんsage2010/12/24(金) 15:28:41
>>464
Assembly.GetExecutingAssembly().Location
作法的にはよろしくない
ライブラリは複数のアプリから共有されるわけで、個別に状態持たせたりとかは普通やらない
469デフォルトの名無しさんsage2010/12/24(金) 15:43:13
そもそもprogram filesとかに配置されたら読みはともかく書きができない
470464sage2010/12/24(金) 16:16:38
すいません、初心者スレが別にあるんですね。
System.IO.Pathはmsdnで読んでいたのですが、
カレントディレクトリの移動が必要になるようだったので、躊躇していました。

あとレスをいただいて気づいたのですが、やはりスレ違いだったみたいです。
自分がやってるのはASP.NETです。
C#力が貧弱なこともあり、コマンドラインでちまちま勉強中だったため、
言語スレ的なつもりでこちらに投下してしまいました。
現実的にASPに置き換えて考えるとファイル配置や検索方法も変わってきます。

少し整理してやりなおしてみようと思います。
ありがとうございました。
471デフォルトの名無しさんsage2010/12/24(金) 16:48:07
ASP.NETならRequest.MapPath
472デフォルトの名無しさんsage2010/12/24(金) 17:29:08
こちらには初めてお邪魔します。

MSC#でコンソールアプリケーションの開発を計画しているのですが、一つだけググっても分からないことがあったので着工前に質問させてください。

インターネットに接続することは可能ですか?
できるとしたら、どのように記述するのですか?
コンソールアプリケーションであることが影響しないのならそうあしらっていただいて結構です。

皆様お忙しい中恐縮ですが、よろしくご教授ください。
473デフォルトの名無しさん2010/12/24(金) 17:32:47
System.Net
System.Web
あたりが使えるなら可能じゃないの?
474デフォルトの名無しさんsage2010/12/24(金) 17:32:47
>>472
可能か不可能かで言えば可能だけど、
まずはサーバーサイドなのかクライアントサイドなのかが
分からないと答えようがないよ。
475デフォルトの名無しさんsage2010/12/24(金) 17:33:04
全然関係ない
476デフォルトの名無しさんsage2010/12/24(金) 17:37:34
関係ない。ぜんっぜん関係ない。
477デフォルトの名無しさんsage2010/12/24(金) 18:04:29
>>473
コンソールでも大丈夫なのかということでした。

>>474
クライアントサイドです。

>>475,476
了解、ありがとう。
478デフォルトの名無しさんsage2010/12/24(金) 18:53:08
今時ほんとうにコンソールアプリなの?
479デフォルトの名無しさんsage2010/12/24(金) 19:08:39
>>472
HTTP/HTTPSならSystem.Net.HttpWebRequest。
SOAP(HTTP/HTTPS)ならsvcutil.exeの生成するクラス。
TCP/IPならSystem.Net.Socket。

>>478
バッチ処理とかじゃねーの?
480デフォルトの名無しさんsage2010/12/24(金) 19:44:46
CodeDomについて質問させておくれ。
.net2.0です。

目的はプロパティ作る時にget/set単位でのスコープ指定する事です。
CodeMemberPropertyじゃ出来ないようなので、CodeSnippetTypeMemberでコード直接書いてるんだけど、インデントズレたり出力される位置がCodeMemberPropertyで出力したプロパティと離れたりで気持ち悪いのをなんとかしたいです。

こういうピンポイントの出力をいじるのって、何をすればいいのでしょうか?
481デフォルトの名無しさんsage2010/12/24(金) 19:51:54
どうせプログラム言語に依存するならCodeDOM使う意味無いから
VSのテキストテンプレート(T4)使ったほうが楽だよ
482デフォルトの名無しさんsage2010/12/24(金) 20:00:45
>>478
本当にコンソールアプリです。GUIのいらないものがGUIで出回りすぎているので、自分用にCUIで作ろうと…。自分のPCが低スペなのもあります。

>>479
参考にさせていただきます。ありがとうございます
483デフォルトの名無しさんsage2010/12/24(金) 20:17:49
なにげにコンソールのが便利だよね
コンソールからForm起動するとConsole.WriteLine使えてデバッグにも便利だし
484デフォルトの名無しさんsage2010/12/24(金) 20:41:22
>>481
なるほど。

後出し情報で申し訳無いけど、MSBuildの処理内でコード生成してるpartialクラスなので、T4でのコード出力がMSBuildから制御できたら万々歳。
ちょいと調べてみます。
485デフォルトの名無しさんsage2010/12/24(金) 20:43:36
確かT4はMSBuildから使えたはず
MSDNにやり方が書いてあった
486デフォルトの名無しさんsage2010/12/25(土) 00:30:13
test
487デフォルトの名無しさんsage2010/12/25(土) 14:27:30
うぉぉぉぉぉぉぉぉ

C#めんどくせええええええええええ!!!!!!!!!!!!!!!!!!

使い物にならないIDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!

市ね!
488デフォルトの名無しさんsage2010/12/25(土) 14:31:43
VC#はIDEとしては最高の出来でしょ
それが使い物にならないというなら、VB以外の全ての言語のIDEはVC#に遥かに劣るゴミクズだよ
489デフォルトの名無しさんsage2010/12/25(土) 14:39:17
m9(^д^)<プギャー!!!!!!!!!!!!!!!!!!

Visual F#!!!!!!!!!!!!!!!!!!!!!!!!!
490デフォルトの名無しさんsage2010/12/25(土) 15:24:20
本当にC#は冗談抜きで史上最高の生産性持ってると思う。
491デフォルトの名無しさんsage2010/12/25(土) 15:36:53
持っててもユーザー数という物量作戦の前に無力
それと自分の知ってる道具以外拒否るマにあるまじき弩バカ(→VB6.0)
492デフォルトの名無しさんsage2010/12/25(土) 15:57:44
言語と生産性の関連は証明されていません。
思い込みや宣伝以外のきちんとした証明を提示すれば状況は自ずと変わるでしょう。
493デフォルトの名無しさんsage2010/12/25(土) 16:02:59
C#はどっちかというと言語はIDEの付属品と割り切ってるよね
C#が便利というよりIDEを邪魔しない設計
494デフォルトの名無しさんsage2010/12/25(土) 16:08:03
>>493
というか、C#はコンパイラの効率やIDEの補完機能に留意して設計されてるんだよ。
だから構文自体は結構冗長な部分があって、
ただのテキストエディタだと入力しづらい。

しかしコンパイルはJavaと比べても圧倒的に高速だし、
大抵のコード片はIDEが補完してくれる。

C++はその点全然ダメ。JavaやC#だと当たり前のビルド前構文チェックすら容易ではない。
495デフォルトの名無しさんsage2010/12/25(土) 16:11:26
C++はマクロがあるだけで解析が大変になるからな
496デフォルトの名無しさんsage2010/12/25(土) 16:12:45
マクロはCからの伝統じゃん
C++はテンプレートとかでもっと酷いけど
497デフォルトの名無しさんsage2010/12/25(土) 16:27:36
ビルド前構文チェックが出来ない最大の理由が
マクロとテンプレートのカオスさだな
498デフォルトの名無しさんsage2010/12/25(土) 16:34:44
体験版のIDEはタブ部分が全部スペースになってて使いにくかった印象があるけど・・・
499デフォルトの名無しさんsage2010/12/25(土) 16:56:05
>>498
タブとスペースは設定で切り替えられるよ。
500デフォルトの名無しさんsage2010/12/25(土) 17:25:28
>>499
まじで?どのへん?
VC#EE2008だけどオプションのところにないんだけど・・・・
501デフォルトの名無しさんsage2010/12/25(土) 17:28:39
あれも、多人数開発してるとスペースの方がどこでも同じに表示されていいからって理由だしなぁ。
オプションで変えれるけども。
502デフォルトの名無しさんsage2010/12/25(土) 17:29:26
>>500
オプション、テキストエディター、C#、タブ設定みたいにたどる。
503デフォルトの名無しさんsage2010/12/25(土) 18:21:27
C#ってコンパイルアホみたいに早いけどちゃんと最適化してんのかって思う
C++なんかやたら最適化長いのにな
504デフォルトの名無しさんsage2010/12/25(土) 18:27:19
そりゃ最初からコンパイルも楽なように設計してあるからなぁ。

C++ のコンパイルで一番時間かかってるのはヘッダーファイルの展開であって、
実は最適化じゃなかったり。

あと、C# の場合、実は常時バックグラウンドでインクリメンタルコンパイルしてるんで、
ビルド操作した時の負荷が低いというのもある。
505デフォルトの名無しさんsage2010/12/25(土) 18:37:16
言語が複雑だと最適かもやりづらくなるしな
Fortranなんか最適化しやすくてC++より実行速度もコンパイルも速い
506デフォルトの名無しさんsage2010/12/25(土) 18:47:06
客先でサーバー作業するとき、ちょっとしたツールが欲しくてメモ帳でC#プログラムを
その場で作ったりするけど、IDEがなくてもC#は優秀だなと思う。
久しぶりにJavaやってnew BufferedReader(new InputSteamReader(new FileInputStream(f)))
とか書いてたら発狂しそうになった。
507デフォルトの名無しさんsage2010/12/25(土) 19:05:15
そこはC#じゃなくて.NETを褒めてやれよw
508デフォルトの名無しさんsage2010/12/25(土) 19:19:06
一応突っ込んでおくけど、C++比でC#の方がコンパイラが楽できる設計になっている、
っていうのは何か勘違いをしているとしか思えない。

ちょっと前に別スレで話題になった前方参照の問題や、プロトタイプなんてものの
存在一つとっても事実は逆。
何のために人間様にあんな猿仕事が押し付けられていると思ってるの。
509デフォルトの名無しさんsage2010/12/25(土) 19:19:19
XDocumentで、どうやればXmlDocumentのInnerXmlやOuterXmlに相当するものを
取得できますか?
510デフォルトの名無しさんsage2010/12/25(土) 19:29:56
出先でちょっとしたツール(というかスクリプト)がほしい時は、俺の場合VBSだな
バッチで事足りるならそれで十分だけど
511デフォルトの名無しさんsage2010/12/25(土) 19:30:35
サーバーではvbsで作る
512デフォルトの名無しさんsage2010/12/25(土) 19:48:24
もうそろそろPowerShellに移行してほしい。
毎回psスクリプトを実行可能にする設定が面倒ではあるけど。
513デフォルトの名無しさんsage2010/12/25(土) 19:49:45
>>508
細かいところでそうだとしても、実際にコンパイル速度が早いのはC#だし、
構文解析が簡単なのもそう。

テキストエディタ用のHighlighterの実装を読んだことがあるけど、
C#用のは拍子抜けするくらい簡単だった。
514デフォルトの名無しさんsage2010/12/25(土) 20:00:33
まあこのスレでC++の話をする奴はたいていC++の事分かってないからなw
515デフォルトの名無しさんsage2010/12/25(土) 20:02:56
C++なんて時代遅れゲソ
516デフォルトの名無しさんsage2010/12/25(土) 20:18:53
>>508
long long int x = 0;
if(long volatile int const long * const p = &x);

こんなのコンパイル可能にするためにパーサーがばんばってんだぜ、C++ は。
517デフォルトの名無しさんsage2010/12/25(土) 20:22:52
それくらいならまだマシなような。templateの方が地獄でしょ。
518デフォルトの名無しさんsage2010/12/25(土) 20:57:22
templateの複雑さは、マクロ的な展開を再帰的にしまくるところであって、構文解析のとこじゃないような。
構文解析的にも、>> とかの解釈面倒なんだけども。
519デフォルトの名無しさんsage2010/12/25(土) 21:35:29
終わりましたか?
結局どんなに吠えてもC++の必要性と実用性は揺るがないんですけどねw
520デフォルトの名無しさんsage2010/12/25(土) 21:51:27
今年買った新しいPC(win7x64 SSD)だと初回でも.NETアプリが
一瞬で起動するので、そろそろC++は存在がやばいんじゃないかと思う。
俺の会社だと50代のCプログラマが必死にC#研修受けに来ていてかわいそうだ。
521デフォルトの名無しさんsage2010/12/25(土) 21:55:04
Cしかできないとかだときつそうだね
C#しかできない人も数年後にはそうなる可能性もあるわけだけど
522デフォルトの名無しさんsage2010/12/25(土) 21:55:54
>>520
XPとかに慣れた身だと、Win7での.NETアプリの起動の速さがなんか逆に気持ち悪いw
523デフォルトの名無しさんsage2010/12/25(土) 21:59:38
C#できてCできない人っているのかな?
それってC#もできてるつもりなだけなんじゃないかな?
524デフォルトの名無しさんsage2010/12/25(土) 22:04:02
むしろCできない人の方が多いと思うのだが。
リソース解放が面倒な所とかクラスが無い所とか拷問に近い。
525デフォルトの名無しさん2010/12/25(土) 22:06:40
>>524
クラスはまあまだなんとかなる

構造体+関数ポインタで同じような構造にできるし

でもやっぱCでクラスもどきとかやってるとあほらしくなるけどねw

でもC++はあまりにも継ぎ接ぎ実装なんでC#やった後だと辛い・・・
526デフォルトの名無しさんsage2010/12/25(土) 22:08:06
テンプレート面白いよね
あくまでパズルとしてはだけど
527デフォルトの名無しさん 2010/12/25(土) 22:13:57
急ぎの質問なのですが、
現在、VS2008を使いC#で開発をしています。
ユーザーコントロールを作成し、フォームに置きました。
ユーザーコントロールのクリックのイベントハンドラに
buttonのsenderでボタンのテキストを取得するように書き、stringで別フォームのプロパティに飛ばしました。
別フォームでlabelに、ユーザーコントロールのクラスから受け取ったstringを書き込んだのですが、反映されません。
コマンドウィンドウ上ではちゃんとフォーム間の受け渡しはできているようなので、なぜ反映されないのかわかりません。
ご教授お願いします。
528デフォルトの名無しさんsage2010/12/25(土) 22:15:25
俺を教授と呼んでくれるのか///
529デフォルトの名無しさんsage2010/12/25(土) 22:19:29
ご教示お願いします。
530デフォルトの名無しさん 2010/12/25(土) 22:20:52
すいません!
ご教示おねがいします。
531デフォルトの名無しさんsage2010/12/25(土) 22:24:53
>>527
その調査が正しいならユーザーコントロールは問題の本質でなく
Labelのバグを疑った方がいい。
Labelのプロパティ書き込む直前にメッセージボックスで表示させても
正しく表示できるんだよな?
532デフォルトの名無しさんsage2010/12/25(土) 22:27:36
コード晒せや
533デフォルトの名無しさんsage2010/12/25(土) 22:32:22
>コンソールからForm起動するとConsole.WriteLine使えてデバッグにも便利だし
いや普通にDebug(またはTrace).WriteLineで十分だろ。
534デフォルトの名無しさん 2010/12/25(土) 22:36:05
メッセージボックスで表示させようとしたところ、
そのイベントハンドラ内のソースがすべて反映されてないみたいです。
しかし、ブレークポイントは反応しているのでイベントハンドラには到達しています。
コマンドウインドウで変数の中身を確認しても、しっかりstring型で文字が入っていました。
ソースは少々お待ちください。まとめます。
535デフォルトの名無しさんsage2010/12/25(土) 22:37:52
糞業務アプリの糞カスタムコントロールなんかだとプロパティ変えても再描画されない糞実装見かけるけど、
>>527のはMS純正のLabelなんかね?
536デフォルトの名無しさん 2010/12/25(土) 22:42:24
純正のlabelです。

よくわからないのですが、別フォームはすでに起動されていて、そのフォーム内にユーザーコントロールを置いているので、
この new であらたに別フォームを宣言しているのがまずいのでしょうか?

ユーザーコントロールのクラス

private void btnMenu_Click(object sender, EventArgs e)
{
Button btMenu = (Button)sender;
FormKaisi kaisi = new FormKaisi();
kaisi.Strmenutext = btMenu.Text;

}


別フォームのソース

private String strmenutext;

public String Strmenutext
{
get { return strmenutext; }
set
      {
        strmenutext = value;
  label5.Text = strmenutext;
}
}
537デフォルトの名無しさんsage2010/12/25(土) 22:43:44
そりゃだめだわ
538デフォルトの名無しさんsage2010/12/25(土) 22:44:35
>別フォームはすでに起動されていて、そのフォーム内にユーザーコントロールを置いているので、
>この new であらたに別フォームを宣言しているのがまずいのでしょうか?

当たり前だろ
539デフォルトの名無しさんsage2010/12/25(土) 22:45:03
オマエしんでいいよ。VB6プログラマ時代の頭の悪さを感じる。
540デフォルトの名無しさんsage2010/12/25(土) 22:47:21
>FormKaisi kaisi = new FormKaisi();
>kaisi.Strmenutext = btMenu.Text;

この後にkaisi.Show()を書いてみよう!
541デフォルトの名無しさん 2010/12/25(土) 22:47:42
newで宣言せずにすでに起動しているフォームに値を受け渡すことはできないのでしょうか。
542デフォルトの名無しさんsage2010/12/25(土) 22:48:19
viewとmodel直結か
たのむからbindつかおうぜ…
543デフォルトの名無しさんsage2010/12/25(土) 22:48:29
ふらっとC#,C♯,C#(初心者用) Part67
http://hibari.2ch.net/test/read.cgi/tech//
544デフォルトの名無しさんsage2010/12/25(土) 22:50:41
開いた時にインスタンスを保存しとくなり、Application.OpenFormsから探すなりすれば?

あとstrmenutextとlabel5.Textの値が一緒ならstrmenutextいらなくね?
545デフォルトの名無しさん 2010/12/25(土) 22:50:56
>>540
kaisi をshowすると値は入っているのですが、それは困るのです。すでに起動しているフォームのラベルに変化がほしいです。

初心者すぎる質問で申し訳ないのですが、助けてください。
546デフォルトの名無しさんsage2010/12/25(土) 22:51:47
>>541
class Unko {
 public static FormKaisi Manko = null;
}
を作成しておいて、FormKaisiのコンストラクタで
Unko.Manko = this;
これでおk。後はbtnMenu_Clickから
Unko.Manko.Strmenutext = btMenu.Textすればいい。
547デフォルトの名無しさんsage2010/12/25(土) 22:52:33
       人
      (  )
      (   )
     ( ´д`) ウンコー
     /⌒   `ヽ
    / /    ノ.\_n●
    ( /ヽ   |\___Lノ
    \ /   |
      (   _ノ |
      |   / /
      |  / /
      (  ) )
      | | /
      | | |.
     / |\ \
548デフォルトの名無しさんsage2010/12/25(土) 23:00:09
>>546
2つの意味でうんこなコードだな
549デフォルトの名無しさん 2010/12/25(土) 23:02:16
>>546
のソースコードがよくわからなかったんですけど、ユーザーコントロールのクラスに、
別フォームのロードイベント時に別フォームをthisで送っているのですが、これだけでは別フォームの関数に引数をもって入れないのでしょうか。
550デフォルトの名無しさんsage2010/12/25(土) 23:07:24
日本語でおk
551546sage2010/12/25(土) 23:12:32
>>549
すまんが俺も日本語の意味がわからなかった。
急ぎのようだから、まずは>>546のコードを貼り付けて試してもらえないだろうか。
552デフォルトの名無しさんsage2010/12/25(土) 23:15:44
>>549
>>536があまりに見当違いだから送ってるとか言われても全く信用できない
インスタンスとかの概念理解してなさそうに思える
553デフォルトの名無しさん 2010/12/25(土) 23:18:22
>>546
のソースでできました。
ありがとうございます。
ちょっとソースを理解してみたいと思います
ありがとうございました!
554546sage2010/12/25(土) 23:18:55
どういたしまして!
555デフォルトの名無しさんsage2010/12/26(日) 00:37:45
List のコピーをつくる一番簡単な方法を教えてください
556デフォルトの名無しさんsage2010/12/26(日) 00:41:34
ToList
557デフォルトの名無しさんsage2010/12/26(日) 00:49:57
神様ありがとう
558デフォルトの名無しさんsage2010/12/26(日) 07:12:13
DataGridViewでFullRowSelectにしたとき
選択線が行全体を囲うようにしたいのですが
わかりませぬか・・・
559デフォルトの名無しさんsage2010/12/26(日) 07:25:41
ToList()でいいのか。へー。
以前はコンストラクタに入れるのが王道だったよね。
List listB = new List(listA);

で、stringなら良いけど、中身が参照型ならちょっと気をつけないとイカンよ。
List自体は別物でも中身は参照のままだから、場合によっては問題が起こる。
560デフォルトの名無しさんsage2010/12/26(日) 08:01:13
.Select(item=>item.Clone()).ToList()だな
561デフォルトの名無しさんsage2010/12/26(日) 09:12:18
Clone()はDeepCopyじゃないよね?
562デフォルトの名無しさんsage2010/12/26(日) 09:14:55
>>560
http://msdn.microsoft.com/ja-jp/library/system.icloneable.clone.aspx
>Clone は、詳細コピーまたは簡易コピーとして実装できます。
563デフォルトの名無しさんsage2010/12/26(日) 09:16:04
間違えた
>>561
564デフォルトの名無しさんsage2010/12/26(日) 09:17:44
ICloneableは今はいらない子扱いだよ
新規に実装するのは非推奨
さすがにObsoleteにはならんけど
565デフォルトの名無しさんsage2010/12/26(日) 12:50:16
>>564
まじで?今はどうやって実装するの?
566デフォルトの名無しさんsage2010/12/26(日) 12:51:55
インタフェース使わずに実装する
567デフォルトの名無しさんsage2010/12/26(日) 13:13:08
それはどうして?
ポリモーフィズム使えなくなるじゃん
それにメソッドだけ追加するのも居心地悪い感じがする
568デフォルトの名無しさんsage2010/12/26(日) 13:19:13
Clone が浅いコピーか深いコピーか規定されてなくて、各実装でバラバラ
だから、使えなくなった。
569デフォルトの名無しさんsage2010/12/26(日) 13:38:24
ありがとう
なるほど・・・・・
570デフォルトの名無しさんsage2010/12/26(日) 14:49:32
void Test(T a) where T : IHoge, ICloneable {
var b = a.Clone();
b.Hoge(); // aに影響すると困る
}
としたときにaの状態が変化しないかどうかはICloneableの実装依存だからな
結局具体的な実装の知識が必要なのでインターフェイスとしては意味無
571デフォルトの名無しさんsage2010/12/26(日) 14:57:55
個人的にIcolonable気に入ってたんだがダメな子だったのか
572デフォルトの名無しさんsage2010/12/26(日) 15:15:47
某パッケージではICloneable実装が義務付けられていたから、
シャロー、ディープ、MemberwiseCloneが入り混じって酷いバグの温床になってた経験がある
573デフォルトの名無しさんsage2010/12/26(日) 15:23:47
IClonableのメソッドがShallowClone, DeepClone, MemberwiseCloneの3つあれば良かったのか
実装面倒かもしれないけど、クローンの方法が複数あるにも関わらず
メソッドがClone1つしかないのがそもそもの問題な気がする
574デフォルトの名無しさんsage2010/12/26(日) 15:41:47
ディープコピーだけでいいでしょ
ICloneable.Cloneのドキュメントに、あらゆるパブリックメンバの操作に対して
元のインスタンスに影響が出ないように実装しろと書いてあればよかったんだよ
575デフォルトの名無しさんsage2010/12/26(日) 15:56:53
でもディープコピーされたら困る場合もけっこうある
576デフォルトの名無しさんsage2010/12/26(日) 16:12:06
そういう場合はそう書いとけよ
577デフォルトの名無しさんsage2010/12/26(日) 16:13:56
つかそもそも
なぜ違う機能を同じメソッド名に割り当てたのかがわからない
小一時間問い詰めたい
578デフォルトの名無しさんsage2010/12/26(日) 16:15:46
シングルトンをシリアライザつかってディープコピーしてやるですぅ
579デフォルトの名無しさん2010/12/26(日) 16:18:13
クラスの複製を作りたいケースが思い浮かばないだが
実際はどうやればいいの?
580デフォルトの名無しさん2010/12/26(日) 16:19:36
もとい
>クラスの複製を作りたいケースが思い浮かばないだが
>実際はどうやればいいの?
インスタンスの複製を作りたいケースが思い浮かばないだが
実際はどうやればいいの?
581デフォルトの名無しさんsage2010/12/26(日) 16:23:54
汎用性なら578が言ってるシリアライズ→デシリアライズが楽
一時的にMemoryStreamか何かに、BinaryFomatterか何かで書き込む
582デフォルトの名無しさん2010/12/26(日) 16:26:09
>>581
なるほど
それだったら楽でいいな
583デフォルトの名無しさんsage2010/12/26(日) 16:28:08
編集画面開いたらViewModelの中でModelをコピーしてそっちを編集して、
キャンセルボタンが押されたら無かったことにして、とかで
584デフォルトの名無しさんsage2010/12/26(日) 16:28:12
え、>>580はCloneの使用パターンじゃなくて実装法聞いてたのか?
585デフォルトの名無しさん2010/12/26(日) 16:32:05
>>584
両方

クラスからインスタンスをいくつか作るケースは普通にあるけど
インスタンスになった物を複製ってかかないからな・・・
586デフォルトの名無しさんsage2010/12/26(日) 16:43:15
メメントパターンで編集履歴を残したり、スレッドセーフでないDB系のインスタンスをCloneして別スレッドで使ったりした経験はある
587デフォルトの名無しさんsage2010/12/26(日) 16:48:33
>>574
じゃあIShallowClonable, IDeepClonableがあればいいんじゃね
588デフォルトの名無しさんsage2010/12/26(日) 16:49:11
>>586
なるほど
手を出してないところだな
作ってる物がまだまだということか

参考になったよ、ありがとう
589デフォルトの名無しさんsage2010/12/26(日) 17:08:16
>>587
シャローコピーのインターフェイスはいらないんじゃないかなあ
シャローコピーってインターフェイス経由では使いようがなくね?
もしインターフェイス経由でクローン使うとしたら>>570のような状況くらいしか考えられないけど
その場合一般的に扱うならディープコピーを前提にするしかないと思う
590デフォルトの名無しさんsage2010/12/26(日) 17:15:15
そもそもクローンは一般的な操作にするには複雑すぎると思うんだよな
一部のメンバーを値型から参照型に書き換えただけで破綻するし
クローンが必要なケースごとに実装するのが無難じゃね
591デフォルトの名無しさんsage2010/12/26(日) 17:20:31
コンソールアプリのフロントエンドを作りたいんですが、
簡単な作り方とか解説されてるサイトってありませんか?
592デフォルトの名無しさんsage2010/12/26(日) 17:28:46
>>591
コンソールアプリをたたくGUI作りたいってこと?

普通はライブラリにしておいて、それを参照するコンソール版とGUI版作るけども。
そういう設計になってなくてソースコードなしのコンソールアプリしかないとかなら、
しょうがないからProcessクラス使う。
593デフォルトの名無しさんsage2010/12/26(日) 17:29:40
>>591
フォームにテキストボックスとボタンを貼る
ボタンクリックでProcess.Start()でコンソールアプリを起動する
その際テキストボックスに入力されたパラメータも一緒に指定する
594デフォルトの名無しさんsage2010/12/26(日) 17:37:35
>>592
自分の作ったものではないので、ソースコードとか無いんです

>>593
出力の取得はどうやればいいのかと思ったんですが、
Process.StandardOutputを読めばいいんですね

ありがとう
595デフォルトの名無しさんsage2010/12/26(日) 17:39:05
出力はTextWriter実装してリダイレクトするのが楽
596デフォルトの名無しさんsage2010/12/27(月) 01:20:44
>>595
どういう事?
597デフォルトの名無しさんsage2010/12/27(月) 08:42:25
そういうこと
598デフォルトの名無しさん2010/12/27(月) 11:07:53
だね
599デフォルトの名無しさんsage2010/12/27(月) 11:18:35
なるほど
600デフォルトの名無しさんsage2010/12/27(月) 11:48:48
ありがとうございました
601デフォルトの名無しさんsage2010/12/27(月) 11:57:30
どういたしまして
602デフォルトの名無しさんsage2010/12/27(月) 12:01:16
これはほんのつまらないものですが
603デフォルトの名無しさんsage2010/12/27(月) 12:50:30
あぁありがとうございます
604デフォルトの名無しさんsage2010/12/27(月) 14:40:20
つまらないものは要りません
605デフォルトの名無しさんsage2010/12/27(月) 15:14:38
おまえがつまらないんですよ
606デフォルトの名無しさんsage2010/12/27(月) 17:28:14
そんなそんな
607デフォルトの名無しさんsage2010/12/27(月) 18:00:17
>>485
お礼が遅れましたが、T4への置き換えなんとかなりました。
ありがとう!
608デフォルトの名無しさんsage2010/12/27(月) 18:21:26
どういたしまして
609デフォルトの名無しさんsage2010/12/27(月) 18:55:58
昨日のCloneの話はなかなか有意義だったのに
今日のおまいらはアホの子かとw
610デフォルトの名無しさん2010/12/27(月) 19:41:16
すみません。から、Geckoというブラウザコンポーネントを
ダウンロードしてzipファイルを解凍すると、XMLでかかれたこのコンポーネントのドキュメント見たいのがでてきたんですが、
これは、どうやればMSDNみたいなドキュメントとして読めるのでしょうか?
611デフォルトの名無しさんsage2010/12/27(月) 20:23:20
Sandcastleとか使う
612デフォルトの名無しさんsage2010/12/27(月) 22:45:20
SHFB
613デフォルトの名無しさんsage2010/12/27(月) 23:42:08
ということでした
614デフォルトの名無しさんsage2010/12/28(火) 18:39:05
こちらからは以上です。
615デフォルトの名無しさんsage2010/12/28(火) 18:52:45
TEST
616デフォルトの名無しさんsage2010/12/29(水) 15:53:25
てすと
617デフォルトの名無しさん2010/12/29(水) 19:50:08
test
618デフォルトの名無しさんsage2010/12/30(木) 16:11:25
C言語を勉強して、次はオブジェクト指向言語に挑戦しようと
C#を勉強しているのですが、まったくオブジェクト指向と言うものがまったく理解出来ません
プロパティ、メソッド、クラス?なにそれって感じです

まったく進まないので何か解決できるアドバイスをお願いします
619デフォルトの名無しさんsage2010/12/30(木) 16:13:34
>>618
デザパタでも勉強してみたら?
620デフォルトの名無しさんsage2010/12/30(木) 16:20:02
Cでも複数ファイルに分けて開発してれば自然とオブジェクト指向的になるもんなんだがな
621デフォルトの名無しさんsage2010/12/30(木) 16:22:15
自然にはならないだろ。
622デフォルトの名無しさんsage2010/12/30(木) 16:29:43
そこまで上達してなければならん
623デフォルトの名無しさんsage2010/12/30(木) 16:29:49
自然にというか、データ構造とか勉強しだすとオブジェクト指向的になるね。
624デフォルトの名無しさんsage2010/12/30(木) 16:36:29
まったく理解できないんだから,アドバイスは一つ

プログラミングはやめなさい!
625デフォルトの名無しさんsage2010/12/30(木) 16:44:04
まったく進まないってだけじゃどんな状況なのか分からない

1行も書けないのか、ビルドが通らないのか、バグが直せないのか、正常動作するけど意味が分からないのか、どんな感じなんだよ
626デフォルトの名無しさんsage2010/12/30(木) 17:00:16
プログラミングはやめなさい!
627618sage2010/12/30(木) 17:09:32
>>625
正常動作するんですけど意味がわからないんです
public class〜は関数と同じ感じなのでしょうか?
インスタンスを実体化というものは変数に代入するのとはまた違うんでしょうか?
628デフォルトの名無しさんsage2010/12/30(木) 17:09:36
C#ができなければJavaをやればいいじゃない
629デフォルトの名無しさんsage2010/12/30(木) 17:26:11
>>627
まずロジック中心に考えるのを辞めるところからだな。
データ構造の設計ありきで、それに関数が付随する。
630デフォルトの名無しさんsage2010/12/30(木) 17:34:52
Cどこまでできるのか知らないけど、Cやってると自然に
HogeHandle hHoge = CreateHoge();
Hoge_SetName(hHoge, "あ");
Hoge_Work(hHoge);
Hoge_Run(hHoge);
みたいなパターンが頻出するんだよ。これがオブジェクト指向。
これを、
Hoge hoge = new Hoge();
hoge.SetName("あ");
hoge.Work();
hoge.Run();
と書けるようにしただけ。
631デフォルトの名無しさんsage2010/12/30(木) 17:35:54
オブジェクト指向を使いこなすのは難しいと思うけど
オブジェクト指向の考え方はそんなに難しく無いだろ
そもそもプロパティ、メソッド、クラスも分からん奴が
Cのポインタとか理解できたとは到底思えん
632デフォルトの名無しさんsage2010/12/30(木) 18:03:56
JavaやC#, C++あたりを使ってる現場でも、ひどいコードが氾濫してるのに
非オブジェクト指向言語でも使ってれば自然にオブジェクト指向っぽい
コードになるとかないよ。
633デフォルトの名無しさんsage2010/12/30(木) 18:08:50
C#はコンポーネント指向って感じがするけどね
634デフォルトの名無しさんsage2010/12/30(木) 18:12:32
>>633
いや、そんな感じはしないけど。
635デフォルトの名無しさんsage2010/12/30(木) 18:21:31
>>634
ヘルスバーグが泣くぞw
636デフォルトの名無しさんsage2010/12/30(木) 18:33:01
C#はコンポーネント指向だから、ひどいコードが氾濫してたのか。
637デフォルトの名無しさんsage2010/12/30(木) 19:33:30
ひどいコードが氾濫してる所は誰かの頭が固いんだよ
638デフォルトの名無しさんsage2010/12/30(木) 19:40:53
オブジェクト指向とコンポーネント指向って相反するものじゃないだろ
コンポーネント指向をオブジェクト指向で実装してるんだよ
639デフォルトの名無しさんsage2010/12/30(木) 19:52:07
1行目は分かるけど2行目は何なの?
640デフォルトの名無しさんsage2010/12/30(木) 19:57:21
C#は、オブジェクト指向的では無い機能も積極的に取り入れてる感は有る。
C++程のマルチパラダイムぶりでは無いけれども。
641デフォルトの名無しさんsage2010/12/30(木) 20:02:18
C#はイベントの実装にJavaみたいにObserver使わずに
デリゲート使ってるからオブジェクト指向じゃないとかいうのは無意味
結局Observerだってオブジェクト指向じゃ自然に作れないものをトリッキーな形で実現してるだけ
642デフォルトの名無しさんsage2010/12/30(木) 20:02:38
>>627
>public class〜は関数と同じ感じなのでしょうか?
Cから入ったなら、構造体 (struct) と似た様なもんだと考えた方が解り易そうな。
(C#にも構造体は有ってCとは相当別物だけど、その辺りはややこしいので置いておく)

Cの構造体は、大雑把には 「データ」 の集合を表現する物だけれども
「データの集合」 に 「自分が持ってるデータを処理する関数」 をくっ付けた物がクラス、というか何というか。

何なら、 「関数ポインタをメンバ変数に持った構造体」 でも良い。
(実態はかなり違う物だけれども、とっかかりとしては)
643デフォルトの名無しさんsage2010/12/30(木) 20:04:49
パラダイムにまで宗教家がいるからこういう論争を生む
どうでもいいんだよ書き易ければな
644デフォルトの名無しさんsage2010/12/30(木) 20:08:22
Cに習熟していれば自然にオブジェクト指向になるとまではいえないけど、
Cでオブジェクト指向的なプログラミングをすることはたしかに少なくないよ。
そこまでするなら素直にC++とかJavaとか使えよ、とか思うけども。
645デフォルトの名無しさんsage2010/12/30(木) 20:14:46
再入可能にしようと思ったら勝手にオブジェクト指向になるよ
状態を構造体にまとめて第一引数に渡す形になる
646デフォルトの名無しさんsage2010/12/30(木) 20:49:04
初級から抜けだせない。
家で勉強しようとしてんだが何すればいいのかわからない
上級者は家でも常にプログラムしてるらしいが何のプログラム組んでんだ
ゆとりの俺にアドバイスしてくれる猛者はいないか
647デフォルトの名無しさんsage2010/12/30(木) 20:55:23
他の言語やれば?
なかなか一つの言語だけじゃオブジェクト指向とかちゃんと理解できないよ
648デフォルトの名無しさんsage2010/12/30(木) 21:30:07
>>646
なにかツール的なものを作ってみるとか。画像編集ツールだったり関数電卓だったり。
車輪の再発明になってしまうものばかりだけど、自分流の作ればその後役に立ったりすることもあるしね。
649デフォルトの名無しさんsage2010/12/30(木) 22:07:51
>>648
ローカルアプリからwebまで広く勉強できる2ch専用ブラウザがいいかもね
オープンソースで公開されてるのもいくつかあるし
650デフォルトの名無しさんsage2010/12/30(木) 23:11:04
>>648
おれはVisualStudio見たいにMDIウインドウを任意にドッキングできるライブラリで、
自前の専ブラ書こうとしてる。まだ何もやってないけどね。
ついでに思うんだが、専ブラで板一覧とかお気に入りのスレ一覧がVisualStudio風に
ドッキングしつつ任意の場所に配置できたらさぞかし便利そうだとか思わないか?
C言語でしか実現できない要素なんてなさそうだし、今まさにV2C使ってるがJaneとか
と比べて遅いと感じない。Javaで作れるWindowsアプリなら、C#ならより良く実現できる
と思うんだ。
651デフォルトの名無しさんsage2010/12/30(木) 23:22:56
>>650
ドッキングもなにもインスタンスさえ把握してればどのコントロールの子に張り替えるかだけだよ
652デフォルトの名無しさん2010/12/31(金) 00:36:44
twintailとかいう2chブラウザ昔あったよね?
あれどうなったの?
あれを逆コンパイルしてだれか新しいの作ればいいのに。
WPFとか使って。
653デフォルトの名無しさんsage2010/12/31(金) 00:38:44
WinFormsで作られたアプリってたいてい全体がUIべったりで移植性ゼロ
654デフォルトの名無しさんsage2010/12/31(金) 00:43:35
逆コンパイルっつーかソース配ってるだろ
今も
655デフォルトの名無しさんsage2010/12/31(金) 00:47:56
それはVSが悪い
VSでプログラム覚えたらFormにコード書くのが普通だと思い込んじゃうんだよなぁ
656デフォルトの名無しさんsage2010/12/31(金) 00:51:47
ダイアログ単位でカプセル化できちゃうからUIとロジックごちゃまぜでも大して問題にならないんだよな
657デフォルトの名無しさんsage2010/12/31(金) 00:51:51
次はProgram.csに書こうとするんだな
658デフォルトの名無しさんsage2010/12/31(金) 00:55:42
次は Program.cs 削除だろ
よく見るけど。
659デフォルトの名無しさんsage2010/12/31(金) 00:56:13
VSてかM$式は、基本パーツ単位で物事考えるきらいがある
それはそれである程度正しいと思うが、パーツ間通信が分かりやすい形で用意されてない
そこんとこはなんとかしてほしい
660デフォルトの名無しさんsage2010/12/31(金) 01:02:23
コードからUML自動生成みたいなの欲しい
661デフォルトの名無しさんsage2010/12/31(金) 01:03:57
WPFの公式サンプルはMVVM+DIとか
別次元の訳のわからんことになってるよ
662デフォルトの名無しさんsage2010/12/31(金) 01:16:07
ダイアログはダイアログ単位で扱えるからいいけど
メインフォームとメインコードが融合してると保守がめんどくさい
663デフォルトの名無しさんsage2010/12/31(金) 01:24:33
分離してあっても今度は逆にロジックがテキストボックスを直接操作してたりする
664デフォルトの名無しさんsage2010/12/31(金) 01:26:02
>>660
http://www.borland.com/jp/products/together/
665デフォルトの名無しさんsage2010/12/31(金) 01:28:33
>>663
あるある
MVCとか本読まないと載ってないから適当に作ってた頃はそうなった
間にコントローラー挟むなんて発想は独学じゃなかなか身につかないよね
666デフォルトの名無しさんsage2010/12/31(金) 01:47:49
MVCかどうかはともかく、UIに依存する(C#で言えばフォームやコントロールの
参照を別の何かが握ってるような)コードがマズいのは普通は何とく直感的に
分かるものだと思うけど。

少なくとも俺はそうだった。
667デフォルトの名無しさんsage2010/12/31(金) 02:07:22
>>666
私も経験でそう感じたクチだ。
MFCの時代から、ロジックとUIの分離に拘ったが、
やはりそのためのインフラから作らねばならないのが非常に面倒だった。
668デフォルトの名無しさんsage2010/12/31(金) 08:03:58
バックグラウンドで、つまり最小化した状態で、
スクリーンショットを取ることは可能なのでしょうか。
教えていただけませんか。よろしくお願いします。
669デフォルトの名無しさんsage2010/12/31(金) 08:35:22
可能です
670デフォルトの名無しさんsage2010/12/31(金) 08:43:09
>>669
方法を教えてください。
アクティブウィンドウによる取得は考えていません(ALT+printsreec)。
671デフォルトの名無しさんsage2010/12/31(金) 08:57:13
>>670
windowsXPってオフスクリーンバッファもってたっけ?
Aero搭載のOSは仕組み上確かオフスクリーンバッファでウインドウを持ってたはずだけどさ
672671sage2010/12/31(金) 09:06:28
今調べたら丁度いいのがあったわ
http://okwave.jp/qa/q5439510.html

Bitmap myBmp = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(myBmp, new Rectangle(0, 0, this.Width, this.Height));
Clipboard.SetDataObject(myBmp, false);

これでいけるね
673デフォルトの名無しさんsage2010/12/31(金) 10:40:13
>>670
http://dobon.net/vb/dotnet/graphics/screencapture.html
674デフォルトの名無しさんsage2011/01/01(土) 22:23:30
>>666-667
分離しにくくね?
フォームを継承させて作ってる構造and適切なメッセージがきた瞬間にしか活きてない値(and動かない処理)がある
からか弄ろうとしたらコントロールの内部に潜り込む必要がある
のに、別のクラスにして強引に分離しようとするとデリゲートとか呼びまくらないといけなくなる
で、デリゲートって大抵そのクラス専用なわけで「あれ?これ分離とはほど遠くね?」って感じで結局分離できてなかったり・・・
ってことよくない?
675デフォルトの名無しさんsage2011/01/01(土) 22:50:23
ちょっと勘違いしてるよ。そういうのはビューの一部だから分離しなくていい。たとえばメールソフトなら、
private void SendButtonClick(略) {
var mail = new Mail();
mail.Content = textBox1.Text;
mail.Address = textBox2.Text;
mail.Send();
}
これがビューとモデル(Mail)の分離。MailクラスはUIに依存しないでしょ。
イベントハンドラはビューの一部だからコントロールを自由に触っていい。
676デフォルトの名無しさんsage2011/01/01(土) 22:55:06
それは分け方がおかしいだけのようなw
677 【590円】 【ぴょん吉】 sage2011/01/01(土) 23:04:19
明けましておめでとう
おまえら今年も何でも聞いてくれ
678デフォルトの名無しさんsage2011/01/02(日) 01:40:40
>>675
それだとあとでViewだけ取り替えたい時大変だけどね
679デフォルトの名無しさんsage2011/01/02(日) 03:58:52
というかMVCではないな
ビューとロジックの分離という文脈の上の話ならわかるけど
680デフォルトの名無しさんsage2011/01/02(日) 04:12:17
Viewが交換可能なMVCの場合はViewにViewインターフェイスを実装して、
ControllerからViewインターフェイスとModelを使うという考えで合ってる?
681デフォルトの名無しさんsage2011/01/02(日) 12:18:02
CからVに通知するときはインターフェイス使うしかないけど
Modelのプロパティをテキストボックスに表示するのはViewの仕事だよ
ViewのプロパティをぜんぶインターフェイスでControllerに公開してしまって
ViewをすっからかんにするとMVPになる
682デフォルトの名無しさんsage2011/01/02(日) 12:26:06
質問ですが、MVCとかそこら辺の知識をお前様達は一体どうやって身につけましたか?
683デフォルトの名無しさんsage2011/01/02(日) 12:39:53
C#での構造体に関する質問です。

構造体の要素数を数えた上で、
構造体に設定した内容をfor文でまわして
コンボボックスなどに設定したいのですが、
構造体の要素数と構造体の要素数文まわして、
構造体の一番上の要素から値をとって設定する。
という作業はどのようなコードで可能ですか。
684デフォルトの名無しさんsage2011/01/02(日) 12:45:36
>>682
大抵はJ2EEじゃないか?一昔前にEJBを崇拝すると極楽浄土に
いけるという謎の新興宗教がIT業界で流行ってたし。
685デフォルトの名無しさんsage2011/01/02(日) 13:01:51
>>683
リフレクション、TypeクラスのGetMembers()など
686デフォルトの名無しさんsage2011/01/02(日) 13:22:06
>>684
なるほど…。
それから察するに、C#界隈はJavaから流れ着いた人が多いって噂は本当っぽいですね。
自分は非情報系→C言語→.Netと来たので、皆さんがどこで技術を身につけてきたか今一分かりませんでした。
ありがとうございます。
687デフォルトの名無しさんsage2011/01/02(日) 16:56:44
MVCとかオブジェクト指向の本や記事を読んでれば自然に目にするだろ。
688デフォルトの名無しさんsage2011/01/02(日) 18:19:35
俺はCakePHPの案件に放り込まれてMVC勉強したわ
689デフォルトの名無しさんsage2011/01/02(日) 19:17:10
MVCのために、いまさらながらservlet本読んでるわ・・・
690デフォルトの名無しさんsage2011/01/02(日) 19:24:40
オブジェクト指向のオススメ本とかあります?
691デフォルトの名無しさんsage2011/01/02(日) 19:53:41
>>690
増補改訂版Java言語で学ぶデザインパターン入門(結城 浩)
http://www.hyuki.com/dp/

オブジェクト指向の良さがわかる本だと思います。4〜5年前に
買った本だけど、今調べたらその後「増補改訂版」が出てますね。
692デフォルトの名無しさんsage2011/01/02(日) 20:12:03
Javaではクラスをパズルのように組み合わせたりしたけど、C#ではあまりしないな
継承自体使う機会が減った
693デフォルトの名無しさんsage2011/01/02(日) 20:32:21
継承が余程適切な場合を除いて、インターフェース使う事の方が多いもんなあ
694デフォルトの名無しさんsage2011/01/02(日) 20:44:14
機能を拡張するために継承を使ってはいけないっていうのも眼から鱗だった
695デフォルトの名無しさんsage2011/01/02(日) 21:15:44
既存のコードを再利用するには継承を使わないといけないと信じてる人いるよね
再利用に継承は必要ないし、むしろ継承すると派生クラスの再利用性は下がる
696デフォルトの名無しさんsage2011/01/02(日) 21:29:23
>>691 みたいな古臭いものじゃない、C#らしいデザインパターンの本出して欲しいな。
697デフォルトの名無しさんsage2011/01/02(日) 21:37:06
>>696
それやろうとしたけど、ただの言語仕様でパターンって感じにならなかったw
698デフォルトの名無しさんsage2011/01/02(日) 23:06:29
・VC# 2008 Pro

GridViewの並び替えについて質問です。
画像リンクを添付しているので一緒にご覧下さい。

右中央のdataGridView1にアイテムがある時、
赤く塗ってある「1つ上へ(button7)」や「1つ下へ(button8)」をクリックしたら順番を入れ替えられるようにしたいのですがうまくできません。
更にアイテムをD&Dでも並び替えできるようにもしたいのですがやり方教えていただけませんでしょうか。

ttp://uproda.2ch-library.com/329017H7m/lib329017.png
699デフォルトの名無しさんsage2011/01/02(日) 23:48:09
>>698
>赤く塗ってある「1つ上へ(button7)」や「1つ下へ(button8)」をクリックしたら順番を入れ替えられるようにしたいのですがうまくできません。
具体的に何がどう上手くいかないの?

>更にアイテムをD&Dでも並び替えできるようにもしたいのですがやり方教えていただけませんでしょうか。
検索すれば沢山見つかる。それを試してから出直してこい。
700デフォルトの名無しさんsage2011/01/02(日) 23:52:01
>>698
表示するデータを行ごとにListにでも入れといてボタンが押されたら
リストの順番を入れ替 -> グリッドに表示
でできる。

D&Dはこの辺でできる。
[DataGridViewのドラッグ&ドロップでデータ(行)を移動させたい]
ttp://social.msdn.microsoft.com/forums/ja-JP/csharpgeneralja/thread/e59a4043-6298-4653-809f-5c8fcf04f2e6
701デフォルトの名無しさんsage2011/01/03(月) 11:41:20
UMLで書いたクラス図から自動でコード生成してくれるソフトを探してるんですが、
Visio以外というか、フリーでそんなものはありますか?
出来ればWindowsで動くと嬉しいです
702デフォルトの名無しさんsage2011/01/03(月) 12:25:51
VSのクラスダイアグラム
703デフォルトの名無しさんsage2011/01/03(月) 14:30:51
astah
704デフォルトの名無しさんsage2011/01/03(月) 15:26:08
Visual Studio 2008(または2010、ともにPro) C#での質問です。
質問内容はコメントに関するものです。
たとえば、以下のサンプルのようなコードとコメントを書きました。
これは意図的に、コメント内のexceptionが実装と一致していない例ですが、これをコンパイル時や実行前に警告してくれるツールはないでしょうか。
また、忘れや、以下の処理で言うと、new FileStreamなどで発生するexceptionの記述漏れなどもフォローしてくれるツールがほしいです。
ご存知の方、よろしくお願いいたします。


///
/// ファイルから適当なもん読み込む。
///

///
///
///
public object Read(string fileName)
{
if (string.IsNullOrEmpty(fileName))
{
throw new InvalidOperationException("fileName");
}
using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
//適当な処理
}
}
705デフォルトの名無しさんsage2011/01/03(月) 16:39:34
>>702
有料じゃないか・・・
706デフォルトの名無しさん2011/01/03(月) 16:43:13
フリーでそんな物があると思ってる方が・・・・

というか自分で作れよ

図形を元にクラスのコードをアウトプットするのならそれほど難しくねーだろ

すでにあるコードを解析して図にするとなると面倒だが
707デフォルトの名無しさんsage2011/01/03(月) 16:48:13
CodeDomとか使ってお手軽に作れないものかな
708デフォルトの名無しさんsage2011/01/03(月) 16:56:39
CodeDOMは面倒だよ
C#のコード吐くだけならTextReader.WriteやT4でベターっと生成したほうがずっと手軽
CodeDOMはC#とVB両対応したい場合とかに使う
709デフォルトの名無しさんsage2011/01/03(月) 16:56:51
>>705
そういや Express 版にはクラスダイアグラムないんだな。
710デフォルトの名無しさんsage2011/01/03(月) 16:59:28
>>708
いや、CodeDOMを使ってソースコードからUML図作れないかなと思って
711デフォルトの名無しさんsage2011/01/03(月) 17:01:49
残念ながらCodeDOMにはパーサーは付いてない
それにUML作るだけだったらリフレクションでメンバ名と型を調べるだけで十分
712デフォルトの名無しさん2011/01/03(月) 17:14:52
>>709
それがいわゆる差別化だろうw
無料であそこまでのIDEが使えるだけでもかなりの物だ
第一オブジェクト指向やるなら脳内であれくらいの図は頭に描けないと・・・

仕事で資料として図が居るとかなら買えって話だ
713デフォルトの名無しさんsage2011/01/03(月) 17:17:13
>>711
パーサーないんだ・・・・
たしかにリフレクションでクラス構造調べてUMLに変換はそんなに難しくなさそう
.net用の実行ファイル⇔UMLのフリーツールくらいありそうなもんだけど
714デフォルトの名無しさんsage2011/01/03(月) 20:57:35
UML書く必要性を感じない
715デフォルトの名無しさんsage2011/01/03(月) 21:17:54
>>714
それだとクラスを設計したとして、どうやって他の人に説明するんだ?
それこそ毎回コードレビューするとかだったら面倒くさすぎる
716デフォルトの名無しさんsage2011/01/03(月) 21:22:08
>>715
仕事で使うならツール買えるだろw
個人でやる上ではいらないツール
717デフォルトの名無しさんsage2011/01/03(月) 21:29:35
718デフォルトの名無しさんsage2011/01/03(月) 21:31:27
>>716
UMLをツールだと思ってるの?
どういう意味?
719デフォルトの名無しさんsage2011/01/03(月) 21:37:02
716じゃないけど、UMLを手書きはしないだろう
おまけにUML自身も説明ツールとかコミュニケーションツールと言ってもまあ妥当かと。
720デフォルトの名無しさんsage2011/01/03(月) 21:38:03
図だけどそのままクラスにも落とし込めるしツールで作るだろ?って話
だから開発ツール=UML作成ツールともいえるのでUML書くことで悩む必要性がないと思うが・・・
721デフォルトの名無しさんsage2011/01/03(月) 21:39:26
Expressとかタダで・・・みたいな人はそりゃUML作るのにコードとの連携が取れないので
手書きか別ツールで別途作成だろうけどさw

上位版買えば一発だし・・・
722デフォルトの名無しさんsage2011/01/03(月) 21:44:45
クラス図くらいならExcelでも簡単に作れるじゃない
そんなツールに拘らなくてもいいと思うけど
723デフォルトの名無しさんsage2011/01/03(月) 21:50:44
>図だけどそのままクラスにも落とし込めるしツールで作るだろ?
ないないw
724デフォルトの名無しさんsage2011/01/03(月) 22:05:58
UML書かないと説明できないような設計はちょっとね・・・
725デフォルトの名無しさんsage2011/01/03(月) 22:16:32
UMLに起こせないようなスパゲッティコードの愛好家を
隔離できるのがいいんだよ
726デフォルトの名無しさん2011/01/03(月) 22:21:20
クラスを使っていけばスパゲティってかけなくね?
まあメソッドの中でぐだぐだコード書いていけば別だがw
727デフォルトの名無しさんsage2011/01/03(月) 22:22:10
クラス図の話でしょ?
数千行のExecuteメソッドが一個だけあるような糞スパゲッティの方が
クラス図はシンプルになるでしょ
728デフォルトの名無しさんsage2011/01/03(月) 22:22:11
他クラスにまたがるスパゲッティってのもあるとおもう。
729デフォルトの名無しさん2011/01/03(月) 22:23:13
>>728
>他クラスにまたがるスパゲッティってのもあるとおもう。
あるかなあ・・・
730デフォルトの名無しさんsage2011/01/03(月) 22:24:32
あったとしてもさすがにクラス図に起こせないってことはないだろ
中がどうなってようとメンバの宣言だけで静的に決まるんだから
731デフォルトの名無しさんsage2011/01/03(月) 22:26:25
正しくカプセル化されていればスパゲッティにはなり難いだろうな
馬鹿みたいに集約じゃなく継承しまくってるようなクラスは
それらをまとめてスパゲッティと見なしていいと思うけど
732デフォルトの名無しさんsage2011/01/03(月) 22:39:34
クラス図は自己満足の為にある
733デフォルトの名無しさん2011/01/03(月) 22:42:24
>>732
でもある程度ごりごり書いたソースをたまーに全体図で眺めてみたくなることもある
734デフォルトの名無しさんsage2011/01/03(月) 22:54:59
クラスビューかオブジェクトブラウザの方がコンパクトで見やすいような気もしますが
735デフォルトの名無しさんsage2011/01/03(月) 22:55:06
C#で1メソッド数百行。
戯れに保守容易性インデックスを測ってみたら0点(⇒ これな、http://msdn.microsoft.com/ja-jp/library/bb385914.aspx

そんな時って、何をすりゃいいのよ。クラス図の一つも書きたくなろうて。
もちろん、んな気の利いたもんはどこにもねーぞ
736デフォルトの名無しさんsage2011/01/03(月) 23:00:18
DIやれば?
最近のMSのアプリケーションサンプルはDIばっかりだからきっと点数上がるよ
737デフォルトの名無しさんsage2011/01/03(月) 23:12:29
>>732
幸せなPG少年
738デフォルトの名無しさんsage2011/01/03(月) 23:18:43
クラス図は顧客に仕様変更を思いとどまらせたり、ロックインを覚悟させるためのコミュニケーションツールだよ
739735sage2011/01/03(月) 23:44:48
>>736
確かに名案だ。


もしよかったら他の人にも聞いてみたい。
ダメダメなソースコードを見たときに何をするべきか。
よい意見があったら、教えてほしい。
740デフォルトの名無しさんsage2011/01/03(月) 23:51:02
>>739
ダメさの方向性もいろいろでは?
741デフォルトの名無しさんsage2011/01/03(月) 23:56:41
相手の書いたコードを尊重して放置
大人は責任の所在を考えるもの
742デフォルトの名無しさんsage2011/01/04(火) 00:15:38
>>739
今後も自分が保守を担当し続けるならリファクタリングを検討
それ以外なら放置(触るな危険)
743デフォルトの名無しさんsage2011/01/04(火) 00:31:37
>>742
だから、 あのー、 その リファクタリングの話をしてるのですが−、
あー、 おわかりに なりません でしょうかー、
744デフォルトの名無しさんsage2011/01/04(火) 00:36:15
>>739,743
それはプロジェクト全体で駄目駄目な場合?
それとも、クラス単位やメソッド単位でリファクタリングする場合の話?
745デフォルトの名無しさんsage2011/01/04(火) 00:46:03
>>743
お前が具体的に書くべきだろ
> ダメダメなソースコード
お前のいうダメダメってのはなんだよ?
> よい意見があったら、教えてほしい。
どこにリファクタリングについて求めてんだよ?
746デフォルトの名無しさんsage2011/01/04(火) 00:50:31
それFFみたいなゲームを作りたいけどどうしたら良いですか?並に無茶な質問だって気づけよ
747735sage2011/01/04(火) 01:22:23
>>740
すまない、その通りだ。
とりあえず具体化できるところまで考えてみてから質問するわ。

あと、735≠743なので。
748デフォルトの名無しさんsage2011/01/04(火) 01:43:23
ListクラスにForEach()メソッドがあるのですが、
IEnumerableにはForEachのようなメソッドはないのでしょうか?
749デフォルトの名無しさんsage2011/01/04(火) 01:53:23
無限に列挙するタイプのIEnumerableとかどうすんのさ
自分で適当に拡張メソッド書いとけ
750デフォルトの名無しさんsage2011/01/04(火) 01:54:47
static class Extension {
  static public void ForEach(this IEnumerable collection, Action action){
    foreach(var x in collection) action(x);
  }
}
751デフォルトの名無しさんsage2011/01/04(火) 01:55:12
自作するって言っても、this IEnumerable, Funcを引数にしてforeachで回すだけだしな。
752デフォルトの名無しさんsage2011/01/04(火) 02:02:08
>>749
無限に列挙するタイプだとCount()とかもやばくないですかね

>>750,751
ありがとうございました。参考にして自作したいと思います
753デフォルトの名無しさんsage2011/01/04(火) 02:22:40
>>748
副作用起こすタイプのメソッドは標準に入れたくなかったみたい。
754デフォルトの名無しさんsage2011/01/04(火) 05:10:33
>>753
副作用ってどういうこと?
755デフォルトの名無しさんsage2011/01/04(火) 05:29:09
例外を投げること
列挙中に例外が発生するのを嫌った。
こう言う副作用ありのものは foreach 文で処理するのが LINQ

だったはず
756デフォルトの名無しさんsage2011/01/04(火) 06:48:38
いまいちよくわからないんだけど、例外はラムダ式受け取るメソッドなら発生するような・・・
757デフォルトの名無しさんsage2011/01/04(火) 08:56:20
ForEachは要素数が変わるのを許さないだろ?
758デフォルトの名無しさんsage2011/01/04(火) 10:07:16
>>754
LINQ がある今、foreachとかForEach()で受けるってのがどういうことかというと、
Console.Write したりファイルに書きだしたりに使うはずなのね。

Console.Write とかファイル書き出しって、システムに対して何か状態変化起こすわけで。
状態変化起こすことを副作用っていう。

状態変化起こす場合、並列処理すると普通は lock 書けなきゃいけないし。
Console クラスはスレッドセーフに作ってあるらしいけども。
759デフォルトの名無しさんsage2011/01/05(水) 03:24:10
xhtmlを生成したい時ってXmlWriterとXDocumentどっち使います?
760デフォルトの名無しさんsage2011/01/05(水) 03:51:05
俺はXDocumentのほうが好き
761デフォルトの名無しさんsage2011/01/05(水) 09:06:39
俺も>>760
762デフォルトの名無しさんsage2011/01/05(水) 16:04:07
ありがとうございました、XDocument調べてみます
763デフォルトの名無しさんsage2011/01/06(木) 06:49:18
ニコニコ生放送のコメントをAPIを使って取得するにはどうすればいいのでしょうか?
ttp://www.asterios.biz/softwareNikoInfo.html
上記の公開されているソースを使って試しているのですが、クラスをフォームへ呼び出すのでしょうか?
それともクラスにフォームを呼び出すのでしょうか?

フォームにて行う動作は「TextBoxにニコニコ生放送のURLを入力→OKボタンを押す」と呼び出せる、
または呼び出されるようにしたいのですがどなたか教えていただけませんでしょうか?
お願いいたします。
764デフォルトの名無しさん2011/01/06(木) 07:10:12
何で悩むのかよくわからんがそのクラスを使ってインスタンス作って
メソッド呼び出せば取得できると思うんだけどw
765デフォルトの名無しさんsage2011/01/06(木) 11:50:10
やりたいことがあるのはよいことだw
766デフォルトの名無しさんsage2011/01/06(木) 11:55:31
そしてドヤ顔で作ってみた動画をうp と
767デフォルトの名無しさん2011/01/06(木) 13:08:25
つまり>>763のサイトの主に

そのクラスを使ったサンプルコードくらい書いとけや!!

ということですね
768デフォルトの名無しさんsage2011/01/06(木) 13:09:46
>>763
のソースなんか古い書き方だな
769デフォルトの名無しさんsage2011/01/06(木) 13:26:35
じゃあ新しい書き方で書いてみれば。無理なの知ってるけど
770デフォルトの名無しさんsage2011/01/06(木) 13:30:13
煽っても無料じゃ書かないよ。
771デフォルトの名無しさんsage2011/01/06(木) 13:33:26
グリー「無料です」
モバゲー「無料です」
スレ「無料です」

基本無料3兄弟

772デフォルトの名無しさんsage2011/01/06(木) 13:35:41
グリー「無料です」
モバゲー「無料です」
スレ「無料です」

>>769「無理です」 ←New!!
773デフォルトの名無しさんsage2011/01/06(木) 13:47:30
ちょっと疑問
Control.Invoke()を複数スレッドから同時に呼んだ場合ってどうなるんだろう
InvokeはUIスレッドのみで動くんだから、暗黙的に排他になる?
もしそうならlock要らずになるんだけど、そんなこと書いてるサイトどこにもないし
774デフォルトの名無しさんsage2011/01/06(木) 13:58:11
そりゃあUIスレッドは一個なんだから排他になるよ
775デフォルトの名無しさんsage2011/01/06(木) 18:12:49
論理的に考えればそうなるが、それにしてはそういうやり方してるとこにお目にかからないのが気になる
ロックよりコスト掛かるとか?
776デフォルトの名無しさんsage2011/01/06(木) 18:45:16
そういうやり方って何?
ロックの代わりにわざわざInvoke使うとか言うわけ?
777デフォルトの名無しさん2011/01/06(木) 19:12:33
マネージドな12bitのJPEGを読み込めるライブラリないですか?
C++をラップしたアンマネージドなヤツはJPEG公式サイトで発見したんですが。
778デフォルトの名無しさんsage2011/01/06(木) 19:26:01
複数のスレッドが画面に直接アクセスするのが汚いから少ないだけでしょ。
暗黙的な排他とかはどうでもよくて、InvokeはスレッドセーフとMSDNに書かれて
いるんだからlockが要るわけがない。
779デフォルトの名無しさんsage2011/01/06(木) 23:03:09
>>773
あれはメッセージポンプって仕組みで、Invoke されたデリゲートは、
一度キューに溜められて、1個1個取り出して実行される。

書きかけだけど↓この辺りをどうぞ(WPF で書いてあるけど基本原理は一緒)。
http://ufcpp.net/study/csharp/misc_uithread.html

>>777
.NET 3.0 以降入った JpegBitmapDecoder とか WmpBitmapDecoder でも読めないのかな?
780デフォルトの名無しさんsage2011/01/06(木) 23:38:32
JpegBitmapDecoderとかもアンマネージコードのラッパーだよ
System.Drawingもそうだし、グラフィック関連でpureマネージドなライブラリってほとんど無いと思う
781デフォルトの名無しさんsage2011/01/06(木) 23:57:32
>>780
内部実装の問題じゃなくて、C# で書いててネイティブ意識するかどうかの問題じゃない?
COM ラッパーとかだと ref Type.Missing 地獄になるような、あのキモさがなければ。
7827772011/01/07(金) 00:18:15
まず何をやってるかと言うとWinFormsアプリをSilverlightに移植してるのです。

WinFormsアプリだと、拾ってきたCのライブラリをC++/CLIでラップして
逃げていたのですが、Silverlightだと100%ピュアなコードで置き換えねば
ならないようで開発が止まってしまいました。

以前、C#でSQLiteを書き直した人がニュースになっていましたが、
同様の手法が必要になってきてしまいました。
783デフォルトの名無しさんsage2011/01/07(金) 00:28:49
サーバーサイドで変換して送れば
784デフォルトの名無しさん2011/01/07(金) 01:44:04
Silverlightってその12bitのjpegを標準のクラスとかで扱えないの?
785デフォルトの名無しさんsage2011/01/07(金) 07:57:22
64ビットで動かしたいからマネージにこだわってるんでないの?
32ビット版と32ビット版のラッパーを両方入手すればおk
786デフォルトの名無しさんsage2011/01/07(金) 08:30:58
void sendStr(string str)
{
strSend = str;
th = new Thread(new ThreadStart(WriteString));
th.IsBackground = true;
th.Start();
}

void WriteString()
{
//swはStreamWriterです
sw.WriteLine(strSend);
}
クリックするたびにこんな感じで文字列を送信するプログラムを書いたんですが
1クリックに複数回上記のsendStr関数を呼び出すと立てたはずのスレッドが実行されていません

なんか解決策はないでしょうか?
787!dama !omikujisage2011/01/07(金) 08:57:48
>>782
作ってやるよ
とりあえずそのライブラリとサンプル画像くれ
788デフォルトの名無しさん2011/01/07(金) 09:42:53
JPEGは各色8bitで非可逆圧縮だと一般には認知されているしな。

12bitや16bit、可逆圧縮(LS)などのクソマイナーな仕様は
一般には知られてないので実装も皆無。くそ真面目に標準で
それらに対応しているのはJava(JDK1.4〜)くらいなもん。
そのJavaもAndroidでは無駄と判断され削除されるくらいマイナー。
789デフォルトの名無しさん2011/01/07(金) 10:59:16
>>787
お願いします。
http://cid-06f79ee363c87899.office.live.com/self.aspx/Public/jpeg^_8bit^_12bit^_16bit^_source^_110107a.zip
790デフォルトの名無しさんsage2011/01/07(金) 11:02:11
>>789
本名?
ちょっと普通に本垢ぽくてワロタ
791デフォルトの名無しさんsage2011/01/07(金) 11:05:27
libjpeg移植すんの?w
逃げるなよ>>787
792デフォルトの名無しさん2011/01/07(金) 12:06:43
なんかこの際サポートしない勇気みたいなのも必要だなw
なんでもかんでもサポートすればいいってもんじゃないし
793デフォルトの名無しさんsage2011/01/07(金) 13:02:39
青木純とかいい名前じゃないか
794デフォルトの名無しさんsage2011/01/07(金) 13:38:09
Silverlight4でWindows + out of browser + elevated permission 限定でいいなら
COM経由でネイティブコード呼べるよ
Silverlight5では外部のプロセス起動したりPInvokeができるようになったりするらしいけど
795デフォルトの名無しさんsage2011/01/07(金) 13:39:14
sl5すげぇなおい・・・・
796デフォルトの名無しさんsage2011/01/07(金) 13:42:47
>外部のプロセス起動したり
これはブラウザのプラグインなのにいいのか?
797デフォルトの名無しさんsage2011/01/07(金) 13:45:42
だから Windows + ブラウザ外実行 + 権限昇格モード 限定
どっちかというとClickOnceみたいなもん
Silverlight4でもCOM通せばプロセス起動できるけど直接サポートされる予定
他にもウィンドウを複数表示できるようになったりするらしい
798デフォルトの名無しさんsage2011/01/07(金) 13:50:13
正直それってWPFだよね
799デフォルトの名無しさんsage2011/01/07(金) 13:55:47
まあWPFがSLに吸収されるからね
800デフォルトの名無しさんsage2011/01/07(金) 13:57:28
WPF並の性能でるの?
801デフォルトの名無しさんsage2011/01/07(金) 14:09:45
性能が必要ならWPF使えばいい
802デフォルトの名無しさんsage2011/01/07(金) 14:24:20
なんで劣ってるSLに吸収されるの?
803デフォルトの名無しさんsage2011/01/07(金) 14:25:53
別にフルセットの.NETを潰そうとしてるんじゃなくて、現在ClickOnceが使われてるような用途を取り込もうとしてるんだよね
サーバーと通信できてフォームがあって印刷できてOffice操作もできたらたいがい十分なんだから
それだけに特化した最小限の.NETを目指してる
804デフォルトの名無しさんsage2011/01/07(金) 14:27:25
>>802
ネイティブアプリよりブラウザ関連のアプリの時代だからな
効率を犠牲にしても利用者にとってお手軽な方を重視する
8057772011/01/07(金) 14:38:38
>>794
残念ながらターゲットは Silverlight4 (Windows Phone 7) です。
806デフォルトの名無しさんsage2011/01/07(金) 14:40:27
>>805
モバイルならなおさらサポートしないという決断も必要だよ
8077772011/01/07(金) 14:44:50
>>806
無理です
808デフォルトの名無しさんsage2011/01/07(金) 14:49:36
そこまでこだわる理由がわからん
8097772011/01/07(金) 14:54:16
>>808
画像ビューアが画像表示できないとか冗談にもならないのです
810デフォルトの名無しさんsage2011/01/07(金) 14:59:28
こだわりがあってどうしても必要だけど無いなら自作
libjpegあるんだし解析して12bit部分だけでも取り出すとかさw
811デフォルトの名無しさんsage2011/01/07(金) 15:07:21
C#捨ててJava使えば解決するな。
812デフォルトの名無しさんsage2011/01/07(金) 15:15:45
Silverlightで表示できない画像フォーマットなんて12bitJPEG以外にも
GIFとかBMPとかTIFFとかよく使われるのが沢山あるだろ
優先順位がおかしい
813デフォルトの名無しさんsage2011/01/07(金) 15:17:03
まあそのうちデフォで使えるようになるんじゃね
814デフォルトの名無しさんsage2011/01/07(金) 15:18:49
ないない
Silverlightは「サーバーでやれ」が基本
ましてそんなマイナーな形式
815デフォルトの名無しさんsage2011/01/07(金) 15:19:22
ttp://imagingsolution.blog107.fc2.com/blog-entry-45.html

このページ見たらやったことないけどC#でも結構楽勝でいけると思うなぁ…とかオモタ
816デフォルトの名無しさんsage2011/01/07(金) 15:20:30
まー端末側で完結させたいってのもわかるが無いなら自力で作るしかないよな
作るのがいやならサーバーへ一旦投げて変換させて受け取るとかさ・・・
817デフォルトの名無しさんsage2011/01/07(金) 15:36:28
>>815
ピクセルデータが取り出せれば後はどうとでもなる。
そのピクセルデータを取り出すのがムズい。
PNGなんかは比較的簡単なんだけどJPEGは…
818デフォルトの名無しさんsage2011/01/07(金) 15:57:42
>>789
できたよ
http://bitmiracle.com/libjpeg/
819デフォルトの名無しさん2011/01/07(金) 15:59:33
Silverlightと言ってもWP7に限ればスタンドアロンなアプリだからな。
「サーバーでやれ」は通用しない罠。
820デフォルトの名無しさんsage2011/01/07(金) 16:02:02
WP7は流行らないから問題ない
821デフォルトの名無しさんsage2011/01/07(金) 16:08:32
もうAndroid一人がちの流れだ
822デフォルトの名無しさんsage2011/01/07(金) 16:10:43
アンドロイドはエンジニアの好奇心を満たしてるだけだろ
満たされるから勝手に勝ちと持ってるだけで
実際は安かろう悪かろうな端末で統一感も何もないタダ乱立してるだけw
823デフォルトの名無しさんsage2011/01/07(金) 16:14:45
全然違う
売れてるから勝ち
824デフォルトの名無しさんsage2011/01/07(金) 16:16:03
統一感を求める人はiPhone
自由度を求める人はAndroid

Windows Phone 7 出番なし
825デフォルトの名無しさんsage2011/01/07(金) 16:16:51
なんだそのコカコーラは・・とか描いてた漫画のような根拠は・・・
826デフォルトの名無しさんsage2011/01/07(金) 16:18:22
>>824
正解
827デフォルトの名無しさんsage2011/01/07(金) 16:20:54
iOSもAndroidも消えていいって思ってるMS信者は俺だけなんだろうかw
VSですませられると楽なんだよなあ…ww
828デフォルトの名無しさんsage2011/01/07(金) 16:21:04
たしかにWP7は100%Pureなコードが求められるのがネックになるな。
.NETといってもWindowsからの移植すら絶望的となると開発者からも見放される予感。
829デフォルトの名無しさんsage2011/01/07(金) 16:25:07
ビット数拡張するだけでやってることは普通のJPEGと同じなんでしょ
コードの変更なんかほぼ単純作業じゃん
830デフォルトの名無しさん2011/01/07(金) 16:26:04
iPhoneもAndroidも開発環境はショボいが過去のソースコード資産はモリモリあるからな。
WP7はVisualStudioが凄くても流用できるソースコードが皆無という状況が続けば、
WP7である必要など一切無い汎用的なWebアプリに開発者は流れてしまうと思う。
831デフォルトの名無しさん2011/01/07(金) 16:27:00
>>828
MSがいかに下地を用意するかだな
ピュアなコードでそろえるとなる野良開発で何もないところでやるのと変わらなくなってしまう
これじゃあマイナーな端末と一緒だよw
むしろC/C++使えないことがデメリットになってるw
832デフォルトの名無しさんsage2011/01/07(金) 16:41:23
なんかWP7で盛り上がってるみたいだけど
ARM版 Windows8の方が凄いニュースじゃね?
833デフォルトの名無しさんsage2011/01/07(金) 16:43:26
>>832
それは俺もびびったな。
Win9ならまだしも8でやってくるとは…結構危機感持ってるんだろうか。
834デフォルトの名無しさんsage2011/01/07(金) 16:53:34
WP7ピュアマネージドコード問題に比べりゃ、再コンパイルで9割方なんとかなるARMの方が軽い話だな。
835デフォルトの名無しさんsage2011/01/07(金) 16:58:41
CPUにGPUが統合される時代がやってきて、NVIDIAどうなってしまうん?と心配してたが
まさかGPUが統合された高性能ARMプロセッサ作ってIntel/AMDに挑むとは思わなんだ。
836デフォルトの名無しさんsage2011/01/07(金) 17:08:34
これ積んだWP7かWP8が出るんだろ?
837デフォルトの名無しさんsage2011/01/07(金) 17:30:35
いらねぇw
838デフォルトの名無しさんsage2011/01/07(金) 18:58:46
\(^o^)/オワタ
839デフォルトの名無しさんsage2011/01/07(金) 19:47:57
C#の話しろよ
840デフォルトの名無しさんsage2011/01/08(土) 00:13:44
CILのバイトコードを直接実行するプロセッサを作ればいいのに
841デフォルトの名無しさんsage2011/01/08(土) 00:15:09
そんなことしなくてもコンバートすればいいだけじゃん
Monotouchだってそんな感じでやってるんだし
842デフォルトの名無しさんsage2011/01/08(土) 00:18:07
CILはれっきとしたオブジェクト指向高級言語だよ
直接実行は無理がある
843デフォルトの名無しさんsage2011/01/08(土) 00:44:55
いつになったらネイティブコードはくようになるん?
844デフォルトの名無しさんsage2011/01/08(土) 00:49:00
結局なんだかんだいって普及しちゃったな
>>843みたいなのもあまり聞かなくなった
845デフォルトの名無しさんsage2011/01/08(土) 00:54:45
ネイティブと.NET
それぞれ必要な部分で使い分けたり組み合わせたりしてて
それで充分だしな
846デフォルトの名無しさんsage2011/01/08(土) 01:01:25
ネイティブコードに変換して配置するツール使ってるけどイマイチ効果のほどがわからない
847デフォルトの名無しさんsage2011/01/08(土) 01:04:39
>>827
そう、開発者的にはWP7はたぶん救世主。

後発という理由でWP7がすたれていくとなると、それは開発者にとってはつらい事だと思う。
848デフォルトの名無しさんsage2011/01/08(土) 01:12:26
一昔前のPCとかノートPCだとやっぱりGUIの起動の遅さは気になるよ。
メモリ256MB以下でHDDが2.5inchだと(そんなマシンを使ってる人はまだ大勢いる)
もう気になるなんてもんじゃない。

ネイティブコンパイラの要望が消えたとはとても思えんな。
849デフォルトの名無しさんsage2011/01/08(土) 01:14:29
>>848
そんなマシンに.netが対応してる重いOS載せて.netアプリ動かそうって方がどうかしてるけどな
スマフォの方はさすがにPCに比べて非力なんだからMSがなんとかしろとか思うけど
850デフォルトの名無しさんsage2011/01/08(土) 01:17:08
CES で Windows 8 がらみの話題がさらっと出てるんだけども、
聞こえてくる話だと、UI 層は今の WPF 的に XAML 的で書けるようなネイティブアプリを書けるようになるっぽい?
851デフォルトの名無しさんsage2011/01/08(土) 01:21:35
>>849
なんか子供の論理だなあ。
ユーザーにとっては.NETかどうかなんて関係ない話なのに。
ヲタ相手のゲームならそういう高飛車な考えでもいいかもしれんが、
ビジネスユーザー相手にそんなこと言ったら商売にならない。
852デフォルトの名無しさん2011/01/08(土) 01:23:44
>>851
子供ぽいってw
さすがに少しは買い換えろって話だよ

そのもっさりノートで動画みて動画を重くするのが悪いっていうのか?
853デフォルトの名無しさんsage2011/01/08(土) 01:23:56
まあ、その辺り、人の入れ替わり激しいアメリカだと、UX とかに投資してくれるけど、
年功序列な日本だと、昔のままにするのが一番いいからねぇ・・・
854デフォルトの名無しさんsage2011/01/08(土) 01:24:59
改善すれども、「前と違うからわからない」の一言で一蹴されるんだぜ。
経営側も、買い替える気なくす。
855デフォルトの名無しさん2011/01/08(土) 01:27:15
>>854
それは人を変えた方がいいんじゃないのか?
そんなもっさりマシンで仕事してても効率が悪いと感じない人間なんだろ?
856デフォルトの名無しさんsage2011/01/08(土) 01:32:52
Tera Term、Excel、Wordだけで仕事は済む
857デフォルトの名無しさんsage2011/01/08(土) 01:32:57
>>855
だから、パソヲタじゃあるまいし普通の会社が数年ごとにホイホイPC替えられるかって。
社会人経験ないのかよ。

それに、重要な点はXPが普通に動くようなPCなら、大概のネイティブアプリは
それほど重くないってことだ。
858デフォルトの名無しさんsage2011/01/08(土) 01:33:25
>>855
ヒント: 年功序列、終身雇用。

ほんと、雇用流動性高めるのは急務だと思う。
859デフォルトの名無しさんsage2011/01/08(土) 01:34:12
>>857
その考え方はおかしい。
人件費が一番高い。
新システム導入で人1人減らせるなら結構長く出せる。
860デフォルトの名無しさん2011/01/08(土) 01:35:17
>>857
いやいやw
256MBのマシンってXPの初期のモデルだろw
中身はPenIIIかPen4になったかどうか(ノートだからPenMになってればいいほう)

さすがにそれはがんばって買い換えろよ
最近だと鼻毛鯖とかあるんだしさ
861デフォルトの名無しさんsage2011/01/08(土) 01:37:58
>>859
どんな逆立ちした思考だ。
そう人件費が一番高いから、ユーザは起動が遅いアプリには不満があるわけ。
起動が遅いのはお前のマシンが古いからだ、なんてのはガキの.....

まあ、君には言っても無駄そうだな。
862デフォルトの名無しさんsage2011/01/08(土) 01:39:51
がんばって買い換えろとか、もう思考がパソヲタ丸出し過ぎる。
企業はパソヲタ君と違ってPCにだけ経費使えるわけじゃないのに。
863デフォルトの名無しさん2011/01/08(土) 01:40:04
>>861
その人は違うw
ニュー速の癖でage書き込みしてるのが最初に突っ込まれた俺
他にも数人いるよ
864デフォルトの名無しさんsage2011/01/08(土) 01:40:43
お前らはC#の話出来ないんですか?
865デフォルトの名無しさんsage2011/01/08(土) 01:41:32
それは明日でもできるだろ
866デフォルトの名無しさん2011/01/08(土) 01:41:50
>>862
それは経営者もやばくないか?
遅いマシンで休憩とは別に待ち時間が発生するんだろ?
その待ち時間を時給換算して年間とか計算すればマシン買い替えと比べて・・・とかやるんじゃね?

それをやらないってことは相当無駄があるんじゃないの?
867デフォルトの名無しさんsage2011/01/08(土) 01:42:02
>>861
ビジネスって、「1円のクリップは拾うな、拾う人件費の方が高い」って世界よ。
ほんとにPC使えてる人を雇えてる、使えないやつがクビにできるんなら、新しいPC買う。

実際アメリカだと、PC使えないとクビにされるからって理由で高齢者も普通にPC使えるようになる。
日本は、クビになりにくいからだらだら仕事引き延ばすおじさんほんとに多い。
868デフォルトの名無しさんsage2011/01/08(土) 01:46:39
それで生きていけるならそれがベストだろ
無理してアメ公の真似する必要はない
869デフォルトの名無しさん2011/01/08(土) 01:51:19
>>868
まあそうだが日本が生産性悪いと言われるのはまさに古いマシンでスワップで
ひたすら待ち時間を発生させつつ集中できないどころかイライラしながら
作業やってしかも残業までして「がんばってます」とかだったら笑ってしまうぜ

というか日本の経営者ってPCにほんと金かけないよな
メモリだけでも増やせばスワップで消費する時間もなくなるのに
あのスワップで思考が止まるのがすげーいやだわ
4GBとか8GBとか載せろってわけじゃなくXPだったら512MBじゃなく1GBあれば
かなり違うのに・・・

256MBのノートのHDDなんて今と比べて遅いしバスの能力も遅いので
スワップなんて発生させたらすげー時間の無駄だよ

ハイエンドをよこせって話じゃないよ

最低限OSの仕組みを理解してぎりぎりの出費でなんとかしてくれって話だけど
どうもアレルギーでまくりの経営者様がいるようだね
870デフォルトの名無しさんsage2011/01/08(土) 01:52:29
>>868
もう破綻済み。
そしてそのしわ寄せが、若者の薄給、就職難。
871デフォルトの名無しさんsage2011/01/08(土) 01:53:30
>>866-867
PCを買い換えた方が効率が高いかどうかはプログラマにとっては関係がない。

関係があるのは、古いロースペーックのPCを使ってるユーザが
現に無視できない割合で存在するということ。

こんなところで「古いPC使うのは非効率だ」などと言っても現実は変わらない。
872デフォルトの名無しさんsage2011/01/08(土) 01:54:34
>>869
いや、ほんと導入ためらうレベルで、PC 使える若い人雇い入れる余裕ない。
全体的に若い会社は普通に PC 買ってる。
873デフォルトの名無しさん2011/01/08(土) 01:57:57
結論としては社員システム(老人優遇)の弊害ここにありってこと?
874デフォルトの名無しさんsage2011/01/08(土) 02:00:47
>>896
北米やヨーローッパだってそれは似たようなもの。
というより、個人的感触だと日本の方がまだマシだと思う。

なんかバリバリ仕事こなすエリートがいる超優良企業みたいなのだけ想像してないか?
875デフォルトの名無しさんsage2011/01/08(土) 02:00:48
じゃ明日から皆さんはバイトということですので、よろしくお願いします
876デフォルトの名無しさんsage2011/01/08(土) 02:12:39
マ板みたいな話やめろよ
そういうのが嫌がここきたのに
877デフォルトの名無しさんsage2011/01/08(土) 08:31:21
C#と全然関係ない話ばかりでワラタ
お前らまずは就活しろよw
878デフォルトの名無しさんsage2011/01/08(土) 10:05:48
初回起動以外はネイティブだよね
それでも遅いならc++やそもそも機能を減らすしか無いんじゃ
879デフォルトの名無しさんsage2011/01/08(土) 10:26:10
CLRが進化していくからだいじょぶ〜だいじょぶ〜
880デフォルトの名無しさんsage2011/01/08(土) 12:03:39
linqの遅延実行とかC++にない機能がきけばC++よりも速くなったりするんじゃね
881デフォルトの名無しさんsage2011/01/08(土) 13:21:07
JITの結果ってキャッシュされて
次回起動以降にも使われたりするの?
882デフォルトの名無しさんsage2011/01/08(土) 13:23:53
うん
883デフォルトの名無しさんsage2011/01/08(土) 15:04:41
次回起動時もキャッシュされるの?初耳。
884デフォルトの名無しさんsage2011/01/08(土) 15:15:26
されないんじゃなかったっけ
NGenかけるかGACに入れたらキャッシュされるんだった気が
885デフォルトの名無しさんsage2011/01/08(土) 19:59:01
#if TEST

(略)

private void Func()
{
string s =
@"
#test  ←この行でコンパイルエラー

";
}

(略)

#endif

上記のコードが/d:TESTを指定しないとき
error CS1024: プリプロセッサ ディレクティブが必要です。
となるは仕様ですか?
886デフォルトの名無しさんsage2011/01/08(土) 20:09:27
イミフ
887デフォルトの名無しさんsage2011/01/08(土) 20:20:21
仕様
プリプロセッサディレクティブによってスキップされる部分は字句解析の対象にならないから
当然逐語的リテラル文字列中かどうかも判断されない
888デフォルトの名無しさんsage2011/01/08(土) 21:12:29
>>887
ありがとう、助かりました
 194KB (199562Byte)
dummy_for_searchRef

DAT2HTML 0.32g Converted.