C#, C♯, C#相談室 Part63

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレ
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech/1284775031/

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

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

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

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

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

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

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

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

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

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

Visual Studio 2010 Part3
http://pc12.2ch.net/test/read.cgi/tech/1267092670/
6デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/14(日) 21:41:15
ふらっとC#,C♯,C#(初心者用) Part65
http://hibari.2ch.net/test/read.cgi/tech/1289307450/
8デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/14(日) 21:43:06
おつおつ
10デフォルトの名無しさん:2010/11/14(日) 22:49:23
貼るならリンク更新しろよアホ
11デフォルトの名無しさん:2010/11/15(月) 10:55:43
ファイルに関連付けられた文字列等を取得するにはどうしたらいいんでしょうか?
エクスプローラーのようにexeならアプリケーションとかdllならアプリケーション拡張とかicoならアイコンとかです。
12デフォルトの名無しさん:2010/11/15(月) 15:28:45
13デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/15(月) 18:44:22
>>14
ソリューションごとリビルドしましたが、出てこないです。
ツールボックスのリセットも実行しました。
16デフォルトの名無しさん:2010/11/15(月) 20:12:01
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
17デフォルトの名無しさん:2010/11/15(月) 20:21:31
>>15
プロジェクトの参照設定でUserControlを含むプロジェクトを追加すればいいんじゃね?
18デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/16(火) 03:18:10
TableAdapterなりの取得するところにタイムアウト設定しろ
LINQならトランザクション宣言してそこで設定しろ
24デフォルトの名無しさん:2010/11/16(火) 11:13:50
>>18
???
オプションダイアログに『Windows フォーム デザイナー』の項目はありますが、
これのどこをいじればいいんでしょう?
25デフォルトの名無しさん:2010/11/16(火) 11:14:39
>>17
exeと同じプロジェクトでUserControlを作っているのに、
どうやってプロジェクト参照しろと?
26デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/16(火) 13:31:57
ぴんヴぉけより向こう側の話はスレチ
29デフォルトの名無しさん:2010/11/16(火) 20:47:03
Processで実行中にダイアログだしたいんですが、
ApartmentStateはどこに設定すればいいんでしょうか?
それらしいメンバはみつからんのですが・・・
30デフォルトの名無しさん:2010/11/16(火) 21:31:30
ThreadじゃなくProcessなの?
だったら起動するexeで設定する。
31デフォルトの名無しさん:2010/11/16(火) 21:50:44
Dod窓のアプリを外部で起動させてます。
その後にダイアログをだそうとしてますが例外が発生してしまうんですよね・・・
Threadで外部アプリ起動させたりできるんでしょうか?
検索しても見つかりませんでした・・・
32デフォルトの名無しさん:2010/11/16(火) 22:00:31
しらんがな。最低限のコードくらい晒せよ。
33デフォルトの名無しさん:2010/11/16(火) 22:07:30
>>31
外部のアプリは関係なくて、
別のスレッドからアプリ本体のUI操作をやろうとしたんじゃね。
Windowを作ったスレッドじゃないとUI操作は出来ないよ。
34デフォルトの名無しさん:2010/11/16(火) 22:24:29
STAThreadAttributeとかは?
3527:2010/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デフォルトの名無しさん:2010/11/16(火) 22:36:01
やってから質問しような。
37デフォルトの名無しさん:2010/11/16(火) 22:37:54
>・・・ああ、P/Invokeのことだったんですね>ぴんヴぉけ
これ俺も分かんなかった
そういうことか
38デフォルトの名無しさん:2010/11/16(火) 22:39:54
ピンボケって何の話ですか?
39デフォルトの名無しさん:2010/11/17(水) 09:08:09
ぴんぼけどっとねっと
40デフォルトの名無しさん:2010/11/17(水) 17:10:57
非同期I/Oでちょっと質問
CallBack内でEndRead()していて、次のバッファ読み開始は別スレッドで行っている
そして非同期完了待ちはAsyncWaitHandle.WaitOne()でしてるんだけども
どうもCallBack呼ばれた瞬間に待機解除されてるぽい
EndRead()が呼ばれるまで確実に待つ方法はないですか?
41デフォルトの名無しさん:2010/11/17(水) 22:50:33
>>40
ちょいと具体的な話見えない。
それっぽいコード出せない?
42デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/18(木) 04:09:57
Task使えば?
44デフォルトの名無しさん:2010/11/18(木) 08:26:16
コールバックなんかnullにしておいて、WaitOne側でEndReadしてやればいい。
4540:2010/11/18(木) 14:44:01
>>42
その通りです

>>43
.net3.5なのです

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

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

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

でも、いまどき、JavaもC#もintのサイズは仕様として32ビットに固定されてる。
Cに戻らない限りはそのトラウマは忘れていい。
65デフォルトの名無しさん:2010/11/18(木) 21:23:17
mov ax, ds:[si] ですね。わかります。
66デフォルトの名無しさん:2010/11/18(木) 21:55:19
rep cmpsb
67デフォルトの名無しさん:2010/11/19(金) 00:47:30
TaskとThreadの使い分けってどうすればいいの?
IsBackgroundが無かったり、Disposeが必要だったり、Taskのメリットがよくわかりませぬ。
あとTaskは複数走らせた時に開始がやたら遅いのが気になる。
68デフォルトの名無しさん:2010/11/19(金) 01:52:03
基本は全部 Task で OK。
Thread はもはや生で使うものじゃない。
69デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/19(金) 18:59:38
>>69
こんな感じでいかがでしょうか
http://ideone.com/AjJ6D
71デフォルトの名無しさん:2010/11/19(金) 19:20:40
>>70
うおぉ(><
目からうろこです・・・。

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

次、質問することがあったらpigeにしますかね(笑)
75デフォルトの名無しさん:2010/11/19(金) 19:40:29
>>75
Hageは深刻なエラーを生み出す可能性があるので
上司が目を通すコードには絶対に使わないように
76デフォルトの名無しさん:2010/11/19(金) 19:47:48
>>75
Hageの扱いはデリゲートなので、Kamiを複製するときは、注意ですね。
77デフォルトの名無しさん:2010/11/19(金) 19:50:57
山田くーん!座布団全部持って行きなさい!
78デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/20(土) 11:21:48
C#で自分で作ったクラスのオブジェクトをBinaryFormatterで
シリアライズして保存したファイルを,
そのクラスがない環境で読みだすにはどうすればいいでしょうか。
BinaryFormatterのシリアル化の仕様とかどこかで公開されてますか?
81デフォルトの名無しさん:2010/11/20(土) 11:39:54
見たことないなぁ。

それはやっぱXMLシリアライズした方が。
通信路をZIP圧縮でもしとけばXMLでもそうたいしたサイズにならないし。
82デフォルトの名無しさん:2010/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で圧縮したデータを送
信してくる。
8480:2010/11/20(土) 14:02:37
ありがとうございます。
わかりました,BinaryFormatterの読み出しは厳しそうですか。

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

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

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

まあ、そもそも「こんな方法もあるよ」っていう提案だから、そんなに「つんけん」しないでねん。
外部DLLを使うか使わないかは、>>80さんの判断だよ。
86デフォルトの名無しさん:2010/11/20(土) 14:32:03
>>84
NetDataContractSerializerは?
8780:2010/11/20(土) 14:45:59
>>86
NetDataContractSerializer,DataContractSerializerで
循環参照もジェネリック型もOKそうな感じなので調べてみます。
どうもでした。
8880:2010/11/20(土) 15:03:02
NetDataContractSerializerは使いやすい代わりに
なかなか猛烈なXMLを吐きますね。
紹介していただいたzip圧縮ライブラリも検討しつつ,
なんとかうまいこといきそうです。
ありがとうございました。
89デフォルトの名無しさん:2010/11/20(土) 15:03:38
Moo烈
90デフォルトの名無しさん:2010/11/20(土) 16:41:10
.Net 標準のは圧縮率が悪すぎて使い物にならない。
ファイルによっては2倍以上に膨れあがることもあるからダメダメ。
91デフォルトの名無しさん:2010/11/20(土) 17:08:49
>>90
ぐぐるとそんな話ばっかり出てくるね。
92デフォルトの名無しさん:2010/11/20(土) 17:13:25
>>90,91
.NET標準の範囲となるとgzip/deflateによるものになると思うが、
何がそんなに圧縮率が悪いと言うんだ?
tar.gzと同程度になるはずだが。
93デフォルトの名無しさん:2010/11/20(土) 17:28:05
ファイルパスの羅列みたいな重複が極端に大きいはずのデータでも80%くらいだったりとかしたな
どうせ実装のスライド窓が小さいとかそんなんだと思う
94デフォルトの名無しさん:2010/11/20(土) 17:32:04
ちなみにGZipStreamの圧縮レベルは1で固定
95デフォルトの名無しさん:2010/11/20(土) 19:15:33
[TypeConverter(typeof(ExpandableObjectConverter))]の属性定義なしの
オブジェクトをプロパティグリッドで展開したいのですが、
そのための設定またはサードパーティ製のプロパティグリッド
をご存じないでしょうか。
96デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/21(日) 12:58:09
毎回newするんじゃなくてDictionaryかなんかにキャッシュしたらどうなるの?
MSDNのサンプルじゃそうやってるようだけど
9997:2010/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デフォルトの名無しさん:2010/11/21(日) 13:44:38
>>99
そもそも本当に>>97の行を実行した時に例外が起こるの?
絶対違うでしょ
101デフォルトの名無しさん:2010/11/21(日) 13:57:07
選択関連で何かしてない?
VirtualモードのときはSelectedItems使えないよ。
SelectedIndexChangedイベとSelectedIndices使って全部自分でやる。
102デフォルトの名無しさん:2010/11/21(日) 15:47:50
うん!
10397:2010/11/22(月) 00:11:12
すいません。急用ができて落ちてました。
他の方の環境では再現されないとなるとうちの環境特有の現象なんでしょうかね。
ちなみにテストコードではセレクト系のイベントハンドラは書いていません。
もうちょっと調べてみますです。。。
104デフォルトの名無しさん:2010/11/23(火) 00:41:03
StyleCop使っててSuppressMessageしたいんだけど、
引数がくそ長くてうざいからconstにしたら抑制できませんでした。
何か良い方法はないでしょうか・
105デフォルトの名無しさん:2010/11/23(火) 03:09:16
C#4.0ってどうなってるの?もうつかえるの?
106デフォルトの名無しさん:2010/11/23(火) 03:23:34
VS2010や.NET4と一緒にリリースされてだいぶ前から使える
107デフォルトの名無しさん:2010/11/23(火) 06:43:21
CompactFrameworkではISerializableがないのですが、例えば画像など
XmlSerializerで扱えない(ですよね?)クラスは
どうやってシリアライズするのでしょうか?
108デフォルトの名無しさん:2010/11/23(火) 08:17:25
自分で適当にバイナリ化するか
CF向けシリアライザライブラリをどっかから拾ってくるか
109デフォルトの名無しさん:2010/11/23(火) 10:01:11
単純に画像をシリアル化するならImage.Saveでいいじゃん。
画像を含むクラスをシリアル化したいなら
OnSerializingAttributeを指定したメソッド内で、
画像だけ別ファイルに保存、パスを記録しておく。
そんでデシリアライズの時にOnDeserializedAttributeを
指定したメソッド内で、パスから画像を復元。
ファイル分けたくないならImage.Save(Stream)あたりを使ってうまいことやればいい。
110デフォルトの名無しさん:2010/11/23(火) 10:18:45
>>109
OnSerializing以前にそもそもBinaryFormatterもSoapFormatterも無いらしいぞ
XmlSerializerでシリアライズの調整するならIXmlSerializableかね
111デフォルトの名無しさん:2010/11/23(火) 18:15:52
細かいことやりだすとわかるがCFは地獄
色々試行錯誤するも最後には非.netで適当に書いてP/Invokeが速いことに気づく
112デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/23(火) 18:42:54
読み込んだバッファと、その一つ前のやつを持っておいて、
1024バイト分切り取ればいい。

って、どうみても初心者ネタだろ。
115デフォルトの名無しさん:2010/11/23(火) 18:45:38
>>112
ストリームの最後から1024バイト手前にSeekするだけ。
116デフォルトの名無しさん:2010/11/23(火) 18:45:42
>>113
こんなに早く回答が得られるとは思っていませんでした。
ありがとうございました。
117デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/23(火) 18:51:47
ああ
>string fullPath = "";
これは忘れてくれ
こっちで見る際に入れたダミーだ
119デフォルトの名無しさん:2010/11/23(火) 19:09:42
いつも思うのだがBinaryReaderって存在意義を見いだせない
直接Stream.Read呼び出せば十分
120デフォルトの名無しさん:2010/11/23(火) 19:10:13
>>117
fs.Seek(-1024, SeekOrigin.End);
でいけました!

皆さんありがとうございました。次からは初心者スレに行きたいと思います。すいませんでした。
121デフォルトの名無しさん:2010/11/23(火) 19:12:08
おう、気にすんな
122デフォルトの名無しさん:2010/11/23(火) 22:04:01
>>105に答えてもいいんだよ。
123デフォルトの名無しさん:2010/11/23(火) 22:08:53
答えてるじゃん
124デフォルトの名無しさん:2010/11/23(火) 22:12:59
馬鹿には見えないんです
125デフォルトの名無しさん:2010/11/24(水) 00:22:01
ありがとうございました。
126デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/24(水) 12:08:50
>>127
そういう用途ならむしろOpenCLの方が向いてるかもだけどな。
DirectShow.NET以外の選択肢があるのか?

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

サンクスです。
132デフォルトの名無しさん:2010/11/24(水) 13:17:24
Silverlight4のOOBでよくね
USBカメラの利用は超簡単だよ
133デフォルトの名無しさん:2010/11/24(水) 15:18:59
OpenCVだった。恥ずかしい……。
みんなありがと。
134デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/11/29(月) 16:54:41
>>134
SQLiteはまんま使えるよ。暗号化機能のおまけ付き。
4GB越えもライブラリとしてはサポートされるが、
ファイルシステム側の制限に引っかかる場合はある。
136デフォルトの名無しさん:2010/11/29(月) 18:17:19
SQLite用のADO.NET providerが↓にあるのでC#から容易にアクセスできるよ.
http://sqlite.phxsoftware.com/
137134:2010/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デフォルトの名無しさん:2010/11/29(月) 22:22:52
SQLiteはVSで扱ってると「オブジェクト参照がオブジェクト インスタンスに設定されていません」って出てくるのが何時までたっても解決できない
なぜかそれでも操作はできるしウザイだけで支障はないけど
139デフォルトの名無しさん:2010/11/29(月) 22:55:00
こわw
140デフォルトの名無しさん:2010/11/29(月) 23:58:55
>>137
SQLiteはFirefox(多分ver3以上)の履歴データとか、SONYのwalkmanを管理する
アプリ(x-Appli)が使ってるようです。商用でも稼働実績はありますが・・・
一昔前の不安定だったFirefoxでは、ブラウザがハングしたときのタイミング次第
で*.sqliteファイルが壊れてしまい、DBが入っているファイルを消さないとFirefoxが
起動しなくなる事が時々ありました。
SONYのやつは音楽データはファイルとして管理し、アルバムの構成情報とか
だけDBに保持しているようです。
消えたら大騒ぎになるデータをsqliteだけに保存するのはDANGERだと思います。
141デフォルトの名無しさん:2010/11/30(火) 01:14:41
GoogleChromeなんかも使ってるぞ
142デフォルトの名無しさん:2010/11/30(火) 01:48:42
俺も使ってるよ
143デフォルトの名無しさん:2010/11/30(火) 03:00:30
>>140
Firefoxがタコなだけだろ。
SQLiteは十分枯れてるよ。
Linuxだとディストリ本体のメタデータの管理で使ってるくらいなんだから。

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

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

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

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

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

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

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

マルチスレッドならワーカースレッドをまるごと止めればいいし。
166デフォルトの名無しさん:2010/12/02(木) 17:26:10
>別のスレッドTではメインスレッドの変数を扱えない
そんなことなくね?
もし同期の話をしてるならlock使えばいいだけだし
167デフォルトの名無しさん:2010/12/02(木) 17:39:30
var sw = System.Diagnostics.Stopwatch.StartNew();
while (sw.ElapsedMilliseconds < 3000) {
  // メインスレッドの処理とやら
  Console.WriteLine("wait");
  System.Threading.Thread.Sleep(500);
}
これでいいだろ
168デフォルトの名無しさん:2010/12/02(木) 18:10:05
指定時間後にシグナルが立つようなのって無かったっけ?
169デフォルトの名無しさん:2010/12/02(木) 18:14:15
>>167
>プログラムのメインスレッドを止めずに3秒待機させたいのです。
170デフォルトの名無しさん:2010/12/02(木) 18:29:53
>>167がダメだというなら
プログラムのメインスレッドを止めずにってどういう事なのか
もう少し詳しく書いてくれ。
自分としては時間のかかる一連の処理って考えてたんだけど違うの?
171デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/02(木) 18:49:43
そういやメインスレッドじゃなくて現在のスレッドだな
173デフォルトの名無しさん:2010/12/02(木) 18:53:36
>>169
馬鹿は黙ってろ
174デフォルトの名無しさん:2010/12/02(木) 18:54:41
煽ると初心者スレみたいなことになりそうだからやめてくれw
175デフォルトの名無しさん:2010/12/02(木) 21:37:29
一方が読み込み専用、もう一方が書き込み専用ならロックしなくても大丈夫そうな気がするけど
なんか問題あるの?
176デフォルトの名無しさん:2010/12/02(木) 21:44:55
確かにロックしなくていいけどそれより>>171ならWaitHandle使うべき
177デフォルトの名無しさん:2010/12/02(木) 21:45:55
boolだったら特に問題はないわね<書き込みするのが1スレッドだけなら。
178デフォルトの名無しさん:2010/12/02(木) 21:48:29
たしかにこういう場合はサブスレッドに仕事させてメインスレッドはWaitHandleで待つべきだけど
メインスレッドは止めたくないっていってるしなぁ
179デフォルトの名無しさん:2010/12/02(木) 21:50:21
じゃあTimer使うかフラグ使わずにInvoke使うかどっちか
180デフォルトの名無しさん:2010/12/02(木) 21:51:00
>>176,177
そうなのか、ありがとう
しつこくなってしまって申し訳ないんだが、
boolだったらってことは別のだったら問題あるの?
構造体だとちょっと問題ありそうなのは想像つくけど
181デフォルトの名無しさん:2010/12/02(木) 22:03:22
環境によるけど32ビットを超える大きさの値(doubleや構造体)は
書き換え操作や読み取り操作が分割される可能性があるので、あるスレッドが値を書き換えている途中に
別のスレッドが同じ変数を読み出すと間違った値が読み出される。
>>171はたまたまロックが必要ないけど、ロックしなくていいかどうかはとってもデリケートな問題なので、
複数のスレッドから使われる変数にアクセスするときは基本的には常にロックが必要と考えてもいい。
boolでも flag = !flag とかはロックが必要。
182デフォルトの名無しさん:2010/12/02(木) 22:03:28
>>168
スレッドプールにタイムアウト後デリゲート実行するのならある
183デフォルトの名無しさん:2010/12/02(木) 22:06:21
>>181
なるほど、詳しい解説ありがとう
184デフォルトの名無しさん:2010/12/03(金) 05:43:03
>>181
>あるスレッドが値を書き換えている途中に
>別のスレッドが同じ変数を読み出すと間違った値が読み出される。
C#ではこれは無いんじゃないの?
185デフォルトの名無しさん:2010/12/03(金) 07:52:40
boolにlock不要って言うけど、lockかThread.MemoryBarrierしないであるスレッドの
データを他スレッドが読めることって保証されてないんじゃ。x86なら読めるだろうけど。

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

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

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

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

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

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

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

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

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

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

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

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

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

で、64ビットの読み書きはプラットフォーム次第で>>184が発生するって事か
218デフォルトの名無しさん:2010/12/04(土) 10:28:02
bool、char、byte、sbyte、short、ushort、uint、int、float、および参照型の読み取りと書き込みは分割不可能です
219デフォルトの名無しさん:2010/12/04(土) 16:25:49
>>217
x86のADDはメモリオペランドを取れるし、32bit以下でキャッシュラインをまたいでいなければ
アトミック性も保証される。
220デフォルトの名無しさん:2010/12/04(土) 16:41:13
つまりスレッド間連携が1方向1変数ならロック不要ですよって事?
でも読み取る変数が後からプロパティに変更されたら安全とは言えなくなる?考えすぎか。
221デフォルトの名無しさん:2010/12/04(土) 16:48:31
>>219
32bit以下の値を読むだけなら、ADD(というか、read-modify-writeな処理全て)
がアトミックであろうがなかろうがそもそも無問題な気がするんですが....
222デフォルトの名無しさん:2010/12/04(土) 20:14:59
読んだ値をif文とかで使うと危ない
223デフォルトの名無しさん:2010/12/04(土) 20:17:15
volatile を入れたくなる症候群
224デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/05(日) 23:35:57
68bitだと・・・!
226デフォルトの名無しさん:2010/12/05(日) 23:37:02
すんません、64ですw
227デフォルトの名無しさん:2010/12/05(日) 23:38:36
少なくともC#側の問題ではない
それだけの情報でわかるのはそれくらい
228デフォルトの名無しさん:2010/12/05(日) 23:38:59
9bit処理系もRFCに載るくらい有名だろ
驚くことじゃない
229デフォルトの名無しさん:2010/12/05(日) 23:42:34
まあ多分x86で作ったDLLをAny CPUでロードしようとしてるんだろ
230デフォルトの名無しさん:2010/12/05(日) 23:48:43
>>224
hogeの入ってるdllをexeと同じディレクトリにコピーしてない、なんてオチだったりしてw
2005以降はビルド時自動でコピーするように出来たはずだと思ったけど。
231デフォルトの名無しさん:2010/12/05(日) 23:49:49
>>229
ご指摘のように、
C#側のプロパティ > ビルド > プラットフォームターゲット = x86
にしたらエラーにならなくなりました!
即レス有難うございました!!
232デフォルトの名無しさん:2010/12/05(日) 23:53:39
ネイティブコード使いたいだけなら普通のC++でdll作ったほうがいいよ
C#の方をAnyCPUにできるしMSも見放してるC++/CLIなんていう将来不安な言語を使わなくて済む
233デフォルトの名無しさん:2010/12/06(月) 02:00:37
そうなんですか…。
色々調べてみます。有難うございます!
234デフォルトの名無しさん:2010/12/06(月) 02:22:52
どういたしまして
235デフォルトの名無しさん:2010/12/06(月) 12:26:12
>>232
あまり濫用すべきでないのは事実だけど、
CLRホストを作るときにはどうしても必要なものだから今後もなくなることは無いよ。
将来不安、というのは嘘というかデマに近い。
236デフォルトの名無しさん:2010/12/06(月) 14:21:10
別にCLRホストを作るときにC++/CLIは必要ないよ。ただのCOMインターフェイスなんだから。
C++/CLIでホストしたからってホストされてるCLR上のオブジェクトを透過的に扱えるわけでもない。
VSだって普通のネイティブのC++でCLRをホストしてる。
C++/CLIはVS2010でインテリセンス切られたしCLR3とCLR4とでアセンブリの互換性無し。
237デフォルトの名無しさん:2010/12/06(月) 16:33:11
0123456789abcdefghijklmnopqrstuvwxyz
00 01 02 03 04 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デフォルトの名無しさん:2010/12/06(月) 16:39:15
なにを聞きたいのかがわからん
画面に表示する方法?文字列を生成する方法?
239デフォルトの名無しさん:2010/12/06(月) 16:39:35
>>237
テキストで書き出すの?
string.Formatの初期指定機構を使えばいい。
標準出力に書きだすなりストリームに書き出すなりはお好みで。
240237:2010/12/06(月) 16:47:13
文字列を生産して 順番にテキストに保存したいと思います。
ttp://d.hatena.ne.jp/mclh46/20100626/1277523168

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

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


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

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

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

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

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

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

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





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

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

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

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

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

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

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

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

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

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

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

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

で、俺も分からないからずっと前に本棚で眠らせているので>>303には答えられないわけだが。
309デフォルトの名無しさん:2010/12/13(月) 09:13:25
とりあえずwiiリモコンは関係ないってことで
310デフォルトの名無しさん:2010/12/13(月) 09:32:47
>>308
馬鹿なの?
311デフォルトの名無しさん:2010/12/13(月) 10:30:27
人のことを馬鹿って言っちゃダメ!(´・ω・`)
312デフォルトの名無しさん:2010/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/1291602001/
314デフォルトの名無しさん:2010/12/13(月) 22:15:02
SplitContainerの左右または上下のパネルっていうのは
SplitContainerのウィンドウの上に表示されているの?
それとも、その下のウィンドウの上に表示されているの?

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

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

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

そのファイルの有無で判別する
320デフォルトの名無しさん:2010/12/13(月) 22:57:39
ttp://supermab.com/usbid.html
ぐぐったらこんなの出てきたけど。
321デフォルトの名無しさん:2010/12/13(月) 23:32:41
>>318
知らないならレスしなくていいよ。
無知さらすだけだから
とっとと死ねよ。
322デフォルトの名無しさん:2010/12/13(月) 23:42:56
たしかにこのスレ間違った答えや、そもそも答えないくせに
余計なレスつける馬鹿が多いな
323デフォルトの名無しさん:2010/12/13(月) 23:49:27
IDすらない匿名掲示板じゃ所詮無理なんだよ
Stack Overflowみたいなサイト作ればけっこう需要ありそうだけどね
324デフォルトの名無しさん:2010/12/14(火) 03:05:01
最近は糞みたいな機械翻訳された質問サイトが引っかかって鬱陶しい。
325デフォルトの名無しさん:2010/12/14(火) 10:54:37
-site:efreedom.com -site:w3support.net
326デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/14(火) 21:58:05
>>326
おれは316じゃないけど、USBデバイスを識別できたとして、
ドライブ文字との対応はどうやってとるの?
328デフォルトの名無しさん:2010/12/14(火) 22:03:40
原則無理
329デフォルトの名無しさん:2010/12/14(火) 22:07:24
WMIでWin32_DiskDrive/Win32_DiskPartition/Win32_LogicalDisk使うとか
330デフォルトの名無しさん:2010/12/14(火) 22:31:52
いい加減スレチ
331デフォルトの名無しさん:2010/12/15(水) 13:55:13
XmlSerializeについて質問です

<?xml version=""1.0""?>
<test>
<item>
<str>aaa</str>
</item>
<item>
<str>bbb</str>
</item>
</test>

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

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

のように記述しても読み込まれないみたいです。よろしくお願いします
332デフォルトの名無しさん:2010/12/15(水) 14:00:35
XmlElementAttribute
いい加減「XMLを読むのにXmlSerializer」は滅びないかなぁ
333デフォルトの名無しさん:2010/12/15(水) 14:07:13
DOM使え
334デフォルトの名無しさん:2010/12/15(水) 14:12:37
System.Xml.Linq
335デフォルトの名無しさん:2010/12/15(水) 14:22:42
XmlSerializerは宣言的で良いと思うけどな
DOMこそ滅びるべき
そのまま読みたいときもXLINQあればいいし
336316:2010/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デフォルトの名無しさん:2010/12/15(水) 14:37:25
XLinq使ったほうが早いみたいですね。ありがとうございました
338デフォルトの名無しさん:2010/12/15(水) 16:17:43
>>331
332も言っているが、
(Xml)Serializerというのは文字通り
オブジェクトが持ってるコンテンツを
XMLにシリアライズするための手段であって、
既存のXmlを解析して読むための方法じゃないんだよ。

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

通常はDOMや、SAXや、System.Xml.Linqを使う。
339デフォルトの名無しさん:2010/12/15(水) 17:25:47
そんなことないよ。XmlSerializerは既存のXMLの読み書きを重視したクラスだ。
スキーマがあればデシリアライズ用のクラスを自動生成したりできる。
シリアライズというよりXMLとオブジェクトのマッピングなんだよ。
DataContractSerializerなんかもXML吐くけどこっちはほんとにシリアライザ。
340デフォルトの名無しさん:2010/12/15(水) 20:14:33
テキストボックスの縦幅固定って解除できませんか?
341デフォルトの名無しさん:2010/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/1291602001/

ちょっときてくれ
343デフォルトの名無しさん:2010/12/16(木) 00:55:09
スクロールバーで動かした瞬間にパネル内のものがヌルヌル動くときと
マウスボタンをアップしたときじゃないと移動しない時の違いってなんでしょうか?
344デフォルトの名無しさん:2010/12/16(木) 02:00:31
ああそれね
うろ覚えだけどスクロール中にSelectするんだったような
345デフォルトの名無しさん:2010/12/16(木) 07:42:26
Selectとはなんでしょうか?
ググッてもそれらしい情報がありません。
346デフォルトの名無しさん:2010/12/16(木) 12:08:48
GridのVirtualModeの事?
347デフォルトの名無しさん:2010/12/16(木) 20:12:50
いえ、普通のフォームとかパネルで出てくるスクロールバーです。
たまにヌルヌル中のコントロールが動いてるときもあるんですが
条件がよく分からなくて。
348デフォルトの名無しさん:2010/12/16(木) 21:27:22
そういうのは具体的にドレドレは動いてコレコレは動きません!って書けよ
349デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/16(木) 23:05:05
http://www.clks.jp/csg/dx002.html
このページに通りにDirectX SDKをインストールしたのですが、
参照の追加で.NETの欄にMicrosoft.DirectXが見当たりません。
何故でしょうか・・・?
351デフォルトの名無しさん:2010/12/16(木) 23:10:11
それ古いよ
今はxnaだよ
ググってね
352デフォルトの名無しさん:2010/12/16(木) 23:16:27
>>349
おお、ヌルヌルきました。
ありがとうございます!
353デフォルトの名無しさん:2010/12/17(金) 00:34:16
Form.OnResize メソッドのヘルプに

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ありがとう。
411デフォルトの名無しさん:2010/12/19(日) 17:16:52
それくらい自分で組もうぜ
412デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/19(日) 17:34:01
それだと枠を操作してる感覚にはならないじゃん
枠の判定とかマウスカーソルの形変えたりとかハンドル表示したりとかカーソルがウィンドウ外に出たときとか
ちゃんと作ろうとすると微妙に面倒
414デフォルトの名無しさん:2010/12/19(日) 17:35:28
数値入力よりはよくない?
415デフォルトの名無しさん:2010/12/19(日) 17:43:15
ドラッグでリサイズできるならドラッグで移動(もしくは枠の左側ドラッグ)も必要でしょ?
めんどくせーよけっこう
416デフォルトの名無しさん:2010/12/19(日) 17:47:39
そんなにめんどくさいならPGやめろよw
417デフォルトの名無しさん:2010/12/19(日) 17:52:57
ピクチャボックスにしか使えないのは勿体ないから、
リサイズするための枠とドラッグして移動させる機能を中のコントロールに与えるパネルとして作るのがいいかな
ResizablePanelみたいなコンポーネントにして公開してね
>>416任せた
418402:2010/12/19(日) 17:59:20
>> 404
どうもです。
ここにはlog4net使ってる人あまりいないようですね。
app.config以外で設定する方法を調べてみます。
419デフォルトの名無しさん:2010/12/19(日) 18:04:31
めんどくせーよw
420デフォルトの名無しさん:2010/12/19(日) 18:22:21
明日からまた仕事だ面倒だ
誰か俺の代わりにやってくんない?
421デフォルトの名無しさん:2010/12/19(日) 18:23:14
あたし素人だけど、FrameworkElementあたりを相手に
リサイズ機能付けるクラスを作るだけじゃないの?
そんなに面倒くさいかな
422デフォルトの名無しさん:2010/12/19(日) 20:37:57
どう見てもWinFormsだろ
WPFならもっと面倒だぞ
コントロールの位置決めが親要素に依存するから移動させるのはクソ難しい
423デフォルトの名無しさん:2010/12/19(日) 21:31:06
WPFで作ってもCanvasに乗っけてDragイベント拾うだけじゃん。
424デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/12/19(日) 21:55:28
無理
426デフォルトの名無しさん:2010/12/19(日) 21:55:33
別プロセス立ちあげて監視
427デフォルトの名無しさん:2010/12/19(日) 22:03:24
無理でしたか・・
dllをインジェクトしてそこから監視させる方法を取ることにします。
有難う御座いました。
428デフォルトの名無しさん:2010/12/19(日) 22:09:58
なんでDLLインジェクションなんて話になるんだ…?
429デフォルトの名無しさん:2010/12/19(日) 22:10:12
ムリなのか。
signal飛んでくるんじゃね?って思ってぐぐってみたけど、
http://msdn.microsoft.com/ja-jp/library/xdkz3x12(v=vs.80).aspx
> SIGTERM シグナルは、Windows NT では生成されません。

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

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

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

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

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

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

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

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

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

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

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

帰るときにごめんなさいっていって出てきたよ。
456デフォルトの名無しさん:2010/12/22(水) 13:25:41
おさわり探偵乙
457デフォルトの名無しさん:2010/12/22(水) 16:39:28
とりま痴漢で通報しておいた
458デフォルトの名無しさん:2010/12/22(水) 16:41:21
そんな手でちんこ触られたら気持ちいいんだろうなー
胸熱
459デフォルトの名無しさん:2010/12/22(水) 22:28:50
職場のやつに取らせればいいんだよなw
460デフォルトの名無しさん:2010/12/23(木) 02:16:24
最後に謝るのがもうダメ、屁タレ、痴漢として最後まで自分に誇りをもつべき
461デフォルトの名無しさん:2010/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/1290795733/
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デフォルトの名無しさん:2010/12/24(金) 15:25:08
>>464
.netに絶対パスとか取得するクラスあるよ
ぐぐってみ
466デフォルトの名無しさん:2010/12/24(金) 15:25:26
>>464
スレ違い。
(PHPでDirectXを動かすという狂気な実装でなければ)
467デフォルトの名無しさん:2010/12/24(金) 15:27:19
System.IO.Pathでぐぐれ
次からは初心者用スレでな
468デフォルトの名無しさん:2010/12/24(金) 15:28:41
>>464
Assembly.GetExecutingAssembly().Location
作法的にはよろしくない
ライブラリは複数のアプリから共有されるわけで、個別に状態持たせたりとかは普通やらない
469デフォルトの名無しさん:2010/12/24(金) 15:43:13
そもそもprogram filesとかに配置されたら読みはともかく書きができない
470464:2010/12/24(金) 16:16:38
すいません、初心者スレが別にあるんですね。
System.IO.Pathはmsdnで読んでいたのですが、
カレントディレクトリの移動が必要になるようだったので、躊躇していました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

少なくとも俺はそうだった。
667デフォルトの名無しさん:2010/12/31(金) 02:07:22
>>666
私も経験でそう感じたクチだ。
MFCの時代から、ロジックとUIの分離に拘ったが、
やはりそのためのインフラから作らねばならないのが非常に面倒だった。
668デフォルトの名無しさん:2010/12/31(金) 08:03:58
バックグラウンドで、つまり最小化した状態で、
スクリーンショットを取ることは可能なのでしょうか。
教えていただけませんか。よろしくお願いします。
669デフォルトの名無しさん:2010/12/31(金) 08:35:22
可能です
670デフォルトの名無しさん:2010/12/31(金) 08:43:09
>>669
方法を教えてください。
アクティブウィンドウによる取得は考えていません(ALT+printsreec)。
671デフォルトの名無しさん:2010/12/31(金) 08:57:13
>>670
windowsXPってオフスクリーンバッファもってたっけ?
Aero搭載のOSは仕組み上確かオフスクリーンバッファでウインドウを持ってたはずだけどさ
672671:2010/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デフォルトの名無しさん:2010/12/31(金) 10:40:13
674デフォルトの名無しさん:2011/01/01(土) 22:23:30
>>666-667
分離しにくくね?
フォームを継承させて作ってる構造and適切なメッセージがきた瞬間にしか活きてない値(and動かない処理)がある
からか弄ろうとしたらコントロールの内部に潜り込む必要がある
のに、別のクラスにして強引に分離しようとするとデリゲートとか呼びまくらないといけなくなる
で、デリゲートって大抵そのクラス専用なわけで「あれ?これ分離とはほど遠くね?」って感じで結局分離できてなかったり・・・
ってことよくない?
675デフォルトの名無しさん:2011/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デフォルトの名無しさん:2011/01/01(土) 22:55:06
それは分け方がおかしいだけのようなw
677 【590円】 【ぴょん吉】 :2011/01/01(土) 23:04:19
明けましておめでとう
おまえら今年も何でも聞いてくれ
678デフォルトの名無しさん:2011/01/02(日) 01:40:40
>>675
それだとあとでViewだけ取り替えたい時大変だけどね
679デフォルトの名無しさん:2011/01/02(日) 03:58:52
というかMVCではないな
ビューとロジックの分離という文脈の上の話ならわかるけど
680デフォルトの名無しさん:2011/01/02(日) 04:12:17
Viewが交換可能なMVCの場合はViewにViewインターフェイスを実装して、
ControllerからViewインターフェイスとModelを使うという考えで合ってる?
681デフォルトの名無しさん:2011/01/02(日) 12:18:02
CからVに通知するときはインターフェイス使うしかないけど
Modelのプロパティをテキストボックスに表示するのはViewの仕事だよ
ViewのプロパティをぜんぶインターフェイスでControllerに公開してしまって
ViewをすっからかんにするとMVPになる
682デフォルトの名無しさん:2011/01/02(日) 12:26:06
質問ですが、MVCとかそこら辺の知識をお前様達は一体どうやって身につけましたか?
683デフォルトの名無しさん:2011/01/02(日) 12:39:53
C#での構造体に関する質問です。

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

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

>更にアイテムをD&Dでも並び替えできるようにもしたいのですがやり方教えていただけませんでしょうか。
検索すれば沢山見つかる。それを試してから出直してこい。
700デフォルトの名無しさん:2011/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デフォルトの名無しさん:2011/01/03(月) 11:41:20
UMLで書いたクラス図から自動でコード生成してくれるソフトを探してるんですが、
Visio以外というか、フリーでそんなものはありますか?
出来ればWindowsで動くと嬉しいです
702デフォルトの名無しさん:2011/01/03(月) 12:25:51
VSのクラスダイアグラム
703デフォルトの名無しさん:2011/01/03(月) 14:30:51
astah
704デフォルトの名無しさん:2011/01/03(月) 15:26:08
Visual Studio 2008(または2010、ともにPro) C#での質問です。
質問内容はコメントに関するものです。
たとえば、以下のサンプルのようなコードとコメントを書きました。
これは意図的に、コメント内のexceptionが実装と一致していない例ですが、これをコンパイル時や実行前に警告してくれるツールはないでしょうか。
また、<exception>忘れや、以下の処理で言うと、new FileStreamなどで発生するexceptionの記述漏れなどもフォローしてくれるツールがほしいです。
ご存知の方、よろしくお願いいたします。


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

というか自分で作れよ

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

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

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

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

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


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

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

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

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

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

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

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

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

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

基本無料3兄弟

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

>>769「無理です」 ←New!!
773デフォルトの名無しさん:2011/01/06(木) 13:47:30
ちょっと疑問
Control.Invoke()を複数スレッドから同時に呼んだ場合ってどうなるんだろう
InvokeはUIスレッドのみで動くんだから、暗黙的に排他になる?
もしそうならlock要らずになるんだけど、そんなこと書いてるサイトどこにもないし
774デフォルトの名無しさん:2011/01/06(木) 13:58:11
そりゃあUIスレッドは一個なんだから排他になるよ
775デフォルトの名無しさん:2011/01/06(木) 18:12:49
論理的に考えればそうなるが、それにしてはそういうやり方してるとこにお目にかからないのが気になる
ロックよりコスト掛かるとか?
776デフォルトの名無しさん:2011/01/06(木) 18:45:16
そういうやり方って何?
ロックの代わりにわざわざInvoke使うとか言うわけ?
777デフォルトの名無しさん:2011/01/06(木) 19:12:33
マネージドな12bitのJPEGを読み込めるライブラリないですか?
C++をラップしたアンマネージドなヤツはJPEG公式サイトで発見したんですが。
778デフォルトの名無しさん:2011/01/06(木) 19:26:01
複数のスレッドが画面に直接アクセスするのが汚いから少ないだけでしょ。
暗黙的な排他とかはどうでもよくて、InvokeはスレッドセーフとMSDNに書かれて
いるんだからlockが要るわけがない。
779デフォルトの名無しさん:2011/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デフォルトの名無しさん:2011/01/06(木) 23:38:32
JpegBitmapDecoderとかもアンマネージコードのラッパーだよ
System.Drawingもそうだし、グラフィック関連でpureマネージドなライブラリってほとんど無いと思う
781デフォルトの名無しさん:2011/01/06(木) 23:57:32
>>780
内部実装の問題じゃなくて、C# で書いててネイティブ意識するかどうかの問題じゃない?
COM ラッパーとかだと ref Type.Missing 地獄になるような、あのキモさがなければ。
782777:2011/01/07(金) 00:18:15
まず何をやってるかと言うとWinFormsアプリをSilverlightに移植してるのです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(略)

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

";
}

(略)

#endif

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

>>881
JITのキャッシュは保存されない。
複数起動してもプロセス間で共有されない。
プロセスが終了した段階で全て破棄される。

1回目が遅いのはコールド スタートアップだから
2回目が早いのはウォーム スタートアップだから +OSのディスク キャッシュが効いてるから

JIT自体は意外と早くて、CLRやJITコンパイラを読み込むためのディスクIOがでかい。
.NETランタイムはネイティブ イメージ サービスでngenされているため、JITされるのはユーザコードのみ。
.NETアプリがVista以降で起動が早いのはプリフェッチ機構でディスクIOの時間を削減できるから。
890デフォルトの名無しさん:2011/01/09(日) 00:01:10
一回起動したらネイティブイメージを保存しとけばいいと思うんだがどうしてそうしないんだろう
891デフォルトの名無しさん:2011/01/09(日) 00:09:48
実際ほとんど時間かからないから
>>889の言うように.NETアプリの起動時間はほぼディスクIO
892デフォルトの名無しさん:2011/01/09(日) 11:01:50
>>899
うぉーむすたーとあっぷってなんですか?
893デフォルトの名無しさん:2011/01/09(日) 11:06:55
高まる>>899への期待
894デフォルトの名無しさん:2011/01/09(日) 13:57:12
つーか、なんか会社のシステムに立地UI使ってもあれだよね・・

会社のアプリは地味なのが無難
895デフォルトの名無しさん:2011/01/09(日) 14:27:56
業務向けアプリでリッチさを売りにしようとするところって、
分析系の可視化くらいよね。

作業用端末をスレートっぽいのにしてタッチ UI にする、
その際に UI もうちょっと真剣に考えてみましょうとかはありかもしれないけど、
物理的なボタンの、指で押してる感覚ないと大分効率落ちるというし。
896デフォルトの名無しさん:2011/01/09(日) 18:00:39
yahooにログインするプログラムを作ろうとしている者です。
ログインページでPOSTすると、、、

Response

自動リダイレクト

Response
でリクエスト送信しいるようです。
そして、自動リダイレクト時のクッキーを送信したときに
正しくログインできるみたいなのですが
自動リダイレクト時のクッキーを
取得する方法・方法はありますか?
ご教授おねがいします。
897デフォルトの名無しさん:2011/01/09(日) 18:02:37
yahooってAPI提供してなかったっけ?
898デフォルトの名無しさん:2011/01/09(日) 18:09:10
複雑なことやりたいときはソケット使ったほうがいいよ
HttpWebRequest系は痒いところに手が届かない
899デフォルトの名無しさん:2011/01/09(日) 18:13:48
>>896
送信も受信もクッキー用のプロパティあるんじゃないの?
900デフォルトの名無しさん:2011/01/09(日) 18:18:40
901デフォルトの名無しさん:2011/01/09(日) 18:23:45
HttpWebResponse見ながらクッキープロパティ設定してリクエストすればいけるかも
902デフォルトの名無しさん:2011/01/09(日) 20:28:30
httpで通信するのにソケットからとかいってだるすぎだろ。
903デフォルトの名無しさん:2011/01/09(日) 20:58:32
つかCookie使うくらいで複雑ってすごいな
今まで良く生きてこれたな
904デフォルトの名無しさん:2011/01/09(日) 21:11:14
おまいら>>896のレスの意図をちゃんと読み取れよwww

>>896はログインできるコードをつくってうpしてってことだよ
どんだけなんだよw
905デフォルトの名無しさん:2011/01/09(日) 21:12:35
>>904
知ってるw
クッキーの使い方を解説してるサイトはあるんだし自分でやれってことだよ
906デフォルトの名無しさん:2011/01/09(日) 21:33:15
>>903
なんだとてめー表出ろ
907デフォルトの名無しさん:2011/01/09(日) 21:34:00
>>906
このクソ寒いのに表とかバカの上にマゾかてめーは
908デフォルトの名無しさん:2011/01/09(日) 21:36:37
>>907
この程度でクソ寒いってすごいな
今まで良く生きてこれたな
909デフォルトの名無しさん:2011/01/09(日) 21:46:19
試される大地では軒先で人が死んでんねんで
910デフォルトの名無しさん:2011/01/09(日) 21:56:45
WebRequestとか面倒だからWebBrowserを使ってログインするわ。
911デフォルトの名無しさん:2011/01/09(日) 22:03:57
もしかして: AllowAutoRedirect
912デフォルトの名無しさん:2011/01/09(日) 22:48:48
質問です。

Windowsアプリケーションで、再生ボタンを押してwavファイルを再生中に、またボタンを押すとまた一から音声が再生されます。
再生がやり直されず音声が重なるようにするにはどうすればいいでしょうか?
913デフォルトの名無しさん:2011/01/09(日) 22:50:23
>>912
そのコードは晒せる?
914デフォルトの名無しさん:2011/01/09(日) 23:25:34
>>911
>>896はそれだろう。
1.AllowAutoRedirectをfalseにする。
2.自動ディレクションせずに1回1回HttpWebResposeを取得。
3.RedirectUriを取得して、リクエスト実行。
4.RedirectUriがnullになるまで2,3を繰り返す。
でいいと思う。
ただし、クッキーをcookiecontainerでそのまま管理すると駄目。
cookiecontainerにAddすると、domain名の1文字目に"."が
追加されてしまうから。微調整が必要。
AllowAutoRedirectはデフォルトだとtrueだから
自動ディレクションでクッキー管理できないからね。
これで>>896は解決かな。
915デフォルトの名無しさん:2011/01/10(月) 16:35:01
タイマーの競合に関する質問です。

現在,Windows.Form.Timerを用いてプログラムを作っています。
一定間隔で動作するタイマーイベントを複数個作ったのですが、
このイベントが最小公倍数で競合を起こしてしまいます。

これを回避したいと思っています。

回避の仕方として考えているのが、
もしAとBが競合を起こしたら、Aをまず実行し、
A終了後必ず次にBを実行するということをしようと思っています。
もちろん複数個なのでタイマー 二個限りのことではありません。
どのようにすればできるのでしょうか。
916デフォルトの名無しさん:2011/01/10(月) 16:38:09
WinFormsのタイマのイベントハンドラは常にGUIスレッド上で呼び出されるので
平行して複数のイベントハンドラが動作するようなことはありません
917915:2011/01/10(月) 16:41:34
>>916
早速のご回答ありがとうございます。
もし同じ時間間隔を指定していても、
順番に指定したイベント全てを処理してもらえるのでしょうか?
918デフォルトの名無しさん:2011/01/10(月) 16:43:49
タイマーは1個にする
次までのインターバルは毎回処理で求める(A用なのかB用なのか、AB両用なのか)
タイムアウト時には何用かわかっているので、それに応じて処理する
(A処理のみ、B処理のみ、AB両方)
919デフォルトの名無しさん:2011/01/10(月) 16:44:43
1秒のタイマーを作成してカウンタが3で割り切れるときAを、5で割り切れるときBを実行すればいいとか
そういう話ではねえの
920デフォルトの名無しさん:2011/01/10(月) 16:46:25
順番に呼び出されます
呼び出される順序は、特に変わった実装になっていない限りは先に登録したものが先になるはずですが
保証されているわけではないので順序に依存するようなコードは書いてはいけません
921920:2011/01/10(月) 16:49:26
すまん上のは文脈を勘違いしたので無視して
922デフォルトの名無しさん:2011/01/10(月) 16:54:49
競合の意味がよくわからないけど、スレッドタイマー使うんじゃダメなの?
FormのISynchronizeInvokeインターフェイスからBeginInvoke呼び出せばGUIスレッドと合流できるし
923915:2011/01/10(月) 16:59:04
>>918
予めストップウォッチなどで時間を計っておき、
タイマーイベントが呼ばれたときに、
イベント関数内部でどういう処理を行うか判別するということですね。
つまり、指定時間がきたら、該当の関数を実行するという意味でしょうか?
違うのかな?
ところで、タイムアウト時というのは、
どうやってタイムアウトされたというタイミングを取得するのでしょうか。
また、ストップウォッチなどで時間計測していると、
長時間使用しているとオーバーフローが起こりそうで心配です。
924デフォルトの名無しさん:2011/01/10(月) 17:07:05
まず競合とはどのような状態なのか説明していただきたい
925デフォルトの名無しさん:2011/01/10(月) 17:07:47
>>923
ストップウォッチじゃなくてタイマー呼び出すごとにカウントされるカウンター使うんじゃね
タイマーが1秒呼び出しなら、1秒xカウントで秒数がでる
で、3とか5の倍数でそれぞれの処理を分けるっていう話じゃね
オーバーフローは21億だから21億秒以上動かすならlong型にすればいいと思うけどそれはまぁないな
926デフォルトの名無しさん:2011/01/10(月) 17:08:31
>>923
タイムアウトは普通にTickイベントじゃないの?
そもそも今どうやってんの?
927デフォルトの名無しさん:2011/01/10(月) 17:11:43
>>923
普通に考えるならスレッド立ててスリープ時間設定して起きたらイベント発生
928デフォルトの名無しさん:2011/01/10(月) 17:14:18
テレパススレw
929915:2011/01/10(月) 17:19:56
>>925
理解しました。まずはそのやり方でやってみます。
それでもできないようならスレッドタイマーを使うやり方も考えてみます。

他にもご回答くださった方、ありがとうございます。
930デフォルトの名無しさん:2011/01/10(月) 17:37:49
「複数のタイマー使いたいんですけどどうすればいいでしょう?」
という質問の答えが「タイマー1個にしろ」でいいのか?
931デフォルトの名無しさん:2011/01/10(月) 17:39:29
本人が納得するなら経過なんぞどうでもよかろうなのだ
932デフォルトの名無しさん:2011/01/10(月) 17:41:41
競合が起こりうるなら、1秒単位とかで駆動させて
処理Aと処理B用のカウンターをカウントアップして
時間になったら目的の処理を行えばいいだけ

>>930
よく分かってない人が2個タイマーが必要と思い込んでるだけの場合は
1個で・・・みたいなのでもいいと思うよ

どうしても2個じゃなければいけないという根拠があるならそりゃね・・・
933デフォルトの名無しさん:2011/01/10(月) 17:42:39
ちょっと不安になってきたんだが
timer1とtimer2のtickイベントがほぼ同時に起きたとしてなにか問題ってあるんか?
934デフォルトの名無しさん:2011/01/10(月) 17:43:47
大丈夫だ、問題ない
935933:2011/01/10(月) 17:48:27
どういう問題を想定しているのか、に訂正
バカな俺に教えてくれ
936デフォルトの名無しさん:2011/01/10(月) 18:02:30
一方のTickしか発生しないかもしれないと心配してるんだろ
普通に考えて全て順番に発生すると思うけどなぜ試さない
937デフォルトの名無しさん:2011/01/10(月) 18:06:42
カウントアップする方法だと誤差が大きいと思うが大丈夫か?
938デフォルトの名無しさん:2011/01/10(月) 18:07:37
>>936
タイマーってわりといい加減じゃなかったっけ?
AとBという処理があって同時に発生した場合は先にどちらかを・・というのであれば
>>932のように一つのタイマーでやるのが簡単でしょ
939デフォルトの名無しさん:2011/01/10(月) 18:08:38
大丈夫だ、問題ない
940デフォルトの名無しさん:2011/01/10(月) 18:09:11
>>937
なぜ?
941デフォルトの名無しさん:2011/01/10(月) 18:12:39
WM_TIMER自体優先度最低だから気にすんな
942デフォルトの名無しさん:2011/01/10(月) 18:13:08
GUIスレッドが忙しい時は呼ばれなかったりするんだっけ?
忙しくてキューに溜まりまくったタイマーイベントが一斉に発生とかあったら怖いな
943デフォルトの名無しさん:2011/01/10(月) 18:17:09
時計の秒針をすすめるとかどうでも良い処理ならGUIタイマーでいいかもしんないけど
厳密に処理したいときはスレッドタイマー使うべき
ていうか、ViewのコードでView以外のことするのは悪い習慣
944デフォルトの名無しさん:2011/01/10(月) 18:17:21
その場合は一つのタイマにつき一つにまとめられるはず
今問題になってるのはタイマが複数あったときに区別されるかどうかという話だろ?
それは心配要らない
945デフォルトの名無しさん:2011/01/10(月) 19:19:43
一番いいタイマーを頼む
946デフォルトの名無しさん:2011/01/10(月) 19:24:15
>>945
くそっこんなのでwwwあまりにも不意打ちwwww
947デフォルトの名無しさん:2011/01/10(月) 20:43:45
無料RPG製作ツール「ロープレジェネレーター」

 直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力することができます。
(HSP製のソースコード付きで、スクリプトの知識があれば自由度の非常に高いカスタマイズ
ができます)
他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定できたり、
乗り物が作れたりゲーム中に画像を差し込んだり、回転やフラッシュなどのエフェクト
なんかも簡単に作れる様です。戦闘はデフォだとドラクエ系。
移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。
 他にはオートアクションというのがあってオリジナルシステムの製作に役に立つかも
しれない機能です。これは、マップエディタで設定することで、「マップに入った時・
出た時・一歩歩いた時・戦闘開始前」に自動的に実行されるアクションを設定できる
機能です。
■分からないことや要望は掲示板へどうぞ。他にもいろいろ進化中みたい。
948デフォルトの名無しさん:2011/01/10(月) 21:07:44
OK
NGワードに登録した
949デフォルトの名無しさん:2011/01/10(月) 21:09:58
HSPかよ
950デフォルトの名無しさん:2011/01/10(月) 22:15:21
仮想キーコード定数をスキャンコードに変換する際に、
MapVirtualKeyを用いたくないのですが、
どのようにすれば実現できますか?
951デフォルトの名無しさん:2011/01/11(火) 00:09:16
お前らHSP馬鹿にするけどHSPで市販ゲームクラスのRPG作った奴いるんだぞ








まぁHSPはゴミだけどね
952デフォルトの名無しさん:2011/01/11(火) 00:15:04
「ロープレジェネレーター」とやらのネガキャンか、C#スレの荒らしのどっちか。
HSPユーザならゲ制作板以外の場所に張りに来るわけないな。
953デフォルトの名無しさん:2011/01/11(火) 00:16:09
HSPはC#と何か関係があるの?HSPはC#で作られてるとか
954デフォルトの名無しさん:2011/01/11(火) 00:19:45
関係ないよ
955デフォルトの名無しさん:2011/01/11(火) 00:20:38
以下この話題に触れた者には災いが訪れる
956デフォルトの名無しさん:2011/01/11(火) 00:37:58
最近やっと少女時代のメンバーの顔を見分けられるようになった
957デフォルトの名無しさん:2011/01/11(火) 00:41:46
顔認識ですか。興味深いですね
958デフォルトの名無しさん:2011/01/11(火) 00:55:10
どうせなら顔の作者まで見分けてくれ
959デフォルトの名無しさん:2011/01/11(火) 01:18:21
そんなに自分の顔ころころとかわってたの?
960デフォルトの名無しさん:2011/01/11(火) 07:12:19
.NETで顔認識とかマジかよ
961デフォルトの名無しさん:2011/01/11(火) 09:17:26
>>919>>925>>932の考え方(毎Tickカウントアップ)は超初心者が嵌り易い罠だから絶対に参考にしないように
タイマコントロールのTickイベントなんて簡単にずれるしすっ飛ばされる
既に何人かが指摘してるけど、明確に否定してあげないと今後も犠牲者が出そう
タイマコントロールを使うときは短くTickさせて毎回基準時との差分を見て処理させた方が良い
その点で>>923の方が優れたセンスを持ってる

>>930
「複数のタイマーが使いたい」なんて誰が言ってんだ?

>>936
お前が試しもせずに言ってる「普通」は完全に間違ってるわけだが何故試さない
962デフォルトの名無しさん:2011/01/11(火) 09:53:26
え?
963デフォルトの名無しさん:2011/01/11(火) 10:04:42
>>961
なんだとてめーセンスあるとか何様のつもりだ表出ろ
964デフォルトの名無しさん:2011/01/11(火) 10:06:53
私の為に争うのはやめてっ!!!>_<
965デフォルトの名無しさん:2011/01/11(火) 10:07:30
女はすっこんでろ!!
966デフォルトの名無しさん:2011/01/11(火) 10:14:41
俺の為に争うのはやめてっ!!!>_<
967デフォルトの名無しさん:2011/01/11(火) 10:16:48
俺女キモいです( ^ω^)
968デフォルトの名無しさん:2011/01/11(火) 10:20:02
>>963
異論があるなら聞いてやらんこともない
969デフォルトの名無しさん:2011/01/11(火) 10:41:11
>>968
ごめん、俺もその方法がすごくいいと思います。
ちょっと逝ってくる

    λ..............
崖| ̄ ̄ ̄ ̄ ̄
970デフォルトの名無しさん:2011/01/11(火) 10:48:37
>>968
僕もその方法がすごくいいと思います。
ちょっと吊ってくる

       ::                .|ミ|
       ::                .|ミ|
        ::               .|ミ|           ::::::::
         :::::     ____ |ミ|          ::::
           :: ,. -'"´      `¨ー 、       ::
   ::        /   ,,.-'"      ヽ  ヽ、    ::
   ::     ,,.-'"_  r‐'"     ,,.-'"`     ヽ、 ::
   ::   /    ヾ (    _,,.-='==-、ヽ         ヽ、
   ::   i へ___ ヽゝ=-'"/    _,,>         ヽ 
   ::   ./ /  > ='''"  ̄ ̄ ̄               ヽ 
  ::   / .<_ ノ''"       ヽ               i
  ::   /    i   人_   ノ              .l
  ::  ,'     ' ,_,,ノエエエェェ了               /
    i       じエ='='='" ',              / ::
    ',       (___,,..----U             / ::
     ヽ、         __,,.. --------------i-'"  ::
      ヽ、_   __ -_'"--''"ニニニニニニニニヽ   ::
         `¨i三彡--''"´              ヽ  ::  
          /                      ヽ ::              ┼ヽ  -|r‐、. レ |
         /                     ヽ::            d⌒) ./| _ノ  __ノ
971デフォルトの名無しさん:2011/01/11(火) 12:01:16
>>961
試してみたけど精度悪すぎワロタ
まさかここまでとは思ってなかったよ(´・ω・`)

試したい人用
http://ideone.com/VBhda
972デフォルトの名無しさん:2011/01/11(火) 12:16:52
PrintWindow以外で、かつALT+PrintScreen以外で、
隠れたウィンドウのキャプチャリングを行う方法を教えてください。
973デフォルトの名無しさん:2011/01/11(火) 12:18:09
>>969,970,971
一つ賢くなってよかったな
人の話を素直に聞く姿勢は大事
974デフォルトの名無しさん:2011/01/11(火) 12:31:34
>>973
常識的な手法をドヤ顔で話す>>973カコワルイ(´・ω・`)
975デフォルトの名無しさん:2011/01/11(火) 12:50:40
しかも自演っぽい。
976デフォルトの名無しさん:2011/01/11(火) 13:07:34
ばれたか
977デフォルトの名無しさん:2011/01/11(火) 13:11:54
俺がガンダムだ!!!
978デフォルトの名無しさん:2011/01/11(火) 13:14:50
>>977
お前だけはお呼びでない
俺はザクの方が好きだ
979デフォルトの名無しさん:2011/01/11(火) 13:23:40
>>975-976
自演っぽいぞw
980デフォルトの名無しさん:2011/01/11(火) 13:28:51
ばかたれ
981デフォルトの名無しさん:2011/01/11(火) 13:54:59
俺が自演だ
982デフォルトの名無しさん:2011/01/11(火) 14:05:30
コンソールアプリの新しいプロジェクトを作成して
名前空間を全部削除しました

program.csには

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}

だけ書かれています
ライブラリを使わずに文字を表示させるにはどうしたら良いでしょうか?
つまりConsoleクラスとその中のWriteメソッドを自作したいです
どういうコードを書けば表示できるのか興味本位の質問なので実用的でないのは承知してます
983デフォルトの名無しさん:2011/01/11(火) 14:23:39
C#じゃアセンブラは書けないなぁ
984デフォルトの名無しさん:2011/01/11(火) 14:25:03
実用的云々の前にframeworkとC#がどういうものか判ってない
MSDN読み直してくるべき
985デフォルトの名無しさん:2011/01/11(火) 14:27:47
Consoleクラスを自作したいならReflectorでソースコード見てみたら?
さすがにライブラリ使わずにっていうのは無理だろうけど
986デフォルトの名無しさん:2011/01/11(火) 14:27:56
Win32API呼べばいいよ
987デフォルトの名無しさん:2011/01/11(火) 14:29:10
Win32API呼ぶのにSystem.Runtime使うなよ
988デフォルトの名無しさん:2011/01/11(火) 14:40:55
>>987
じゃあSystem.Runtimeも自作で・・・

.net意味ねーw
989デフォルトの名無しさん:2011/01/11(火) 14:52:20
intやstringも使えないな
990デフォルトの名無しさん:2011/01/11(火) 14:58:48
DataGridViewがあまりにも使いにくいです。
助けて。
991デフォルトの名無しさん:2011/01/11(火) 14:59:32
ライブラリ使わずにシステムコールを呼ぶ仕様なんてWindowsにあったっけ?
なければ、リバースエンジニアリングしないかぎり、ライブラリは必須。
Linuxならアセンブラで呼ぶための仕様があったと思うけど。
992デフォルトの名無しさん:2011/01/11(火) 15:01:03
面白い記事見つけた
http://d.hatena.ne.jp/YokoKen/20081008/1223483460
これならライブラリなしでも自作できる!
993デフォルトの名無しさん:2011/01/11(火) 15:11:48
>>992
でその後どうするんだよ
994デフォルトの名無しさん:2011/01/11(火) 15:27:36
さあどうする
995デフォルトの名無しさん:2011/01/11(火) 15:30:34
それは知りません
996デフォルトの名無しさん:2011/01/11(火) 15:38:19
では終了します
997デフォルトの名無しさん:2011/01/11(火) 15:41:09
ところで・・・


998デフォルトの名無しさん:2011/01/11(火) 16:05:10
次スレの季節ですね。
999デフォルトの名無しさん:2011/01/11(火) 16:32:57
あえて>>999を踏もう

>>1000は任せるぜ。俺の屍を越えて行け・・・グフッ
1000デフォルトの名無しさん:2011/01/11(火) 16:34:08
だが断る
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。