C#, C♯, C#相談室 Part58

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part55 (実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

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

その他テンプレ>>1-5くらい
2デフォルトの名無しさん:2010/03/22(月) 21:38:11
関連スレ

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

Visual Studio 2008 Part 19
http://pc12.2ch.net/test/read.cgi/tech/1259076828/

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/
3デフォルトの名無しさん:2010/03/22(月) 21:39:19
参考リンク

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/
4デフォルトの名無しさん:2010/03/22(月) 21:40:51
質問する前に"必ず"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://codepad.org/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
5デフォルトの名無しさん:2010/03/22(月) 21:45:14
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

こっちが本当の前スレ
6デフォルトの名無しさん:2010/03/22(月) 21:45:49
>>1


前スレ
C#, C♯, C#相談室 Part57
http://pc12.2ch.net/test/read.cgi/tech/1265283175/
7デフォルトの名無しさん:2010/03/23(火) 08:45:19
codepadはC#ないじゃん。
ideoneにすればいいのに
http://ideone.com/
8デフォルトの名無しさん:2010/03/23(火) 11:59:11
イデオーン?
9デフォルトの名無しさん:2010/03/23(火) 17:09:29
ASP.NETサーバーを借りているんですが、
SecurityPermissionFlag.UnmanagedCodeのクラスは使えないらしく、
Mutexクラスが使えません

代替手段ってどんなものが考えられるでしょうか?
10デフォルトの名無しさん:2010/03/24(水) 02:29:07
part55>>997-1000
回答ありがとうございます。いろいろXMLについて調べてみます
11デフォルトの名無しさん:2010/03/24(水) 02:46:53
129:2010/03/24(水) 03:02:43
いちおう、ファイルが開けるかどうかで排他状態を管理するオブジェクトを作りました
他にいい方法があったら教えてください
139:2010/03/24(水) 03:04:46
あと、追加で質問です
ローカルでセキュリティのテストをしたいのですが、
コマンドプロンプトからSecurityPermissionFlag.UnmanagedCodeなどを禁止した状態で
実行する方法はないでしょうか?
14デフォルトの名無しさん:2010/03/24(水) 05:23:15
多分
ttp://msdn.microsoft.com/ja-jp/library/tkscy493(VS.80).aspx
のHigh設定になってるんじゃないかね?
15デフォルトの名無しさん:2010/03/24(水) 05:26:42
訂正、High以上の制限のどれか。
Mediumが多いのかな?
16デフォルトの名無しさん:2010/03/24(水) 20:05:23
>>15
Mediumです
ローカルでレンタルサーバーと同じ設定にしたいのですが、XPHomeなのでIISが使えません
なので、普通のコンソールアプリケーションでセキュリティを指定して実行する方法がないかなぁ・・と
17デフォルトの名無しさん:2010/03/24(水) 20:28:07
まず、IISがちゃんと動く環境を構築しなよ。
18デフォルトの名無しさん:2010/03/24(水) 20:55:52
つーか開発Webサーバ使え
19デフォルトの名無しさん:2010/03/25(木) 00:13:46
Formに処理をずらずら書きたくないのでコントロールではないクラスを
間にはさんでコントロールを管理したいんだがその管理クラスに土台となる
コントロールのインスタンスを渡すのは邪道だろうか?
20デフォルトの名無しさん:2010/03/25(木) 00:15:16
コントロールを管理って良く分かんないなぁ
21デフォルトの名無しさん:2010/03/25(木) 00:16:41
ビヘイビアみたいなもん?
22デフォルトの名無しさん:2010/03/25(木) 00:17:47
まあbuttonとかGUI部品をFormに貼り付けるとイベントハンドラが
Formの中にできますよね

Form上の部品もある程度機能ごとに分けれるので内部的に
自作クラスをはさんでコードも機能わけできればなあと
23デフォルトの名無しさん:2010/03/25(木) 00:23:40
日本語で説明だと分かりにくいですねw
管理クラスは自分が管理するコントロールを動的に生成します。
このほかにもHogeBなどと別の管理クラスがあってクラス間でやり取りするときは
デリゲートを使ってForm経由でやり取りします。

class HogeA
{
public HogeA(Control control)
{
Button button = new Button();
control.Controls.Add(button);
}
//イベントハンドラなどもこのクラスで管理
}
24デフォルトの名無しさん:2010/03/25(木) 00:35:36
>>23
もしユーザーコントロール(複合コントロール)のことを知らずに
ユーザーコントロール的なものをやろうとしてるのなら、別に普通。

ただFormのコードを見た目だけスッキリさせたい(何のために?)、
なんてだけの動機なら、恐らく愚行。
25デフォルトの名無しさん:2010/03/25(木) 00:37:00
FormはただのViewで実装はクラスファイルでしたいって言えば通じるよ
26デフォルトの名無しさん:2010/03/25(木) 00:38:31
>>24>>25
まあユーザーコントロールの存在は知ってるのですが
意味合い的には>>25のいうような感じですかね・・・
27デフォルトの名無しさん:2010/03/25(木) 00:53:18
>>26
そもそもコントロールの制御ってのは、>>25のいう「ただのView」の仕事なんだけど。
でなきゃViewの仕事って何があるんだよ。

逆に言えば、ロジックを実装してるクラスでコントロールなんか普通の常識があれば
触りたくないと思うだろう。

なんか>>25>>23も勘違いしてないか。
28デフォルトの名無しさん:2010/03/25(木) 00:56:03
>>27
まあ理由があるんですよ
デザイナーが出力するようなコードをわざわざ書いてる部分もあるんですが
どうしても動的に配置を変えたり、コントロールを動的に作るコードを書か
ないといけないので試行錯誤した結果こういう案ができあがったんですよ・・・

このクラスはviewを管理コントロールするクラスというか
29デフォルトの名無しさん:2010/03/25(木) 00:57:04
つまりMVC?
WPFではCはVに全く依存しないように作れるんだけど(MVVMという)
WinFormsではどこかでCにVを渡さないと無理
30デフォルトの名無しさん:2010/03/25(木) 00:57:07
理由があるならそうすればいい
邪道かどうかなんて聞くまでもない

邪道だと言った所で聞き入れないだろ?
31デフォルトの名無しさん:2010/03/25(木) 00:58:49
>>30
ほかに方法があれば〜と思っただけです
32デフォルトの名無しさん:2010/03/25(木) 01:04:10
>>29
まあそんな感じですね
33デフォルトの名無しさん:2010/03/25(木) 01:06:35
まあそもそもの原因がsplitContainerにあるんですが・・・
splitContainerって分割を変えると上からもしくは左からが基準になってますけど
下からとか右からってできましったっけ?
これができるといいんですが
34デフォルトの名無しさん:2010/03/25(木) 01:37:48
すまんが>>33の言いたいことが全く理解出来ない
Splitって二つ以上に分割できたっけ?
35デフォルトの名無しさん:2010/03/25(木) 01:40:12
>>34
panel1とpanel2と分割されるけど


panel1 panel2

panel1
panel2

っていうのはあるけど

panel2 panel1

panel2
panel1

はないよね?ってことじゃないの?
36デフォルトの名無しさん:2010/03/25(木) 02:02:41
継承してそういう機能付ければ
37デフォルトの名無しさん:2010/03/25(木) 02:28:41
panelを2つ置いて間にsplitter使ったら?
38デフォルトの名無しさん:2010/03/25(木) 22:45:11
ちょっと失礼するよ

仕事で使うみたいだからC♯の勉強をはじめたんだが
なにかを作りたいわけでもないのでイマイチはかどらないんだ

やっぱり目標は必要だよな?
プログラミングを独学学んだ人がいればどういう風に勉強に取り組んだか聞かせてもらえないかい?
39デフォルトの名無しさん:2010/03/25(木) 22:46:44
あきらめろよ。
40デフォルトの名無しさん:2010/03/25(木) 22:47:03
独学でやるような人はプログラミング自体が目的になってる
41デフォルトの名無しさん:2010/03/25(木) 22:50:02
>>39
はやくね?ww
>>40
現状そうだな
なにかを作るわけでもないから得た知識がすぐに抜けていく感じがするわ
42デフォルトの名無しさん:2010/03/25(木) 22:56:21
ゲームでも作れば
フォームアプリと違ってごまかしが効かないから勉強になるよ
43デフォルトの名無しさん:2010/03/25(木) 22:57:51
お題を出すスレがあるからそこの奴を作る
44デフォルトの名無しさん:2010/03/25(木) 23:02:32
なにか必要性や目的があるとか、プログラミング自体が楽しいとかでないなら意味なくね?
たぶん身につかないよ。
45デフォルトの名無しさん:2010/03/25(木) 23:05:10
あるそふとから出ている音を
マイク入力とすることってできませんか
46デフォルトの名無しさん:2010/03/25(木) 23:06:34
仕事用のちょっとしたツールでも作ってみればいいやん。
47デフォルトの名無しさん:2010/03/25(木) 23:39:56
はかどらないなりにやってればそのうち覚えると思うよ。
48デフォルトの名無しさん:2010/03/25(木) 23:42:02
>>45
・・・マイク出力端子をマイク入力端子に直結でいいやん。
49デフォルトの名無しさん:2010/03/25(木) 23:50:36
>>48
一つのソフトが出してる音だけ。
がほしいんです
50デフォルトの名無しさん:2010/03/25(木) 23:57:18
ステレオミキサー使えばいいんじゃない?
たまにハード的に使えないPCあるけど、その場合はオーディオストリームキャプチャー機能ついたソフトで。
51デフォルトの名無しさん:2010/03/26(金) 00:06:16
拍手の左手の鳴った音だけ欲しい。と仰るか。
52デフォルトの名無しさん:2010/03/26(金) 00:08:57
やるとしたら、DirectSound横取りして録音かなぁ。
http://www.4gamer.net/specials/tooearlytogetvista/003/tooearlytogetvista_003.shtml
よーわからん。
53デフォルトの名無しさん:2010/03/26(金) 02:54:11
どうせエロゲの音声だろ
54デフォルトの名無しさん:2010/03/26(金) 03:03:21
radikoでしょ。
55デフォルトの名無しさん:2010/03/26(金) 03:35:08
>>41
手っ取り早くなら専ブラ作れ

ざっくり学べる
56デフォルトの名無しさん:2010/03/26(金) 03:37:17
>>54
radikoだろうな

現状はrtmpをそのまま受信するあのツールを起動するGUIを書くか
質問のようにフックとかしてぶっこ抜きか、ごく普通な手段として
録音ソフトを別途起動するか

最後の方法は音が鳴っちゃうからなあ
57デフォルトの名無しさん:2010/03/26(金) 03:41:13
フックとかそんな面倒なことじゃなくて
ドライバ作ればいいだけじゃん
58デフォルトの名無しさん:2010/03/26(金) 03:52:24
>>57
ドライバー作れるようなのがどれだけいるのか

仮想デバイスドライバーくらいならやってみたいがどこから手をつけていいかわからん
59デフォルトの名無しさん:2010/03/26(金) 04:57:19
音声を女の声にするやつとかあるよな
60デフォルトの名無しさん:2010/03/26(金) 14:52:32
>>57
お前最高にアホだわ(^ω^;)
61デフォルトの名無しさん:2010/03/26(金) 16:06:11
誰も的確なレスが返せないみたいですし、時間の無駄みたいですね
プログラムに関する質問を日本語の掲示板に頼っている時点でここの連中の程度は知れますけど
まぁがんばってください
62デフォルトの名無しさん:2010/03/26(金) 16:09:19
>>61
なにぶちきれてるか知らんけど結論とすればC#でやることじゃないよってことだよw

・ほかのツールで録音すれば?->C#は関係ないし
・ドライバー作れば?->C/C++の話だし
・フック->これもC/C++の方がいいだろう
63デフォルトの名無しさん:2010/03/26(金) 17:15:07
何使うにせよ言語スレでやるような話題じゃない
64デフォルトの名無しさん:2010/03/26(金) 17:31:32
C#でするのは難しいと言うことなので
C/C++のほうで考えてみます
質問に答えてくださってありがとうございます。
65デフォルトの名無しさん:2010/03/26(金) 19:06:27
仕事でC#使うから勉強に、ってのが最初の話じゃなかったのか・・・Cのほうに行ってどうすんだよ
66デフォルトの名無しさん:2010/03/26(金) 19:15:59
それ別人とちゃうの?

仕事で〜

radikoの録音で〜
67デフォルトの名無しさん:2010/03/26(金) 19:16:44
>>65
どう見ても別人だろ・・・
68デフォルトの名無しさん:2010/03/26(金) 19:35:02
Buttonをクリックした時だけそのボタンのツールチップを
表示させようとしているのですが、1回クリックして表示すると
2回目以降はButtonにフォーカスを当てただけで表示されてしまいます。
Buttonに紐付けられたツールチップのオブジェクトの参照を
無効にするには、どのタイミングのイベントで行えばよいでしょうか?
69デフォルトの名無しさん:2010/03/26(金) 19:38:48
Leaveとかじゃね
70デフォルトの名無しさん:2010/03/26(金) 20:10:36
>>68
MSDNライブラリのToolTipsメンバ一覧を見てそれを言ってるとしたらかなり頭が悪い。
見ずにいってるとしたら性格が異常。
71デフォルトの名無しさん:2010/03/26(金) 20:16:02
>>69
MouseLeaveで解決しました。

>>70
ありがとうございます。
72デフォルトの名無しさん:2010/03/26(金) 23:30:50
Showメソッド使ってやれよ、せっかくあるんだから。
73デフォルトの名無しさん:2010/03/26(金) 23:50:25
form1でハローワールドやってるものです。 
javaだとpublic static void mainというところでインスタンスを作るけど 
c#はその必要はないのですか?
74デフォルトの名無しさん:2010/03/26(金) 23:52:38
>>73
プロジェクトのフォルダにあるProgram.csを見てみるといい。
75デフォルトの名無しさん:2010/03/26(金) 23:57:33
>>73
ない
windowsアプリの場合Program.csの中のstatic void Main()で勝手にやってる

デザイナーでデザインした際に自動で書いてくれるコードは
Form1.Designer.csの中に入ってる。(Form1のコンストラクタがInitializeComponent()を呼び出してる)

こんな構造

なので基本的にはコンストラクタのInitializeComponent();の後か
Loadイベントを作ってその中にコードを書くなどすればOK
76デフォルトの名無しさん:2010/03/27(土) 00:00:19
VS2003の頃はフォームの中にMainが作られてたな
Javaなんかだと何故かあれを好む人がいるけど普通に考えたら不自然だよな
77デフォルトの名無しさん:2010/03/27(土) 00:02:21
>>76
不自然だねw

IDEが勝手に用意していきなり作られるForm1だって所詮はFormを継承したクラスに過ぎないからねえ
プログラムとしてみると今の方が普通
78デフォルトの名無しさん:2010/03/27(土) 00:05:00
>>74>>75
確認しました。ありがとうごぜいます。
そのようにいたします。
79デフォルトの名無しさん:2010/03/27(土) 07:07:06
海外サイトで見つけたクラスをそのまま使ってるコードを
sourceforgeで晒すのって問題あるんだろうか?
コメントで入手先とか書いとけばいいのかな?
80デフォルトの名無しさん:2010/03/27(土) 07:25:27
>>79
書いた人間に訊けよ
そんなこと他の誰も許可できん
81デフォルトの名無しさん:2010/03/27(土) 07:26:50
ライセンスないなら聞け
82デフォルトの名無しさん:2010/03/27(土) 07:29:12
いちいち聴く必要ないだろ
めんどくさい
83デフォルトの名無しさん:2010/03/27(土) 08:50:54
自己責任じゃね?
84デフォルトの名無しさん:2010/03/27(土) 18:08:56
別のプロセスが使用中のファイルを開くと例外がでるのですが、
ファイルを開く前にプロセスで使用中か調べる方法ってありますか?
85デフォルトの名無しさん:2010/03/27(土) 18:12:55
ファイルを開く前に調べても
ファイルを開く時には使用中かもしれないので
全くの無駄な行為でしかない
86デフォルトの名無しさん:2010/03/27(土) 18:15:17
>>85
ファイルを開くときに使用中でも問題ないです
例外を処理する回数を減らしたいので
87デフォルトの名無しさん:2010/03/27(土) 18:18:32
事前にチェックしてもしなくても、例外の処理回数は変わらないだろ。
88デフォルトの名無しさん:2010/03/27(土) 18:21:25
Exist()は使用中かどうかも調べてくれなかったっけ
89デフォルトの名無しさん:2010/03/27(土) 18:24:47
そんなんない。
90デフォルトの名無しさん:2010/03/27(土) 18:26:36
全てのプロセスを列挙して、それらが使っているハンドルを列挙
その中に目的のファイルがあるかどうか調べる

という感じだっけ?
91デフォルトの名無しさん:2010/03/27(土) 18:26:54
>>86
なるほどそういうことね
Existsでいいんじゃない
>呼び出し元が必要なアクセス許可を持ち、path に既存のファイル名が格納されている場合は true。
>それ以外の場合は false。
>呼び出し元が指定したファイルを読み取るための十分なアクセス許可を持たない場合、例外はスローされず、
>このメソッドは、path の有無にかかわらず false を返します。
92デフォルトの名無しさん:2010/03/27(土) 18:34:29
>>87
別のプロセスが使用中のときはファイルを開きません

>>88,91
File.Existsは読み取り許可をチェックするだけみたいです
1: 2: ともにTrueになりました
File.WriteAllText("aaa.txt", "test", Encoding.UTF8);
Trace.WriteLine("1: " + File.Exists("aaa.txt"));
using (var stream = File.OpenWrite("aaa.txt"))
{
Trace.WriteLine("2: " + File.Exists("aaa.txt"));
}

>>89
やっぱりないんですかね

>>90
そこまでするなら例外を処理したほうが良さそうです
93デフォルトの名無しさん:2010/03/27(土) 18:41:09
使った事無いけど、FileSecurityってのは使えない?
94デフォルトの名無しさん:2010/03/27(土) 18:41:50
使えない。
95デフォルトの名無しさん:2010/03/27(土) 18:44:40
>>92
>>85 の言ってること理解しようよ。

1. ファイルが他のプロセスで開かれてるかチェック
2. 開かれてないので、自分のアプリで開く
3. 1. - 2. の間に他のプロセスが開いてたら例外発生

なんだから、いきなり 2. をやって例外をトラップすればいいだけ。
96デフォルトの名無しさん:2010/03/27(土) 18:59:55
>>95
>>86の言ってる事を理解しようぜ
97デフォルトの名無しさん:2010/03/27(土) 19:04:06
まあ最終的な結論としては>>95なんだけどね
98デフォルトの名無しさん:2010/03/27(土) 19:05:27
まったく理解できん。事前にチェックすると、なんで例外処理の回数が減るの?
99デフォルトの名無しさん:2010/03/27(土) 19:28:28
仮に例外処理なしで事前にチェックできるなら
2 を実行しない分例外処理の回数が減るだろ
100デフォルトの名無しさん:2010/03/27(土) 19:29:48
例外処理が発生するのは1-2の間に他プロセスで開かれた時のみ
超レアケースだな
101デフォルトの名無しさん:2010/03/27(土) 19:30:34
>>98
自分のアプリからしか使わないファイルで、
そのアプリが多数で同時に使われないなら減るんじゃね。
102デフォルトの名無しさん:2010/03/27(土) 19:32:05
まあ数万ファイル/秒、しかもその中の相当数がロックとかいう意味不明な状態じゃない限り
有意な差はないだろうけどな
103デフォルトの名無しさん:2010/03/27(土) 19:32:31
例外の発生件数を減らす意味ってあるの??
チェックとロック(=ファイルオープン)がアトミックじゃないなんて
典型的なダメダメファイルロックじゃんね。
104デフォルトの名無しさん:2010/03/27(土) 19:33:57
>>103
実行コストでしょ
例外処理より軽い確認処理があるなら先にやっといて損はない、可能性がある
まあほとんどの場合無意味、むしろ不利益になる可能性の方が高いだろうけど
105デフォルトの名無しさん:2010/03/27(土) 19:35:04
いやこの場合はあらかじめチェックした方が遅くなるだろ
106デフォルトの名無しさん:2010/03/27(土) 19:36:44
例外の発生するケースの方がレアならそうだろうね
107デフォルトの名無しさん:2010/03/27(土) 19:39:15
というかチェックのコスト自体が大きいはずだからな
108デフォルトの名無しさん:2010/03/27(土) 19:39:46
えーと、やりたいことはこのスレの>>12です
Mutexが使えないので、ファイルの排他処理でMutexをエミュレートしてます
なので、正常ケース:例外ケースが1:10000くらいになってしまい、
例外を処理するのは効率悪いのではないかと・・・
109デフォルトの名無しさん:2010/03/27(土) 19:40:14
>>107
( ̄ー ̄)ハァ?
110デフォルトの名無しさん:2010/03/27(土) 19:40:55
ようやく理解できた。
が、そんなこと気にするより、わかりやすくてシンプルなコードの方がいいと思うよ。

ちなみに、他のプロセスがファイルを開いているかどうかは、>>90みたいな感じで
非公開関数を使うか、openfiles コマンドみたいなのを使う必要あり。
111デフォルトの名無しさん:2010/03/27(土) 19:42:02
ランチャーとかどうやって作ってるんだろうな
112デフォルトの名無しさん:2010/03/27(土) 19:42:24
実際に計ってみましたか?
113デフォルトの名無しさん:2010/03/27(土) 19:42:27
>>106
おまえの存在してるケースの方がレアじゃね。
114デフォルトの名無しさん:2010/03/27(土) 19:42:53
ASP.NETでサーバ単位の排他とか謎だな、としか
115デフォルトの名無しさん:2010/03/27(土) 19:43:38
>>112
計りましたが・・・
116デフォルトの名無しさん:2010/03/27(土) 19:43:43
.NET 2.0でListView使ってるんですが、
複数アイテムを洗濯した状態でチェックボックスをクリックすると、
ItemCheckedがアイテム毎に呼ばれるので処理が重くなってしまいます。

何かいい案ないでしょうか。

やりたいこととしては、
チェックが変更された事を契機としたチェックされているアイテム数の表示です。
117デフォルトの名無しさん:2010/03/27(土) 19:44:55
あります。
118デフォルトの名無しさん:2010/03/27(土) 19:44:58
計った?何と何を?
119デフォルトの名無しさん:2010/03/27(土) 19:46:14
開いているかどうか、じゃなくて、存在するかどうかを判定条件にすれば、
もう少し楽になると思うよ。
120デフォルトの名無しさん:2010/03/27(土) 19:49:36
ありません。
121デフォルトの名無しさん:2010/03/27(土) 19:54:24
>>116
ItemCheckedじゃなくてタイマで定期的に調べるようにしたら
122デフォルトの名無しさん:2010/03/27(土) 19:59:30
チェックのコストは大きいぞ。API呼ぶんだから。
そんでもって実際に開くときに同じこともう一度やるはめになる。
123デフォルトの名無しさん:2010/03/27(土) 20:03:56
>>119
あ!まさにそれがベストっぽいですね!
ありがとうございました!

>>122
開けないケースのほうが数多いので、開くときのコストは大きくてもOKです
124デフォルトの名無しさん:2010/03/27(土) 20:10:07
以上、目的と手段がごっちゃになった例、でした。
125デフォルトの名無しさん:2010/03/27(土) 20:25:34
ここで質問していいのかわからないので、まずかったら教えてください

ネット上でフリーで公開されているソースコード?と呼ばれるものを
実行ファイルにしたいのですが(そこでは実行ファイルそのものは公開されていない)
拡張子が「xxxx.c」となっているのですが、これはコンパイルというものをすれば実行ファイルに変わるのでしょうか?

プログラムは完全に初心者なので、どういうソフトで作業を行うのかすらわかりません
4つほど公開されいるソースコードを実行ファイルにするだけです

なにかフリーで手頃なソフトがもし存在するのであれば、教えて頂けると助かります

すれ違いの質問であれば、失礼致しました
126デフォルトの名無しさん:2010/03/27(土) 20:27:13
とても失礼です。
127デフォルトの名無しさん:2010/03/27(土) 20:29:58
そういう理解でいいですが、.c の場合は、Cコンパイラが必要です。
ここは C# のスレなので、スレ違いです。
128デフォルトの名無しさん:2010/03/27(土) 20:32:05
>>116
System.Timers.TimerをAutoReset=falseにしといて、Intervalは33ぐらい、
タイマのイベントで数えて表示、
でItemCheckedではタイマのStart呼び出すだけ、とか
129デフォルトの名無しさん:2010/03/27(土) 20:33:17
C#というのはCのすごい版…みたいな解釈をしていましたorz
該当スレを探して、再度そちらで質問させて頂きます

スレ違い失礼いたしました
130デフォルトの名無しさん:2010/03/27(土) 20:33:57
スレ立てるまでもない質問スレはなくなったんだな
131デフォルトの名無しさん:2010/03/27(土) 20:35:06
>>129
いや、君のレベルだと人に聞く前にとりあえず基礎を調べてから勉強しといたほうが・・・。
132デフォルトの名無しさん:2010/03/27(土) 20:38:21
>>128
なぜSystem.Windows.Forms.Timerじゃないんだよ。
133デフォルトの名無しさん:2010/03/27(土) 20:42:50
>>132
AutoResetが便利だからつい
SynchronizingObjectはコンポーネントとしてデザイナにD&Dすれば自動設定だし
134デフォルトの名無しさん:2010/03/27(土) 20:42:52
アレはうんこなので
135デフォルトの名無しさん:2010/03/27(土) 20:43:23
>>128
UIをUIスレッド以外で弄ると発狂するよ
136デフォルトの名無しさん:2010/03/27(土) 21:00:37
このスレの奴はレベルが低いのがよく分かるな。
低いってのは回答する側の方。
ググって過去スレなんか見た時なんかひどいもんだ。
137デフォルトの名無しさん:2010/03/27(土) 21:01:19
>>135
SynchronizingObject
138デフォルトの名無しさん:2010/03/27(土) 21:03:54
>>136自己紹介乙
139デフォルトの名無しさん:2010/03/28(日) 01:17:23
>>133
理由になってない
140デフォルトの名無しさん:2010/03/28(日) 09:56:10
すいません、質問します。

TabControlについて研究していますが、
たとえば、JaneStyleにあるようなタブコントロールだと、
タブを左クリックすれば、すぐにそのタブが選択されますが、

一般的な.netのTabControlで、JaneStyleのようなFlatButtonの場合ですが、
マウスの右ボタンを押下(DOWN)した状態で→軽くボタンが浮き上がる表示(この状態ではまだ選択という状態になっていません)
そして、
マウスの右ボタンを離した(UP)した状態で→ボタンが押された表示(この状態で、タブが選択されたという状態になります)
となるのですが、
http://ghardzatudan6.es.land.to/up/img-box/img20100327070642.jpg

Janeのように、マウスの右ボタンを押下(DOWN)した段階で、すぐに、そのタブが選択されるような処理をしたい
場合はどのようなコードを入れればいいのでしょうか?
Janeで実装できているのですから、VB.NETでも実装できないわけないと思い、調べていますが、
解決できません。
だれかご存知な方はいらっしゃいますか?
141デフォルトの名無しさん:2010/03/28(日) 10:23:47
ClickじゃなくてDownイベントいいんでないの?
142デフォルトの名無しさん:2010/03/28(日) 10:32:11
VBスレ行けw
143デフォルトの名無しさん:2010/03/28(日) 10:36:07
そうだな。なぜ此処で聞くw
144デフォルトの名無しさん:2010/03/28(日) 11:01:00
>>140
VBスレで答えがなかったからこっちに書いたと思うけど、
うそでも「C#でも実装できないわけないと思い、」と書いておけw

.NET の TabControl の MouseDown イベントで、どのボタンを
押そうとしているのかとか、マウスポインタがどのボタンの上に
あるのかとかが、取り出せないような気がするので、自分の
希望の挙動をするコントロールを自作しないといけないような
気がする。
145デフォルトの名無しさん:2010/03/28(日) 12:36:12
気がする。笑
146140:2010/03/28(日) 12:58:09
解決しました

Captureを外して(false)、その後、SelectedIndexに選択するインデックスを
設定すれば、ワンクリックで選択されるようになりました。
147デフォルトの名無しさん:2010/03/28(日) 13:01:16
>>146


そういえば、.NETスレないよね
C#とVBで分ける意味がわからない
148140:2010/03/28(日) 13:06:08
通常のTabControlとJaneStyleのタブコントロールでの呼ばれる
イベントの違いをSpyで比べてたら、
JaneStyleに、「WM_CAPTURECHANGED」が呼ばれてたので、あぁ、
そうかキャプチャーの存在あったか、って思い出して、
解決。
http://ghardzatudan6.es.land.to/up/img-box/img20100328130005.jpg

大変ご迷惑おかけしました。失礼します。
149デフォルトの名無しさん:2010/03/28(日) 13:07:02
どうせ言語の質問に終始するだけだろ
CLRの挙動やFCL全体について質問する奴は少なそうだし
150デフォルトの名無しさん:2010/03/28(日) 13:13:04
>>149
愚痴は目障りやめろ
151デフォルトの名無しさん:2010/03/28(日) 13:16:21
VBユーザの中にはC#を絶対に読もうとしない民族がいる
152デフォルトの名無しさん:2010/03/28(日) 13:17:13
>>150
お前が.NETスレ立てて頑張ってくれ
153デフォルトの名無しさん:2010/03/28(日) 13:17:14
底辺同士仲良くすればいいのにね
154デフォルトの名無しさん:2010/03/28(日) 13:18:45
ですね
155デフォルトの名無しさん:2010/03/28(日) 13:19:26
.NETスレがあっても事実上C#スレになっちゃうからな
VBスレ以外の.NET関連のスレでVBのコードはほとんど見かけない
156デフォルトの名無しさん:2010/03/28(日) 13:21:39
C#でコード例とか書いたら、「C#わからないのでVBのコードください」とか言うやつが
出てくるだけ。

なので、言語ごとでいいんじゃね?
157デフォルトの名無しさん:2010/03/28(日) 13:24:49
コンバートしろって言って置けばいいんじゃね?

コンバートしてくれるサイト
http://www.developerfusion.com/tools/convert/vb-to-csharp/
158デフォルトの名無しさん:2010/03/28(日) 13:25:06
俺VB.NETほとんど知らないけど、MSDNのサンプル位なら余裕で読めるな
.NETFrameworkを使う以上、そんなに差は出ないんで
159デフォルトの名無しさん:2010/03/28(日) 13:26:24
>>157
ところが「変換したものをコピペしてみましたが動きません」とか言い出すんだ
160デフォルトの名無しさん:2010/03/28(日) 13:27:27
面倒だからC#で実行ファイル作って、VBソースとして復元しろw
161デフォルトの名無しさん:2010/03/28(日) 13:31:24
>>156
C#とVBってキーワードが違うだけなのに。それはOOPが理解できてないってことなんじゃ?
162デフォルトの名無しさん:2010/03/28(日) 13:32:49
163デフォルトの名無しさん:2010/03/28(日) 13:39:40
VBにしかないの無かったっけ
Myなんたら

それはそれとしてRichTextBoxで挿入/上書きモードが解る方法ないですか
164デフォルトの名無しさん:2010/03/28(日) 13:52:51
>>163
ない キーイベントで自分で管理する
165デフォルトの名無しさん:2010/03/28(日) 13:59:44
>>163
名前付き引数とか省略可能な引数とか。
COMを呼ぶときに便利だよ。
C#からExcelを呼ぶときにMissingを死ぬほど埋めるのはさすがにしんどい。
166デフォルトの名無しさん:2010/03/28(日) 14:04:46
最近プログラム初めたのですが(C#)
今開発中のソースコードを見せて
おっ これは! とか
こいつw とか
わいわいできるスレッドはありますか?
167デフォルトの名無しさん:2010/03/28(日) 14:07:59
>>165
名前付き引数と省略可パラメータはC#4.0で追加
なんかもうCOMはラッパー使わずに全部dynamicでやってもいいんじゃないかとも思うけどな
Silverlight4なんかそうなってる
168デフォルトの名無しさん:2010/03/28(日) 14:34:14
>>167
あと、インテリセンスだけは効いてくれるとありがたいんだけどなぁ。
169デフォルトの名無しさん:2010/03/28(日) 14:35:10
>>167
IDispatchはともかくIUnknownはどうすんのよ
170デフォルトの名無しさん:2010/03/28(日) 14:36:44
dynamicではキャストも動的にバインドされるから問題ない
171デフォルトの名無しさん:2010/03/28(日) 14:50:31
>>163
public partial class Form1 : Form {
[DllImport("user32.dll")]
public static extern int GetKeyboardState(byte[] lpKeyState);
static bool isOverType() {
byte[] barr = new byte[256];
const int VK_INSERT = 0x2D;
GetKeyboardState(barr);
return 0 == (barr[VK_INSERT] & 0x01);
}

public Form1() {
InitializeComponent();
setTextMode();
}
void setTextMode() {
toolStripStatusLabel1.Text = isOverType() ? "Ins" : "Ovr";
}
private void richTextBox1_KeyUp(object sender, KeyEventArgs e) {
setTextMode();
}
}

こんな感じでいいらしい。
172デフォルトの名無しさん:2010/03/28(日) 15:01:43
>>171
Ins状態はコントロールごとに独立してるから、キーのトグル状態調べるだけじゃダメ
173デフォルトの名無しさん:2010/03/28(日) 15:28:32
VS(2008)でボタンを作成後、Visibleプロパティをfalseにすれば当然「表示されなくなる」が
その状態で他の要素から"Perform.Click"しても実行されないのは仕様?
Visibleは可視/不可視の設定だけだと思うんだが、Enableみたいな動き方をしてちょっと困ってる。
174デフォルトの名無しさん:2010/03/28(日) 16:05:43
はは、画面上に存在してない物をどうやってクリックするって言うんだい
175173:2010/03/28(日) 16:21:48
>>174
プログラムの内部的には有効だから動くんじゃないかと思っていたんだが、動かないのか。
ラベルなんかはVisibleをfalseにしても使えるんで、当然ボタンも使えると思っていた。
176デフォルトの名無しさん:2010/03/28(日) 16:24:35
ラベルの何のイベントだよ
177デフォルトの名無しさん:2010/03/28(日) 16:25:10
>>172
とりあえずは動いてるんだが(テストアプリだけに独立してIns/Ovr状態が働いて
いるというレベルで)、正しくはどうやるの?
178173:2010/03/28(日) 16:29:35
>>176
ただ文字列を格納するだけ。
まあでも出来ないのが仕様と分かったんでd。
179デフォルトの名無しさん:2010/03/28(日) 16:33:02
>>178
ラベルの格納とイベントはちげーだろw
表示されてないってことはイベント拾うための処理がスルーされるってことだぞw
180173:2010/03/28(日) 16:35:37
>>179
dd。
了解(`・ω・´)
181デフォルトの名無しさん:2010/03/28(日) 16:36:04
>>177
>>164
IsOverwriteModeがあるMaskedTextBoxのOnKeyDownでもそう実装してる

RichTextBox二つ並べて、片方でInsキー押して上書きモードにしても
もう片方のRichTextBoxの方は挿入モードのままでしょ
この状態でどっちにフォーカスがあろうがGetKeyboardStateで取れるInsキーのトグル状態は同じ
182177:2010/03/28(日) 17:02:52
おー、駄目だわ。メンドウだな。
183177:2010/03/28(日) 17:30:34
[DllImport("user32.dll")]
public static extern int GetKeyboardState(byte[] lpKeyState);
static bool isOverType() {
byte[] barr = new byte[256];
const int VK_INSERT = 0x2D;
GetKeyboardState(barr);
return 0 != (barr[VK_INSERT] & 0x01);
}
void setTextMode(ToolStripStatusLabel lab) {
lab.Text = isOverType() ? "Ovr" : "Ins";
}
bool OverType1 = false;
bool OverType2 = false;
public Form1() {
InitializeComponent();
toolStripStatusLabel1.Text = OverType1 ? "Ovr" : "Ins";
toolStripStatusLabel2.Text = OverType2 ? "Ovr" : "Ins";
setTextMode(toolStripStatusLabel3);
setTextMode(toolStripStatusLabel4);
}
private void richTextBox1_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Insert) OverType1 = !OverType1;
toolStripStatusLabel1.Text = OverType1 ? "Ovr" : "Ins";
setTextMode(toolStripStatusLabel3);
}
private void richTextBox2_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Insert) OverType2 = !OverType2;
toolStripStatusLabel2.Text = OverType2 ? "Ovr" : "Ins";
setTextMode(toolStripStatusLabel4);
}
スレの肥やしに、試してみた比較コードは貼っておこう。自分で管理せにゃならんのか。
184デフォルトの名無しさん:2010/03/28(日) 18:03:08
Visible=Falseだとイベントも向こうになるよ。
185デフォルトの名無しさん:2010/03/28(日) 22:16:40
(`・ω・´)
186デフォルトの名無しさん:2010/03/28(日) 23:04:39
ファイルシステムを単体テストするときのために、Fileクラスなどを置き換えるクラス作ってる人いる?
StrategyパターンでFileクラスとテスト用のFileクラスを切り替えられるようなやつ

ちょっと必要になったから同じようなことしている人がいたら意見聴きたい
187デフォルトの名無しさん:2010/03/28(日) 23:06:36
ファイルシステムなんて作ろうとも思わない。
188デフォルトの名無しさん:2010/03/28(日) 23:07:26
なんでStrategy?
IFileでいいじゃん
189デフォルトの名無しさん:2010/03/28(日) 23:12:51
Fileは無理じゃないかな、staticだし。mscorlib.dll 内だし。
プロキシかませてやることを抽象化しておいて、それを置き換えるくらいしか。
どのみちファイルシステムの単体テストにはなんないけど。
190デフォルトの名無しさん:2010/03/28(日) 23:19:32
>>187,189
説明不足でした
ファイルシステムを使うシステムの単体テストです

>>188
インターフェイスだとFileクラスに適用できないので
191デフォルトの名無しさん:2010/03/28(日) 23:20:13
こういうやつです

public class Client
{
public FileBase FileBase { get; set; }
public void DeleteXXXFiles()
{
...
FileBase.Delete("aaa.txt");
...
}

[TestFixture]
public class ClientTest
{
[Test]
public void DeleteXXXFilesTest()
{
var c = new Clinet();
var testfile = new TestFile();
c.FileBase = testfile;

c.DeleteXXXFiles();

Assert.IsFalse(testfile.Files.Contains("aaa.txt"));
}
}
192デフォルトの名無しさん:2010/03/29(月) 00:09:34
こういうのMockっていうみたいだな。英語の情報ばっかで読めない・・・
定番のファイルシステムモックとかないんかな
193デフォルトの名無しさん:2010/03/29(月) 00:36:39
単体テストのときには実際にファイル作るからそんなのいらない
194デフォルトの名無しさん:2010/03/29(月) 00:40:59
ばかばっか
195192:2010/03/29(月) 02:01:26
>>194は俺ではないです。念のため
196デフォルトの名無しさん:2010/03/29(月) 08:54:39
ファイルぐらいだったら作っちゃった方が早いかもねえ。
ネットワークとかDBだったらモックあるならモック使うけど。
197デフォルトの名無しさん:2010/03/29(月) 12:47:20
Windows7用APICodePack使ってDirect2Dためしてみた。
直径80ピクセルぐらいのEllipseを、あらかじめ用意していたSolidBrushからランダムに切り替えながら3000個描画するのに130ミリセクぐらいなんだがこんなもん?
マシンはCore2Duo9300、グラフィックは965Expressのオンボード。
同じような内容をGDI+でやるとダブルバッファーなしで9秒ぐらいだった。ダブルバッファーありだと40ミリせく。
198デフォルトの名無しさん:2010/03/29(月) 12:54:55
C#からDirect2D使う意味がわからん
C++向けのちょっと低レベルなWPFだろあれ
199デフォルトの名無しさん:2010/03/29(月) 17:18:09
>>197
よくわからんけど.netでグラフィックって考えてるならやねうらお氏のところが
確か.net時代のゲームつくりってのでライブラリ公開しててそれが標準コントロールに
描画してた記憶があるのであれでみてきてみなよ
200デフォルトの名無しさん:2010/03/29(月) 17:50:10
>>199
それ触ったことあるけど大した機能もない割に癖が強くて気持ち悪い
コントロールに直接描画するだけならDirect3Dで普通にできる
201デフォルトの名無しさん:2010/03/29(月) 17:54:12
C++でしか触ったことないけどhWndからサーフェイス取って描画できるから
C#でできないってことはないわ
202197:2010/03/29(月) 19:19:02
説明足らずですいません。
試したかったことはVista以降で動くはずのDirect2Dでの高速描画のテストです。
GDI+よりも高速にかけると色々と都合が良かった(既存のライブラリの以降に)のでどんなもんかと。
自分も詳しく把握してないですが,要はDirect3Dサーフェスを使ってかけるアクセラレーションの聞く2D描画APIという認識でいます。
WPFとかぶるところもありますが、Direct2Dはよりプリミティブな描画APIだと思っています。
テキスト描画とかからむとNativeAPIもしくはそのラッパーでゴニョゴニョできれば都合いいかとCodePackいじってみた次第です。
203デフォルトの名無しさん:2010/03/29(月) 19:52:57
vista以降はGUIの変更の関係で従来の2D部分はソフトウェアレンダリングじゃなかったっけ?
Direct2Dの深部がどうなってるか知らんけど
204デフォルトの名無しさん:2010/03/29(月) 19:54:54
205デフォルトの名無しさん:2010/03/29(月) 20:06:51
Direct2DってWPFとは違って即時モードで描画するんだっけ
さすがに図形を毎回計算し直したりはしてないだろうけど
3000回テクスチャ切り替えてるとしたら結構なコストなんじゃないの
206デフォルトの名無しさん:2010/03/29(月) 20:08:27
>>205
描画命令を発行してもプログラム側でタイミングを見計らってバッファ切替するなら効率もいいけど
windowsのGUIのように動かれると効率はよくないな
207デフォルトの名無しさん:2010/03/29(月) 20:18:00
WPFでは宣言的に描画命令出してあとはお任せだから
あまり動かない要素を自動的にビットマップでキャッシュしたりするよ
たぶん現状WPFの方が遅いんだろうけど仕組み的にはWPFの方がUIには適してるんだろうな
208197:2010/03/29(月) 21:40:01
>205
MSのサンプルだがInvalidate時にDirect2Dもろもろをラップしたクラスから次のメソッドに飛んでくる。
private void RenderScene(){
CreateDeviceResources();
if (renderTarget.IsOccluded)
return;
renderTarget.BeginDraw();
renderTarget.Clear(WhiteBackgroundColor);
foreach (DrawingShape shape in drawingShapes)
shape.Draw(renderTarget);
renderTarget.EndDraw();
}
shapeの中は
protected internal override void Draw(RenderTarget renderTarget){
if (_fill)
renderTarget.FillRectangle(_rect, _parent.brushes[_selectedBrushIndex]);
else
renderTarget.DrawRectangle(_rect, _parent.brushes[_selectedBrushIndex], _strokeWidth);
}
こんな感じ。 renderTarget.FillRectangleの中まで見てない。これもC++/CLIで実装されたラップクラス。
shapeまわりとかあくまでサンプルなのでたぶん使い易い分かなり不効率なことやってそうだけど・・・
209デフォルトの名無しさん:2010/03/29(月) 22:18:07
単なる丸投げラッパーだろ
たぶんC++で同じようなの書いてもほとんど速度は変わらないと思うよ
210デフォルトの名無しさん:2010/03/29(月) 22:31:42
Form1からForm2のウィンドウを生成するとウィンドウ自体は
アクティブになるのですが、Form2上にDockさせたWebBrowser
コントロールにフォーカスが当たっておらず、1回クリックしないと
マウスホイールに反応してくれません。
Form2.Active()やForm2.Focus()あるいはWebBrowser.Focus()
では制御出来ないのでしょうか?
211デフォルトの名無しさん:2010/03/30(火) 12:09:55
212163:2010/03/30(火) 12:36:03
亀だけど色々ありがとう
しかしTextBox系はあちこちウンコだのう
かと言って巷のコンポーネントで日本語完全対応のは無いっぽいし
困ったもんだ
213デフォルトの名無しさん:2010/03/30(火) 12:36:11
>>210
なんのこっちゃと思ってたがこういうことか

webBrowserの場合、マウスをクリックするとホイールが効いてスクロールするってことは
その中のDocumentにフォーカスを当てないとだめだよ
サンプルコード
http://ideone.com/MRJeDOwz

でこのDocumentなんだけどNavigatedイベントもしくはDocumentCompletedイベント
発生後じゃないと無いので下手な場所でフォーカス当てるとこけるから
214デフォルトの名無しさん:2010/03/30(火) 12:39:56
>>213
昔のExcelでもあったよな、前面にしただけじゃダメでクリックしないとホイール効かないっての
それに対処するフリーウェアあったけど・・・今でも配布してるんだろうかってスレチだな
215デフォルトの名無しさん:2010/03/30(火) 12:42:48
>>214
webBrowserは便利そうでめんどくさいんだよな
使いこなせると強力なレンダリングエンジンの恩恵受けれるんだが
216デフォルトの名無しさん:2010/03/30(火) 12:49:47
GraphicsPathのIsOutlineVisibleとIsVisibleの違いが分からない
引数違うだけ?
217デフォルトの名無しさん:2010/03/30(火) 13:01:09
>>213
ありがとうございます。質問の仕方が下手でした…。
そのコード通りに実装してフォーカスが当たるようになりました。
あと自分で試したものでは下記のコードでも同様に動きました。

private void Form2_Activated(object sender, EventArgs e)
{
this.ActiveControl = WebBrowser;
}
218デフォルトの名無しさん:2010/03/31(水) 22:13:07
TextBoxを半透明にしたいのですが調べてもいまいちわかりません・・・。
219デフォルトの名無しさん:2010/03/31(水) 22:14:29
>>218
無理
220デフォルトの名無しさん:2010/03/31(水) 22:15:26
できません
見た目を気にするならきっぱり諦めてWPFに移行しましょう
221デフォルトの名無しさん:2010/03/31(水) 22:21:40
無理ってことは無いけど面倒
222デフォルトの名無しさん:2010/03/31(水) 22:25:23
専用に枠のない子ウィンドウを開くようなアホな方法はないこともないけど諦めた方がいい
223デフォルトの名無しさん:2010/04/01(木) 08:37:06
フォームがアクティブでない時にキーが押されると
フォームの処理を中断するようにしたいのですが
どのようにすればいいでしょうか、ご教授宜しくお願いします
224デフォルトの名無しさん:2010/04/01(木) 13:51:41
225デフォルトの名無しさん:2010/04/01(木) 22:20:09
.NETがない環境でも動かしたい、見た目もほどほどには気にしたいって需要もあるわけで
不可能でなければアホな方法もアリだろう
226デフォルトの名無しさん:2010/04/01(木) 23:16:13
インフラ用のTextBoxBase#BackGroundImageに背景画像を設定したら、どうなるんだろ。
試してみる気もしないが、これでナンチャッテ半透明TextBoxにならんかな?
227デフォルトの名無しさん:2010/04/01(木) 23:23:27
.NETなしでC#動かしたかったらSilverlightくらいしかないな
ちなみにSilverlightなら全くコード書かずにできる
228デフォルトの名無しさん:2010/04/01(木) 23:57:14
まだ半透明がどうのとか言ってるのか。

そういう人はそもそもその「半透明」が何を意味してるのか、
恐らくちゃんと突き詰めて考えてないだろ。

透けて見えるようにしたいのはコンテナ(フォーム)の奥のコントロール(ウィンドウ)?
それって透けてるのはTextBoxじゃなくてコンテナだろ。

TextBoxを半透明にしたってコンテナが透けて見えるだけだが、嬉しいかそんなの。
229デフォルトの名無しさん:2010/04/02(金) 00:19:31
オサレな外観にしたいんじゃない?
230デフォルトの名無しさん:2010/04/02(金) 00:22:17
WPF使わないと無理じゃないかな
外のコントロールだとオーナードロー駆使すればわりとなんとかなるが
textboxだけはかなり深部いじってできるかどうか・・・?ってレベルのような
231223:2010/04/02(金) 14:20:40
223です。
224の方返信ありがとうございます。
参考にさせていただきます。

「TextBoxを透明に」についてですが
このようなのはどうでしょうか?
ttp://www1.axfc.net/uploader/Sc/so/99375.zip&key=C#
232デフォルトの名無しさん:2010/04/02(金) 14:26:20
半透明って言ってるだろ
233デフォルトの名無しさん:2010/04/02(金) 16:50:15
Windows使ってて.NETが無い環境ってどれだけあるんだろうな
キチガイとしか思えない
234デフォルトの名無しさん:2010/04/02(金) 17:17:58
>>228
そんなに貧困な脳みそを自慢するなよw
そのコンテナがピクチャボックスだったら嬉しい事もあるだろ
235デフォルトの名無しさん:2010/04/02(金) 19:56:05
B地区がみえたりしたらそこに文字入力したくなくなるけどね
236デフォルトの名無しさん:2010/04/05(月) 11:26:11
俺の金曜日の最後の書き込みからだれも書き込んでないことに泣いた・・・
237デフォルトの名無しさん:2010/04/05(月) 11:28:46
規制食らったからねえ
あと専門板住人減ってるからあんまり詰まんないことして人いなくなるようなことしないでおこうよw
238デフォルトの名無しさん:2010/04/06(火) 11:09:25
静かですな〜

こんなところへ質問しないと進まなかった人たちは
がんばってぐぐって解決してるのかな?
239デフォルトの名無しさん:2010/04/06(火) 12:44:30
俺もそうだけどここにいるのはほとんどが趣味プログラマだろ
別に分からなきゃ分からないで困るわけじゃない
240デフォルトの名無しさん:2010/04/06(火) 18:01:57
>>238
質問が無いのは大規模規制があったから。
241デフォルトの名無しさん:2010/04/06(火) 18:23:00
俺が規制されてないのに大規模規制とか笑わせる
242デフォルトの名無しさん:2010/04/06(火) 19:16:45
知らんがな
243デフォルトの名無しさん:2010/04/06(火) 21:53:08
>>240
どうみても>>238はそれをわかって書いてるようにみえるが?
244デフォルトの名無しさん:2010/04/08(木) 13:56:38
ComboBoxでドロップダウンリストをクリックすると、そのアイテムが一番上に来るようにしたい
DataSourceにはList<T>をバインドし、SelectedIndexChanged内でリストをSuspendBinding() & ResumeBinding()して強制更新
これが上手く行かない
ドロップダウンから選択すると、ドロップダウン内が真っ白になる
それでもリスト自体は存在するらしく、クリックするとリスト自体は更新される
この問題を解決する何かいい方法はないだろうか

ちなみにList<T>をBindingList<T>にすると無限ループする
SelectedIndexChanged内でリスト変更してるから当たり前っちゃ当たり前だけど
245デフォルトの名無しさん:2010/04/08(木) 16:21:08
単純にChangedイベント内部でフラグチェックで出来ない?

bool changedEnabled = true;

Changedイベント
{
if( changedEnabled )
{
changedEnabled = false;
煮るなり焼くなり
changedEnabled = true;
}
}
246デフォルトの名無しさん:2010/04/08(木) 16:22:07
ああごめんちゃんと読んでなかった
247デフォルトの名無しさん:2010/04/08(木) 16:23:25
直接張るならhtmlエンコードしてくれ
そうじゃないなら外部のコード貼れるところ使ってくれ
248デフォルトの名無しさん:2010/04/08(木) 16:24:27
あれほどサンプルソースさらせと・・・
249デフォルトの名無しさん:2010/04/08(木) 16:29:43
>>244
ピンポイントで対応できる少数を待つか、自分がはまった箇所を再現できる適当な
ソースを晒してコードを見て対策考えれる多くの人から回答待つか

どちらか選べ
250デフォルトの名無しさん:2010/04/08(木) 16:29:47
これっぽちのソース我慢しろよww
251244:2010/04/08(木) 16:36:58
自己解決
リストデータの中に何時の間にかnullが紛れてて、取り除いたら動いた
お騒がせしました
詫びがてらコードを晒しとく
この手の需要は微妙にあるような気がしないでもないようなあるような

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
  ComboBox cb = (ComboBox)sender;
  int selno=cb.SelectedIndex == -1) return;

  cb.BindingContext[cb.DataSource].SuspendBinding();
  string selecttext=combodata[selno];
  combodata.RemoveAt(selno);
  combodata.Insert(0,selecttext);
  cb.BindingContext[cb.DataSource].ResumeBinding();
 }
252244:2010/04/08(木) 16:39:37
ミス
×int selno=cb.SelectedIndex == -1) return;
○int selno=cb.SelectedIndex;
 if(selno==-1) return;

ハンパにコピペするもんじゃないな
253デフォルトの名無しさん:2010/04/08(木) 16:43:23
SuspendとResumeはなんで必要なの?
254デフォルトの名無しさん:2010/04/08(木) 16:47:14
>>253
DataSourceのChangedイベントあるからなあ
それを止めるんじゃね?

RemoveAtやInsertの時に下手に見られてると困るじゃん
255244:2010/04/08(木) 17:05:14
>>253
ttp://msdn.microsoft.com/ja-jp/library/w67sdsex.aspx

List<T>みたいに IBindingListを実装しない手合いをバインドする時は
こうしないとドロップダウンリストがいつまで経っても更新されない
256デフォルトの名無しさん:2010/04/08(木) 22:04:36
hage
257デフォルトの名無しさん:2010/04/08(木) 22:15:17
>>255
ありがとう!
そこだけ注意すれば後は簡単だね
258デフォルトの名無しさん:2010/04/08(木) 22:15:33
>>244
たぶん余計なお世話だろうけど、要はcombodataの要素の並び替えをしたいんだろうから、
それならcombodataを直接バインドするんじゃなくて、

(0) SelectedIndexChangedにはcombodata.ToArray()をバインドしておく。
(1) SelectedIndexChangedイベントではcombodataの並び替えのみを行う。
(2) DropDownClosedあたりのイベントでcombodata.ToArray()をバインドする。

とかの方がいいのでは?

バインドしてるデータをSelectedIndexChangedでいじっちゃうって、たとえ動作に問題ないとしても
お行儀悪すぎじゃないの?

これならSuspendBindingだのResumeBindingだの訳のわからんメソッドを呼ぶ必要もないし。
259デフォルトの名無しさん:2010/04/08(木) 22:21:59
あー>>258だと注意しないとイベントの無限連鎖になるから、
問題ないのなら全部DropDownClosedイベントで処理した方がいいかも。

とりあえずそれで>>244が言うような動作が可能なことは確認した。
260デフォルトの名無しさん:2010/04/09(金) 08:21:47
そういえばみなさん開発途中のバージョン(やリビジョン)管理はどうしてますか?
オープンソースならフォゲとかありますけど、ソースはクローズドでやりたい場合もありますよね・・
261デフォルトの名無しさん:2010/04/09(金) 08:53:18
クローズなら管理委らんだろ
262デフォルトの名無しさん:2010/04/09(金) 08:54:51
いや修正掛けてて戻したいなあ・・・とかありません?
263デフォルトの名無しさん:2010/04/09(金) 09:12:51
SourceForgeの使い方を知っててそれはないだろ。釣りにしてはしつこすぎる。
264デフォルトの名無しさん:2010/04/09(金) 09:19:59
つまりsubversionのサービスを非公開でやってるところが無いか?とかそんなの?
265デフォルトの名無しさん:2010/04/09(金) 09:21:47
普通にSVNとか使えばいいだろ
ローカルでも使えるし内部のサーバーに置いてもいいし
266デフォルトの名無しさん:2010/04/09(金) 09:29:20
ローカルで使うって発想が無いんでしょ。
267デフォルトの名無しさん:2010/04/09(金) 09:39:50
ローカルだったらTortoiseSVNでも使えば一瞬で構築完了
268デフォルトの名無しさん:2010/04/09(金) 10:10:18
好きなフォルダをSQLCompactにバージョンつけてたたっ込める仕組み自前で作ったわ。
269デフォルトの名無しさん:2010/04/09(金) 10:13:09
なぜそんな無駄なことを。
270デフォルトの名無しさん:2010/04/09(金) 10:28:12
そこまで規模のでかい物作ったことないから一定量進んだら
プロジェクト丸ごとコピペしてるけど不便だと思ったことは無いなぁ
271デフォルトの名無しさん:2010/04/09(金) 10:32:14
と思ったけど調べてみたら便利そうなので使ってみることにしましたまる
272デフォルトの名無しさん:2010/04/09(金) 10:33:26
ファイルが2〜3個ぐらいならそれで別に何の問題もないしな。

まあ今日日VCS使ったことない開発者なんて普通居ないだろうけど・・・
273デフォルトの名無しさん:2010/04/09(金) 10:35:38
少人数でもそこそこ大きな物書いてるとsubversionは欲しくなるけど
今度はsubversion鯖の管理の手間が増えるからなあ・・・
外部でそういうことがやれるのがあるといいんだがとは思う
274デフォルトの名無しさん:2010/04/09(金) 10:37:16
結構いるんじゃね?
275デフォルトの名無しさん:2010/04/09(金) 10:37:57
つSourceForge
276デフォルトの名無しさん:2010/04/09(金) 10:40:12
>>275
それってコードをオープンにしないと基本的にサービス利用できないだろって・・・
277デフォルトの名無しさん:2010/04/09(金) 10:40:46
クローズド開発だと有料なら結構あったような気がするけどな。
278デフォルトの名無しさん:2010/04/09(金) 10:44:42
クローズドであることを辞めるとか。

まあ適当に安いレンタルサーバ借りて使えばいいんじゃね?
ssh 使えるとこなら問題ないっしょ。
管理の手間っていっても一度構築しちゃえば問題無いだろし。
279デフォルトの名無しさん:2010/04/09(金) 10:49:42
VCSなんて使うやつはチキン
280デフォルトの名無しさん:2010/04/09(金) 11:05:18
>>277
結構あるね

MSはメールを無料でやる前にこういう方向も無料で進めていけばいいんじゃなのかね?w
281デフォルトの名無しさん:2010/04/09(金) 11:12:08
ごめん
MSってcodeplexっていうのをやってるんだな
282デフォルトの名無しさん:2010/04/09(金) 12:03:55
svnはレポジトリから除去する時にメンド杉
ポリシーかなんか知らんけど、もう少し何とかならんものか

それはそれとしてローカルでやるならVisualSVN最強
283デフォルトの名無しさん:2010/04/09(金) 12:09:50
>>282
ローカルでやるのによさそうですね
284デフォルトの名無しさん:2010/04/09(金) 13:15:58
今なら分散型のgit, hg, bzrを使うだろ
285デフォルトの名無しさん:2010/04/09(金) 13:18:50
分散型ってなにを分散してるの?
286デフォルトの名無しさん:2010/04/09(金) 15:11:29
リポジトリを。
287デフォルトの名無しさん:2010/04/09(金) 21:06:41
Mercurialいいよ。
VisualHGの出来もいいしCodePlexも対応してる。
288デフォルトの名無しさん:2010/04/09(金) 22:11:30
分散リポジトリ型は
作りかけで動かない(けど保存しときたい)ローカルなコミットと
テストも通るある程度纏まった完成品のコミットを
ちゃんと分けて使えるのが良いんだよな。

でも運用ルールよく考えないと結構めんどくさい。
289デフォルトの名無しさん:2010/04/09(金) 23:27:04
C#でiPadアプリ開発、MonoTouch 2.0登場
ttp://journal.mycom.co.jp/news/2010/04/09/071/index.html
290デフォルトの名無しさん:2010/04/09(金) 23:39:04
と思いきや規約変更(ソースはC、C++、ObjectiveC、WebKitのJavascriptに限定w)で使えなくなったでござるの巻
291デフォルトの名無しさん:2010/04/10(土) 02:41:01
ヤード法かメートル法のうちどちらが単位として使われているか取得する方法はない?
MSDNのCulterInfoの部分を調べたんだが、それらしいプロパティがなかった。
292デフォルトの名無しさん:2010/04/10(土) 03:10:12
RegionInfoとかじゃねーの
293デフォルトの名無しさん:2010/04/10(土) 06:46:13
>289
俺\(^o^)/オワタ
294デフォルトの名無しさん:2010/04/10(土) 09:16:07
>>290
AppleはいつまでたってもAppleなんだなーって思ったわ。
295デフォルトの名無しさん:2010/04/10(土) 14:32:35
VisualC++2008の本を買いに本屋に行ったら、C#の本のほうが多く展示されていたのだが、
世の中の主流はC#に移り変わってきたのですかね。
296デフォルトの名無しさん:2010/04/10(土) 14:34:44
VCの本は、昔からそれほど多くない。
297デフォルトの名無しさん:2010/04/10(土) 14:35:34
>>295
そういう本だと無料の開発環境とかで話進めなかったっけ?
VC++2008EEはGUI作るにはちょっと初心者向きじゃないしね
それにMSとしては.netで行きたいみたいだし
298デフォルトの名無しさん:2010/04/10(土) 15:16:03
>>295
用途によるだろ。
299デフォルトの名無しさん:2010/04/10(土) 15:19:12
>>298
やっぱりSilverrightが本命なんですかね。
Flashはipadでサポートされないとかで、もうダメみたいだし。
300デフォルトの名無しさん:2010/04/10(土) 15:20:13
その意味で言うなら、HTML5だろ。
301デフォルトの名無しさん:2010/04/10(土) 15:21:25
そうでもないけどな・・・

結局どういうマシンのソフトを開発したいかで使う物が変わるしなあ

VC++でGUIやりたいならWTLでぐぐってみなよ

それかゲームをやるならDXライブラリとか龍神録とか
302デフォルトの名無しさん:2010/04/10(土) 16:45:12
>>299
iPad は C# もサポートしないから SilverLight もダメだよ。
徹底して囲いこみしてる。
303デフォルトの名無しさん:2010/04/10(土) 16:49:55
囲いこみとか時代に逆行しまくりだよな。
オープンなものは使わせてもらうけど、こちらはオープンにしませんとかw
304デフォルトの名無しさん:2010/04/10(土) 16:58:24
しょせんオープンだのなんだの、ってのは、売るための方便でしかないし。
圧倒的なシェアをとったところで手のひらを返す、ってのもよくあるパターン。
305デフォルトの名無しさん:2010/04/10(土) 17:01:28
どういう動作になるのか保証できないからサポートしたくない、
というのなら気持ちは分からんでも無い
306デフォルトの名無しさん:2010/04/10(土) 17:01:56
MSになら手のひらを返されてもいい。
307デフォルトの名無しさん:2010/04/10(土) 17:05:37
今回のAppleのは、わけわかんないだろ。アセンブラ禁止といってもいい。
近いうち、マルウエアを防止するためAppleのサーバーでコンパイル、リンクしたものだけってことになるぞ。
その次は、Appleのソースコード利用権。
308デフォルトの名無しさん:2010/04/10(土) 17:05:49
どんな言語で作ったアプリでも、動作保証なんてするわけないじゃん。
309デフォルトの名無しさん:2010/04/10(土) 17:06:28
今回のはFlash(ActionScript)つぶしだよ。
310デフォルトの名無しさん:2010/04/10(土) 17:07:27
>>308
まあそうだよな
何でもかんでも保証すればバグの面倒までアップルが見る羽目になる
あくまで場所貸しだからな
311デフォルトの名無しさん:2010/04/10(土) 17:11:59
つーか内容の規制ならまだしも言語の規制とかイミフすぎる。
WM7 と Android を応援するぜ俺は。
312デフォルトの名無しさん:2010/04/10(土) 19:53:00
つうか普通に特定ベンダの技術よりHTML5でどうにかしたいだけだろ
313デフォルトの名無しさん:2010/04/10(土) 20:08:23
>>292
とんくす。
そのクラスの中にあった。
314デフォルトの名無しさん:2010/04/10(土) 21:10:22
ともかく、このスレでappleを話題にするとしたらドトネト復活してからだな。
X05HTの次にと考えてたけど止めたわ。
315デフォルトの名無しさん:2010/04/10(土) 21:13:55
.NETしたいなら素直にWindowsMobile搭載端末を買えよ・・・
316デフォルトの名無しさん:2010/04/10(土) 21:23:15
monoを全否定かっこいいw
317デフォルトの名無しさん:2010/04/10(土) 21:24:23
>>315
Objective-Cがクソだから、できれば使いたくない。
318デフォルトの名無しさん:2010/04/10(土) 21:56:21
醜悪なコードになるよな
C++以上に
319デフォルトの名無しさん:2010/04/10(土) 21:58:53
使ったことない。が、スレ違いなのでどうでもいい。
320デフォルトの名無しさん:2010/04/10(土) 21:59:03
Cでsmalltalkしたいから作ってみましたwww
な言語なので
321デフォルトの名無しさん:2010/04/10(土) 21:59:58
C#経験したあとだとどっちも一緒w
C++だって糞じゃん

ヘッダにクラスの宣言部書いて、cppの方にメンバ関数書くとか
322デフォルトの名無しさん:2010/04/10(土) 22:06:11
>>319
C#での相談事という意味では、スレ違いでもないんだけど。
323デフォルトの名無しさん:2010/04/10(土) 22:09:47
誰も相談なんてしてないだろ。
324デフォルトの名無しさん:2010/04/10(土) 22:10:53
iPhoneってJavaで開発できんの?
325デフォルトの名無しさん:2010/04/10(土) 22:12:59
スレチだし、そのくらい自分で調べろ
326デフォルトの名無しさん:2010/04/10(土) 22:52:26
このスレ的にはもう iPhone さようならで終了なんだよな。
327デフォルトの名無しさん:2010/04/11(日) 01:56:46
なんですぐ「スレ的には〜」とか馬鹿な事を言い出すんだ。
328デフォルトの名無しさん:2010/04/11(日) 03:01:21
BeginInvokeやSystem.Timers.Timerでスレッドを実行中に例外が発生した場合、
スレッドが停止して例外が行方不明になるのですが、
このせいでどこが問題箇所なのかわかりません。
このような場合に皆さんはどうやってデバッグされますか?
329デフォルトの名無しさん:2010/04/11(日) 03:08:31
BeginInvokeはEndInvokeしたら飛んでくるし、
System.Timers.Timer実行中ならキャッチしなけりゃ異常終了するし、
どう行方不明になると言ってるのか分からん。
異常終了の場合の話か?
330デフォルトの名無しさん:2010/04/11(日) 03:09:43
単に発生場所が分からないだけなら、デバッグの例外オプションで
スロー時に停止させりゃいい。
331デフォルトの名無しさん:2010/04/11(日) 03:24:13
>>329
異常終了するのはSystem.Threadの方みたいです。
EndInvokeも使わない方向で。

Do(){ try{Do2();}catch{} }についてDo.BeginInvoke(null,null)して、
本来ならDo2の例外をDo内でcatchできると思う…のですが、
Do2内でInvokeによってUIスレッドを呼び出しているせい(?)か
Doごと死んでしまう、のです。
332デフォルトの名無しさん:2010/04/11(日) 03:32:57
もう少し正確に書け。
333328:2010/04/11(日) 03:33:04
>>330
助かりました。ありがとうございます。
334デフォルトの名無しさん:2010/04/11(日) 03:38:31
>異常終了するのはSystem.Threadの方みたいです。
System.Threadってなんだ?
みたいってのはどういうことだ?

>EndInvokeも使わない方向で。
使わない方向ってのはどういうことだ?
BeginInvokeとかじゃないから元々使えないのか、
あえてEndInvokeを呼ばない糞コードにする気なのか?

>Do(){ try{Do2();}catch{} }についてDo.BeginInvoke(null,null)して、
>本来ならDo2の例外をDo内でcatchできると思う…のですが、
>Do2内でInvokeによってUIスレッドを呼び出しているせい(?)か
>Doごと死んでしまう、のです。

ControlのInvokeはちょっとまた話が違うからな。
UIスレッドでの例外はUIスレッド内でキャッチする必要がある。
しなければ、普通にUIで例外をキャッチしなかったのと同じ状態になる。
335デフォルトの名無しさん:2010/04/11(日) 03:52:25
>>334
> BeginInvokeとかじゃないから
とかってなんだ?

> UIスレッドでの例外はUIスレッド内でキャッチする必要がある。
> しなければ、普通にUIで例外をキャッチしなかったのと同じ状態になる。
ご飯を食べる必要がある。食べなければご飯を食べなかったのと同じ状態になる
336デフォルトの名無しさん:2010/04/11(日) 03:55:27
で?
意味が通じない書き方と意味が通じる書き方じゃ全然違うんだけどな。
337デフォルトの名無しさん:2010/04/11(日) 03:58:51
で?といわれても、揚げ足を取ってるレスがあまりにもひどかったのでつい。
338デフォルトの名無しさん:2010/04/11(日) 03:59:50
>>334がどういう風にあげ足なのか言ってみろ。
お前は>>334で言ってることがちゃんと分かるのか?
339デフォルトの名無しさん:2010/04/11(日) 04:00:33
お前は>>334で言ってることがちゃんと分かるのか?

お前は>>333で言ってることがちゃんと分かるのか?
だった間違い。
340デフォルトの名無しさん:2010/04/11(日) 04:01:49
System.Threadなんて名前空間はない
BeginInvokeとEndInvokeは対になるべき
別スレッドの例外を補足できない

だと思うんだが違うのかな
そもそも>>333で解決していることに対して面倒なレスをつけるなよ
341デフォルトの名無しさん:2010/04/11(日) 04:04:17
え。
>>333の言ってることは理解してるつもりだよ
てか、それ以外にどう読めばいいの
342デフォルトの名無しさん:2010/04/11(日) 04:05:19
>お前は>>334で言ってることがちゃんと分かるのか?
>↓
>お前は>>333で言ってることがちゃんと分かるのか?
>だった間違い。

お前は>>331で言ってることがちゃんと分かるのか?
の間違い。
間違いまくり。
343デフォルトの名無しさん:2010/04/11(日) 04:06:14
勘弁してください寝てください
344デフォルトの名無しさん:2010/04/11(日) 04:06:48
>>335
上げ足とりに突っ込んでるつもりで見当違いのことを言ってることに気づいてるの?
345328:2010/04/11(日) 04:09:15
>>334
申し訳ありません。私がいい加減なのはわかりますが、
ただ、あまり攻撃的に反応されても…。

System,Threading.TimerまたはThreadの方ですね。
らしいってのは↓見ただけなのと、理解が適当かもしれないので。
ttp://gushwell.ldblog.jp/archives/cat_50041244.html
実際には、BeginInvokeではなくてTimers.Timerの方を使っているのですが、
BeginInvokeのほうが書くの楽そうだったのでそれを書いて、
EndInvoke使わない方向で云々は話題をずらしたくなくて、です。
例外キャッチの心得は参考になりました。

ぐだぐだ言い訳みたいで申し訳ないのですが、
最後くらい誠実にレスしてみました。
姉歯設計に苛つかれるお気持ちはわかりますが、仲良く行きましょう^^
346デフォルトの名無しさん:2010/04/11(日) 04:09:19
>>334は伝わる書き方をすべき。
そもそも>>328で解決すべきは
> どこが問題箇所なのかわかりません
であり、BeginInvokeがどうとかは枝葉。

だから>>330で解決してんじゃん。
347328:2010/04/11(日) 04:11:02
本当にすみません。私のせいでこんな深夜に荒れてしまった。
仲良く行きましょう。なんかおもしろい話題ないですかね。。。
348デフォルトの名無しさん:2010/04/11(日) 04:15:12
疑問に対して何故かの話を進めた方がプラスになると思ったんだがな。
>>331で疑問に思ってるみたいだから何故かが気になってるんだと思ったんだが。
まあ>>329だけでよかったならもう言うことはない。

>BeginInvokeがどうとかは枝葉。
って言ってるけど、例外が行方不明になることと
BeginInvokeはめちゃめちゃ重要な関係がある話だよ。
まあ>>331の疑問がそのままでいいなら確かにどうでもいい話だが。
349デフォルトの名無しさん:2010/04/11(日) 04:15:17
気にせずがんばれ
350デフォルトの名無しさん:2010/04/11(日) 04:20:18
うぜえwどんだけ俺のレスの方が有意義だアピールをする気だよw
>>329で解決してんじゃなくて、>>330によって、例外発生箇所が分かったことがよかったんじゃないの?
351デフォルトの名無しさん:2010/04/11(日) 04:21:59
ついでに言うと>>334を書いてる途中に>>333が書かれてたんで、
入れ違いにもなったんだよ。
>>330で一度答えた後だしな。
352デフォルトの名無しさん:2010/04/11(日) 04:22:16
まじめだから>>329に分からないながらも、分かる範囲でレスしたんだろうな。
これに懲りずまた質問してね。
353デフォルトの名無しさん:2010/04/11(日) 04:24:32
言っとくが>>329>>330も俺だ。
答えた上で>>331が来たから>>334を書いた。
その書いてる時点では>>333はまだ書かれてなかった。

ってことだよ。
354デフォルトの名無しさん:2010/04/11(日) 04:25:54
まあ基調が攻撃的だったのは悪かったよ、気にしないでくれ。
2ちゃんだから平気でこういう書き方する時がある。
別にそこまで恐縮してもらう必要はない。
ってか書いといてなんだけど基調をいちいち気にするな。
355デフォルトの名無しさん:2010/04/11(日) 04:26:59
基調じゃなくて口調だすまん。

あと荒れたとしても最初の書き込み者がそれを気にする必要なんかない。
356デフォルトの名無しさん:2010/04/11(日) 05:16:27
深夜に何騒いでんだ?
357デフォルトの名無しさん:2010/04/11(日) 05:36:19
ttp://ideone.com/I94e3

これ実行すると期待通りの結果が出たんだけど、何が問題なんだ?
もしかして、キャッチ出来ない例外が飛んできてるとか?
358デフォルトの名無しさん:2010/04/11(日) 09:22:14
UnHanldedException ハンドラーていぎせぇよ
359デフォルトの名無しさん:2010/04/11(日) 09:53:09
異常終了時の対応はmain()の中全部tryで囲うの?
でもこれだとmain()が異常終了したときはどうすればいいの?
360デフォルトの名無しさん:2010/04/11(日) 10:02:34
お前は何を言ってるんだ
361デフォルトの名無しさん:2010/04/11(日) 10:11:50
すでに例外が出ているようです(´・ω・`)
362デフォルトの名無しさん:2010/04/11(日) 10:22:45
retrun 0; してないから、ではないのか?
363デフォルトの名無しさん:2010/04/12(月) 12:19:07
Action<T>型でBeginInvokeした時に、AsyncCallbackの受け口を一本化したいんだけど上手い手はないかな
普通にやるとAction<int>とAction<string>とで別の受け口用意しなきゃならん
AsyncDelegateはキャストしないと使えないし
単にEndInvoke呼びたいだけなんだからもちっと簡便にならないかと
364デフォルトの名無しさん:2010/04/12(月) 14:18:02
ジェネリックでAction<T>にキャストしたら?
365デフォルトの名無しさん:2010/04/12(月) 16:19:13
なるほど
ジェネリックメソッド定義してキャストに使うと
いい感じサンクス
366デフォルトの名無しさん:2010/04/12(月) 23:15:40
まじでEndInvoke()呼ぶだけなら、無理にまとめる必要ないと思うが

action.BeginInvoke(obj, action.EndInvoke, null);

これでも十分簡潔なのに、これ以上何を求めるのか

public static void AsyncInvoke(this Action action, T obj) { ... }
public static void AsyncInvoke<T>(this Action<T> action, T obj) { ... }
public static void AsyncInvoke<T1, T2>(this Action<T1, T2> action, T1 arg1, T2 arg2) { ... }
// 以下<T1,...,T16>まで同様 (.NET 4.0)

ここまでしないと不満とか?
367デフォルトの名無しさん:2010/04/13(火) 17:50:30
Int16からUInt32へビット数を保持したまま
変換する関数ってありますか?
368デフォルトの名無しさん:2010/04/13(火) 17:52:54
>>367
意味がわからん
369デフォルトの名無しさん:2010/04/13(火) 18:12:45
 わかりにくくて申し訳ない。
Int16の0xFFFFをUInt32の0x0000FFFFに
変換したいという意味でした。
 そのまま0x0000FFFFの論理和で出来るみたいですが
正式なやり方あるのかなと。
370デフォルトの名無しさん:2010/04/13(火) 18:15:24
uncheckedでいったんUInt16にキャストすれば
371デフォルトの名無しさん:2010/04/13(火) 18:28:35
>>370
ありがとう。試してみます。
372デフォルトの名無しさん:2010/04/13(火) 20:34:00
すいません。相談にのってください。
UIスレッドとタスクスレッドの2つのスレッドで
構成されているアプリケーションを作っています。

タスクスレッドにて例外が発生した時、
適切な例外処理ってどんなもんなんでしょうか?

Thread.GetDomain().UnhandledException
にて例外を集約させるところまではgoogle先生で調べれたのですが、
このイベントハンドラ内で、アプリの強制終了を行うしか手が無いのかな?
//UIスレッド
try{
//タスクスレッド起動
UI.ShowDialog()

//タスクスレッドJoin
}finally{
//UI後処理
}
本当は、UIスレッドの後処理(finally節)も確実に実行したいのですが・・
373デフォルトの名無しさん:2010/04/13(火) 21:14:09
>>372
タスクスレッド側で処理する
374デフォルトの名無しさん:2010/04/13(火) 21:25:57
タスクスレッドって初めて聞いた。
375デフォルトの名無しさん:2010/04/13(火) 21:26:30
普通に UI 側に通知して終わればいいんじゃね?
376デフォルトの名無しさん:2010/04/13(火) 22:27:22
decimal.Tryparse の 第1引数て、どんなの渡せばいい?
"1.00E+4"を渡しても変換結果が0なんだわ。+外しても駄目だった。
377デフォルトの名無しさん:2010/04/13(火) 22:39:40
>>376
試してないけど NumberStyles.AllowExponent フラグをたてなきゃいけないんじゃね?
378デフォルトの名無しさん:2010/04/13(火) 23:07:01
double.TryParseでパースしておいてdecimalに変換すれば。
379デフォルトの名無しさん:2010/04/14(水) 00:26:35
>>377-378
ありがとう、明日確認してみる
380デフォルトの名無しさん:2010/04/14(水) 01:01:16
>>379
うむ。
381デフォルトの名無しさん:2010/04/14(水) 12:40:56
C#2.0でツールパレットを実装するのに簡単な方法は無いでしょうか?
アプリの状態によってボタンが変わるので、List系コントロールが使えればいいのですが
ボタンをタイル状に敷き詰めるのはどうやら無いっぽいので・・・
FlowLayoutPanelにRadioButtonを自力で詰め込んでいくしかないのでしょうか?
382デフォルトの名無しさん:2010/04/14(水) 12:44:39
ツールパレットってのがどういうのかわからん
ざっくりしたイメージ画像とかない?
383デフォルトの名無しさん:2010/04/14(水) 12:50:22
ないない
384デフォルトの名無しさん:2010/04/14(水) 12:51:33
聞いたこと無い用語なのでググってみたがどうやら
ドッキングツールバーのことのようだ
http://homepage.mac.com/mkino2/sketchBp/modification/toolPalette.html
385デフォルトの名無しさん:2010/04/14(水) 12:52:13
ツールパレットでぐぐるとそれなりにヒットするので何かのソフトが
ツールパレットと呼んでる物があってそれと同じような物が実装
したいんだろうから、そのスクリーンショットでもいいんだがな
386381:2010/04/14(水) 12:52:59
>>382
こんなのです↓
ttp://home.riise.hiroshima-u.ac.jp/~nagato/Linux/img150.png

ドローツールで良くある、ペンとか選択モードを指定する奴ですね
387デフォルトの名無しさん:2010/04/14(水) 12:53:23
>>384
それならC#にあるやん
あとはツールバーへコントロールを動的に増減してやればいいだけだよ
388デフォルトの名無しさん:2010/04/14(水) 13:09:47
389381:2010/04/14(水) 13:26:24
>>388
ありがとうございます
なんとかやってみます
390デフォルトの名無しさん:2010/04/14(水) 20:05:51
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
backgroundWorker2.RunWorkerAsync();
backgroundWorker3.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(){重い処理}
}
backgroundWorker2_DoWork,backgroundWorker3_DoWorkも1と同じような処理。
これを実行すると、初回起動時に1,2は同じタイミングで始まるんだが、3だけ遅れて始まる。
一旦停止して、再スタートするとすべて遅れなく始まるんだが、初回から、1から3すべて遅れなく始める方法ない?
391デフォルトの名無しさん:2010/04/14(水) 20:19:42
なぜ開始タイミングを揃えなければならないのか
392デフォルトの名無しさん:2010/04/14(水) 20:30:49
>>391
各スレッドの処理結果を呼出しもとで使用するのに、
タイミングが揃っていた方が都合がよいからです。
393デフォルトの名無しさん:2010/04/14(水) 20:36:06
内部で同期させる仕組みを作れよ
394デフォルトの名無しさん:2010/04/14(水) 20:42:29
>>392
同時に開始しても同時に終了するとは限らないんだけど。
結局は、終わったかどうか個別にチェックしないと。
395デフォルトの名無しさん:2010/04/14(水) 20:42:39
>>392
処理結果を呼び出しもとで使用するときに処理が終わってるかどうかは見ないのかい?
見てるなら別にいつ始まっていつ終わってもよかろ
396デフォルトの名無しさん:2010/04/14(水) 20:42:59 BE:2861222786-2BP(0)
>>392
なんで3つ全部終わるのを待てないの?
397デフォルトの名無しさん:2010/04/14(水) 20:45:47
終了タイミングが揃うことを前提にした実装なんか怖すぎるだろ
実際にだいたい揃ってるとしても必ず待つように作るわ
398デフォルトの名無しさん:2010/04/14(水) 20:48:41
処理が終わったかどうかはチェックしています。
すべての処理が終わってからメインのスレッドで次の処理をしています。
ただ、初回は3番のスレッドだけ遅れてスタートし、2回目以降は遅れなくすべてのスレッドが
スタートするという現象が気になったので、質問しました。
399デフォルトの名無しさん:2010/04/14(水) 20:51:27
スレッドプール使う以上は黙って任せるしかない
嫌ならThreadクラスを直に使えばいいよ
400デフォルトの名無しさん:2010/04/14(水) 20:52:11
>>398
ならCPU増やすかThreadPoolの設定変えるか
401デフォルトの名無しさん:2010/04/14(水) 21:04:07
答えてくださった方々ありがとうございました。
試行錯誤してみます。
402デフォルトの名無しさん:2010/04/14(水) 21:32:23
ThreadPoolでは、CPUが空いてなければ処理は投入されない。
もうひとつ、CPUが空けばプロセッサ数以上のスレッドも投入されるが、
その際は0.5秒に一つずつスレッドが開始される。
例えばThreadPoolの最小スレッド数はデフォルトでプロセッサ数になっているが、
これを増やしてやれば必要になった時点でスレッドを作成するときの0.5秒のタイムラグがなくなる。
ただ、どっちにしても基本的にはCPUが空いてるときに動く仕組みだからその辺は注意。
403デフォルトの名無しさん:2010/04/14(水) 21:37:02
0.5秒って宇宙刑事ギャバンじゃあるまいしw
そんなに遅いわけないだろ常識で考えて。
どんな妄想だよそれ
404デフォルトの名無しさん:2010/04/14(水) 21:54:21
>>402
ありがとうございます。
ThreadPool..::.SetMinThreads メソッドを使用して、最小スレッドを変更したらできました。
405デフォルトの名無しさん:2010/04/14(水) 22:07:33
>>403
msdnライブラリから抜粋

スレッド プールは、最少数のアイドル スレッドを維持します。
ワーカー スレッドでは、この最少数の既定値はプロセッサ数です。
GetMinThreads メソッドを使用すると、最少数のアイドル ワーカーと
I/O 完了スレッドを取得できます。

スレッド プールのすべてのスレッドがタスクに割り当てられている場合、
スレッド プールは新しいアイドル スレッドの作成をすぐには開始しません。
スレッドのスタック領域の不要な割り当てを避けるために、
新しいアイドル スレッドは間隔を置いて作成されます。

"この間隔は現在 0.5 秒です"が、.NET Framework の将来のバージョンでは
変更される可能性があります。

スレッド プールの多数のタスクがキューに置かれて
アプリケーションのアクティビティが急激に増加した場合は、
SetMinThreads メソッドを使用してアイドル スレッドの最少数を増やします。
この操作をしないと、新しいアイドル スレッドの作成が遅延するこの組み込み
の設定が、ボトルネックになる可能性があります。
406デフォルトの名無しさん:2010/04/14(水) 22:09:47
>>403
ttp://msdn.microsoft.com/ja-jp/library/system.threading.threadpool(v=VS.90).aspx
スレッド プールのすべてのスレッドがタスクに割り当てられている場合、スレッド プールは新しいアイドル スレッドの作成をすぐには開始しません。
スレッドのスタック領域の不要な割り当てを避けるために、新しいアイドル スレッドは間隔を置いて作成されます。この間隔は現在 0.5 秒ですが、
.NET Framework の将来のバージョンでは変更される可能性があります。

>この間隔は現在 0.5 秒ですが

なんで最近何も知らないくせいに下らんことばっか言う奴が多いのかね。
407デフォルトの名無しさん:2010/04/14(水) 22:11:31
こういうのみてるとスレッドとかバカをふるい落とす壁になるのがわかる・・・
408デフォルトの名無しさん:2010/04/14(水) 22:11:37
しかしまあ正直言って0.5秒はちょっと待ちすぎのようには思ったりする。
409デフォルトの名無しさん:2010/04/14(水) 22:12:59
細かいな
410デフォルトの名無しさん:2010/04/14(水) 22:28:09
0.5秒おきに起動されるのを目の当たりにしたときは何かの間違いかと思うよな。
で、MSDN見てびっくりして設定変える、と。
411デフォルトの名無しさん:2010/04/14(水) 22:29:40
逆にあれが50msecくらいの遅延だったりしたら、その遅延の存在に気付かない恐れがあるから
もっと遅くてもいいかも知れん
412デフォルトの名無しさん:2010/04/14(水) 22:47:02
C#じわじわきてるな

http://bit.ly/9xp451
413デフォルトの名無しさん:2010/04/14(水) 23:10:06
短縮URLはんなカス
414デフォルトの名無しさん:2010/04/14(水) 23:13:58
ドキドキしちゃった
415デフォルトの名無しさん:2010/04/14(水) 23:15:12
>>413
黙れゴミ。誰にたてついてるんだ?コラ。あ?シバキアゲタルゾこのクソが。
416デフォルトの名無しさん:2010/04/14(水) 23:18:02
ウンコがいきがってんなよ
417デフォルトの名無しさん:2010/04/14(水) 23:20:24
>>415
しゃべった!うんこがしゃべった!
418デフォルトの名無しさん:2010/04/14(水) 23:46:34
>>415
じわじわきてますよね///
419デフォルトの名無しさん:2010/04/15(木) 05:27:29
Visual C# 2008でwindowsフォームアプリケーション作成中です。
テキストボックスで文字を反転した際の色を変更したいのですが、SystemColors.Highlightは読み取り専用で変えることが出来ません。
どのような方法を取ればいいのかご教授お願いします。
420デフォルトの名無しさん:2010/04/15(木) 07:09:50
SystemColors.Highlight.Value=
421デフォルトの名無しさん:2010/04/15(木) 13:06:52
自作ジェネリッククラスを型付コレクションにするのは無理かな
class A<T>
{

}
List<A<T>> a_list;    ←コンパイルエラー

ArrayListでキャストしてやればいいっちゃいいんだけど、可能なら型付がいい
あ、Tは違うのが混在するんでList宣言のところで固定はできない
422デフォルトの名無しさん:2010/04/15(木) 13:17:07
試さないでいうけど A<T>のスーパークラスを作って List<Super> a_list じゃだめなん?
423デフォルトの名無しさん:2010/04/15(木) 13:30:22
>>422
それよくやる
インターフェイス使う方が多いかな
424デフォルトの名無しさん:2010/04/15(木) 13:45:15
スーパークラス!!そういうものもあるのか
それで行こう
THX.
425デフォルトの名無しさん:2010/04/15(木) 15:36:31
>>420
Valueメソッドが無いです。
426デフォルトの名無しさん:2010/04/15(木) 15:53:30
ふーん
427デフォルトの名無しさん:2010/04/15(木) 16:00:48
SystemColorsってBrushesなんかと同じであくまで
システムデフォルトなんかの塊なんじゃないの?

やるとしたらwindowsその物の設定をいじるとかになりそうな予感
428デフォルトの名無しさん:2010/04/15(木) 16:03:07
アプリ単位では変えられないって事ですか。分かりました諦めます。
ありがとうございました。
429デフォルトの名無しさん:2010/04/15(木) 16:08:38
予感ってだけね
ttp://tsushima.2ch.at/s/news2ch58652.png
たぶんSystemColorsってこの辺の情報を持ってるだけのような気がする

たんなる隠しになってるだけだと継承して・・・とかやれるんだろうけど
ソースが手元に無いのでわからん
430デフォルトの名無しさん:2010/04/15(木) 16:47:43
┐(´д`)┌ヤレヤレ
431デフォルトの名無しさん:2010/04/17(土) 10:34:39
過疎ですな

>>430
何にあきれててるの?
それともそれは某バーガーさんを模したAA?
432デフォルトの名無しさん:2010/04/17(土) 18:47:48
.NET 3.5 から .NET 4 へプロジェクトを乗せ替えるのって何か弊害になることあるんですか?
433デフォルトの名無しさん:2010/04/17(土) 18:50:57
動かすのに.NET4が必要
Windows7ですらそのままでは動かん
434デフォルトの名無しさん:2010/04/18(日) 03:06:21
sliverlightでゲームループ作るにはどうすればいいんだ
検索結果の上にくるところは書いてる人の能書きばっかりが目立つし
能書きよりサンプルコード晒してくれた方がよっぽど役に立つのに・・・
435デフォルトの名無しさん:2010/04/18(日) 03:35:00
436デフォルトの名無しさん:2010/04/18(日) 03:50:07
>>434
能書きですみません。
あなたの技術レベルが分からないと教えようがないので、今までの実績を教えてくれますか?
437デフォルトの名無しさん:2010/04/18(日) 04:18:19
>>434
お前が理解出来ないことは全て相手の能書きか
438デフォルトの名無しさん:2010/04/18(日) 06:51:24
あるクラスを継承してoverrideしたメソッドを持つクラスが
さらに継承されたときそのメソッドをoverrideして欲しくないときってどうすればいいですか?
439デフォルトの名無しさん:2010/04/18(日) 09:30:39
sealed
440デフォルトの名無しさん:2010/04/18(日) 09:34:42
>>434
SilverlightにはDoEventsみたいなのがないのでいわゆるゲームループは作れない。
CompositionTarget.RenderingやDispatcherTimerやStoryboardでコールバックかける。
441デフォルトの名無しさん:2010/04/18(日) 22:50:51
>>439
ありがとうございます
442デフォルトの名無しさん:2010/04/18(日) 22:59:40
日本語の解説なくていいのでコードを乗せてくれれば勝手にやるよってことでしょ
プログラマーはコードで会話する

日本語で語ろうとする=能書き
443デフォルトの名無しさん:2010/04/18(日) 23:01:52
>>435で理解できないなら何使ってもできないと思うよ
コードあっても理解できないだろうね
444デフォルトの名無しさん:2010/04/18(日) 23:04:23
>>443
うーん
sliverlight初心者だとサンプルソースをプロジェクトごと眺めてみたいってのもあるだろうから
>>435ででてくる日本語ずらずらコードは一部で説明されると能書きだけに見えるよね

日本語はいいコード出せって感じで
445デフォルトの名無しさん:2010/04/18(日) 23:18:46
ゲーム作ったことある俺でC#もできるが>>435は日本語多すぎだな
サンプルプロジェクトと一緒にその説明だと親切だなあと思うが
そのままだと重いつたこと書き散らしただけのチラシの裏に書いておけ
でしかないような気がする
446デフォルトの名無しさん:2010/04/18(日) 23:20:54
>>445
日本語少しおかしいよ・・・・・・
447デフォルトの名無しさん:2010/04/18(日) 23:25:40
>>446
言いたいことは俺も能書きが多くみえるということだ
検索してこの手が一番迷惑なんだよね
448デフォルトの名無しさん:2010/04/18(日) 23:27:15
必要な情報を取捨選択する能力にかけてるってことですね
449デフォルトの名無しさん:2010/04/18(日) 23:28:19
>>448
開く時間も持ったないと言ってる
ツイッターが引っかかるくらいうざい
450デフォルトの名無しさん:2010/04/18(日) 23:31:35
ageてるから自作自演バレてるぞ
451デフォルトの名無しさん:2010/04/18(日) 23:32:51
そうだぞ
452デフォルトの名無しさん:2010/04/18(日) 23:34:36
そうだぞ
453デフォルトの名無しさん:2010/04/18(日) 23:35:41
Silverlightなんかまだまだマイナーだしゲーム用でもないんだから情報があるだけマシ
454デフォルトの名無しさん:2010/04/18(日) 23:36:20
そうだぞ
455デフォルトの名無しさん:2010/04/19(月) 00:43:56
>>445
>ゲーム作ったことある俺でC#もできるが

今更だがこれって「能書きたれてるのはお前の方だ」っていうツッコミ待ちだったのでは?
みんな気づいてあげろよ……。
456デフォルトの名無しさん:2010/04/19(月) 09:11:54
>検索してこの手が一番迷惑なんだよね
>開く時間も持ったないと言ってる
>ツイッターが引っかかるくらいうざい

検索したら自分の欲しい物だけが与えられると思っているのは、いかにもゆとりらしい考え方だな。
457デフォルトの名無しさん:2010/04/19(月) 11:14:53
ゆとりでなくてもはてなウゼーとかよく言ってるのを目にするが
458デフォルトの名無しさん:2010/04/19(月) 11:37:48
でたらめ書いてあるのは迷惑と思ったりもするが、
そうでないなら何様だとしか言いようがない。
459デフォルトの名無しさん:2010/04/19(月) 11:47:06
うざいならスクリプトでも書いて除外すればいいじゃん
プログラマなんでしょ
460デフォルトの名無しさん:2010/04/19(月) 22:49:42
ttp://tore.vestues.no/2009/01/05/creating-a-dynamic-xml-reader-with-c-40/

これみたいなXMLをdynamicにする奴で
ちゃんと動くのってどっかにないですか
461デフォルトの名無しさん:2010/04/20(火) 00:37:19
最近本当にうざいのは、はてなよりもウィキペディアのコピペサイト
462デフォルトの名無しさん:2010/04/20(火) 00:43:10
俺は別のブログ記事へのリンクだけの広告ブログが本当にいやだ
463デフォルトの名無しさん:2010/04/20(火) 00:43:48
スパムでいいじゃん
464デフォルトの名無しさん:2010/04/20(火) 12:40:23
>>460
どれも技術サンプル程度
昔のDOMはともかく今はLINQ to XMLという優秀なライブラリがあるから
dynamicで使えてもそんなに変わらないよ
465デフォルトの名無しさん:2010/04/21(水) 23:35:52
htmlやデータなどからURLを抜き出すクラスの名前は何がいいでしょうか?
抜き出すメソッド名はGetURL()にしようかと思っています
466465:2010/04/21(水) 23:50:50
スレ間違えました
467デフォルトの名無しさん:2010/04/23(金) 14:55:11
C#というよりXAML(3D)についての質問ですが、専用質問スレがないのでここで
お願いします。メタセコイア形式mqoからXAMLに変換するプログラムを
つくりたいのですが、カメラの変換手法をご存じの方いらっしゃませんか。
既存の変換ソフトウェアでは、
Scene {
pos 0.0000 0.0000 1494.2412
lookat 4.5152 74.7634 0.3124
head 0.3000
pich 0.3100
ortho 1
zoom2 6.6503
amb 0.250 0.250 0.250
}
から
<PerspectiveCamera x:Name="Camera_blueknight"
Position="-244.763901,513.030212,1388.125000"
LookDirection="0.163176,-0.342020,-0.925416"
UpDirection="0.000000,1.000000,0.000000" FieldOfView="20.000000"
NearPlaneDistance="1" FarPlaneDistance="10000" />
に変換されているのですが、数字に関連性を見つけられなくて
やり方の見当がつかないのです。
468デフォルトの名無しさん:2010/04/23(金) 20:52:33
WPFの3Dって触ったことないけどプロパティ名見る限りDirect3Dそのまんまなんだなw
Direct3Dのドキュメントとか解説サイトとか見たらわかるよ
469467:2010/04/23(金) 21:10:59
自己解決しますた。
470デフォルトの名無しさん:2010/04/23(金) 23:53:42
>>469
他人になりすますのって意味があるのでしょうか。
自己解決したならおしえてほすぃです。
>>469
Direct3D方面で調べます。ありがとうございました。
471デフォルトの名無しさん:2010/04/23(金) 23:55:52
mqoからXあたりにコンバートしてさらにってのは駄目なのかね?
MDXとかXNA関連であさればコンバートライブラリとかでてきそうだな
472デフォルトの名無しさん:2010/04/24(土) 01:21:20
作者がmqoは互換性考えていないと言い切ってるから、やるならプラグイン
じゃね?C++だからスレチになっちゃうけど。
473デフォルトの名無しさん:2010/04/24(土) 21:13:32
XMLってソフトウェアからすると読みやすいかもしれないけど
人間には読みづらい
もっと人間寄りのいいアイディアないものかね
474デフォルトの名無しさん:2010/04/24(土) 21:14:17
あ、ふらっとの方に書いたつもりだったのに、まぁいいか
475デフォルトの名無しさん:2010/04/24(土) 21:15:49
>>473
ツールで編集できるようにするしかないね
XMLをGUIで編集するツールあるでしょ
476デフォルトの名無しさん:2010/04/24(土) 21:25:34
XMLスキーマとかメモ帳で書ける奴いるんだろうか
VSならインテリセンス頼みでなんとか書けるけど
477デフォルトの名無しさん:2010/04/24(土) 22:30:22
>>473
lisp があるじゃない
478デフォルトの名無しさん:2010/04/24(土) 23:05:39
スキーマはRelaxNGでしか書けない。
XSDじゃ書けない構造があるんでまともな変換ツールがないとかあって、C#じゃ
使ってないが・・・良いライブラリとか無いかな?
479デフォルトの名無しさん:2010/04/24(土) 23:10:30
結局諦めてXSD使ってる
スキーマ指定してXML編集するときにインテリセンスが効いたりとかサポートが強力すぎる
480デフォルトの名無しさん:2010/04/25(日) 19:04:37
質問させてください:

MenuStripをカスタムドローしようとしているのですが、
OnRenderItemTextでDrawThemeTextEx()を使って
文字を描画しようとすると、
真っ黒な四角が表示されてしまいます。

Graphic.DrawString()を使えば描画は出来るのですが、
ウィンドウにAero Glassを適用したとき、ClearTypeのフォントを描画すると
周りにアンチエイリアスのゴミが表示されるので、敬遠してます。

メイリオ使うなw とか言わずによろしくお願いします。
481480:2010/04/25(日) 19:06:48
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
base.OnRenderItemText(e);
if (e.ToolStrip.IsDropDown)
{
return;
}

using (var img = new Bitmap((int)e.Graphics.VisibleClipBounds.Width, (int)e.Graphics.VisibleClipBounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (var g = Graphics.FromImage(img))
{
var hDC = g.GetHdc();
var hMemDC = IntPtr.Zero;

var rect = new RECT();
rect.left = e.TextRectangle.Left;
rect.top = e.TextRectangle.Top;
rect.right = e.TextRectangle.Right;
rect.bottom = e.TextRectangle.Bottom;

var pb = BeginBufferedPaint(hDC, ref rect, BPBF_TOPDOWNDIB, IntPtr.Zero, out hMemDC);
//BufferedPaintSetAlpha(hMemDC, IntPtr.Zero, 255);
DrawThemeTextEx(hTheme, hMemDC, 0, 0, e.Text, -1, DT_NOCLIP | DT_CENTER | DT_SINGLELINE | DT_VCENTER, ref rect, ref option);
Uxtheme.EndBufferedPaint(pb, true);

g.ReleaseHdc(hDC);
e.Graphics.DrawImage(img, g.VisibleClipBounds);
}
}
}
482デフォルトの名無しさん:2010/04/25(日) 19:12:08
TextRendererは?
483デフォルトの名無しさん:2010/04/25(日) 19:30:20
>>481
Win32詳しくないんで違ってたらごめん。
普通にBitmapの背景を塗ってないから、なんて間抜けなオチじゃないよねまさか。
484480:2010/04/25(日) 19:37:12
>>482
ありがとうございます。
試してみたところうまくいきましたが、
DwmExtendFrameIntoClientArea()でAeroにしたら
Color.FromArgb(255, 0, 0, 0)でも文字が透明になりました。。

>>483
ありがとうございます。
それは確認してます。
背景をあらかじめ描いておいても、
上書きで黒い四角が現れます。
485デフォルトの名無しさん:2010/04/25(日) 19:43:24
>>484
くどいようだけど、

>背景をあらかじめ描いておいても、
これって、ちゃんと>>480のコードのimgのGraphicsに対して行ってるんだよね?

どうもe.Graphicsに対して描画してるようにも聞こえるけど....
486デフォルトの名無しさん:2010/04/25(日) 19:58:47
for (int i = 0; i < 10; i++)
{
textBox1.Text = "実験";
Thread.Sleep(500);
textBox1.Text = "";
//Thread.Sleep(500);
}
487デフォルトの名無しさん:2010/04/25(日) 20:00:14
テキストボックスの文字を点滅させたくて
ためしに上のようにしたのですが処理が終わるまで固まったように
なります。
簡単に点滅させられないのでしょうか
488デフォルトの名無しさん:2010/04/25(日) 20:01:49
//Thread.Sleep(500);

//があるのは間違いです。ごめん。
489480:2010/04/25(日) 20:04:15
>>485
はい。 e.Graphics ではなく、Graphics.FromImage(img) でつくった g にです。

あっ…
でも、hMemDCには何も描いていませんでした。
DrawThemeTextEx() の直前に FillRect(hMemDC, ref rect, GetStockObject(LTGRAY_BRUSH))
を入れてみたところ、
灰色の四角が現れました。

でも、文字は描画されません…
文字の色を白にしてもみてもダメでした。
490デフォルトの名無しさん:2010/04/25(日) 20:24:19
>>486
そのコードはどう見ても10秒間一切操作ができなくなるけど

for()ループを使うんじゃなくて、
System.Windows.Forms.Timer クラスを使うべきなんじゃない?
491467:2010/04/25(日) 20:28:37
492480:2010/04/25(日) 20:51:49
メイリオをあきらめてフォントをMS ゴシックにしたら、
「ファイル(F)」が「ブアゥレ(F)」に文字化けしたwww


だれか、Aero Glassのメニューに綺麗に文字が描ける方法を知りませんか?
493デフォルトの名無しさん:2010/04/25(日) 20:54:03
>>490
タイマを使うとテキストボックスの文字を点滅できました

forを使うとなぜ10秒間、「実験」の文字すらでてこなくなるのか
教えていただけるとありがたいのですが。
テキストボックス以外が固まるのはそうだろうなと思うのですが。
494デフォルトの名無しさん:2010/04/25(日) 20:56:13
>>492
VisualStyleRenderer.DrawText使えば?
495デフォルトの名無しさん:2010/04/25(日) 20:57:10
>>493
> forを使うとなぜ10秒間、「実験」の文字すらでてこなくなるのか
描画するのも同じスレッド
ところがそのスレッドがループで詰まってるから描画もできない
496デフォルトの名無しさん:2010/04/25(日) 21:08:49
>>495さん
ほえー
ありがとう。今日ずっと悩んでいたんです。
.AppendTextなら文字がでてくるのに
なんで.textでは出てこないのかなーと。
本当にありがとう。
497デフォルトの名無しさん:2010/04/25(日) 21:12:32
for (int i = 0; i < 10; i++)
{
textBox1.Text = "実験";
textBox1.Refresh();
Thread.Sleep(200);
textBox1.Text = "";
textBox1.Refresh();
Thread.Sleep(200);
}
としたらちゃんと点滅できました。ありがとう。
498デフォルトの名無しさん:2010/04/25(日) 21:14:29
>>497
お前は何もわかっていない
Thread.Sleepはマルチスレッドなど非同期で動かしたりする場合に使う
シングルスレッド、ましてやFormクラスで使うべきじゃない
499デフォルトの名無しさん:2010/04/25(日) 21:21:45
>>498さん
そのとおりです
今、マルチスレッドをやっているところなんです。
通信を別スレッドで受けている間
文字を点滅させられないかなと悩んでました。
怒らないで。
500480:2010/04/25(日) 21:23:45
>>494
ありがとうございます。
やってみましたが、やっぱり文字が透明になりました。
501デフォルトの名無しさん:2010/04/25(日) 21:24:58
で、通信データは別スレッドからテキストに固まらずに表示されるのに
なぜ、点滅みたいな簡単なことで固まるのかわからなかったので。
502デフォルトの名無しさん:2010/04/25(日) 21:28:35
>>501
それはマルチスレッドじゃなくて
ただのスレッド処理だから
もう一方が処理している間、他のスレッドは割り込めない
割り込みたいならlockキーワードを使うべし
503490:2010/04/25(日) 21:32:36
「メッセージループ」でぐぐるといいよ。
504デフォルトの名無しさん:2010/04/25(日) 21:53:10
>>492
ブアゥレ 噴いたww
505デフォルトの名無しさん:2010/04/25(日) 22:10:01
>>502-503さん
ありがとう。しばらく悩んでみます。
506デフォルトの名無しさん:2010/04/25(日) 22:33:15
そう言えばスレの流れとあんま関係ないんだけどさ
BitmapとかGraphicsとか、巷のサンプルだと必ずDisposeしてるじゃん?
GC来るまで残りっぱなのは理解してるけど、マネージリソースなんだから
そんな明示的にせんでもいいような気がするんだけど
なんか理由あるん?
507デフォルトの名無しさん:2010/04/25(日) 22:51:33
GraphicsもBitmapもどっちもアンマネージリソース抱えてるよ
Bitmapなんか実体はほとんどアンマネージメモリに置かれてるわけだし
508デフォルトの名無しさん:2010/04/26(月) 02:28:31
>>507
ソースある?
509デフォルトの名無しさん:2010/04/26(月) 05:25:18
>>480
少なくともVistaまでのAPIで透明の上にClearTypeで描画することはできない。
これはClearTypeの技術上仕方がない。
だからIEとかグラスの上に乗せるテキストはClearTypeじゃなくてただのアンチエイリアシングになっている。

直接の解決策ではないが.NET 4.0のWPFでは自己責任で透明の上にClearTypeで描画できるようになった。
Direct2Dは調べてないので知らないができるかもしれない。
510デフォルトの名無しさん:2010/04/26(月) 05:54:41
>>508
ReflectorでSystem.Drawing.dllを逆アセンブルしてみると分かるが、
これはGDI+のラッパーだから。
511デフォルトの名無しさん:2010/04/26(月) 06:07:00
ハンドル持ってる時点で分かると思うんだがなぁ
512デフォルトの名無しさん:2010/04/26(月) 06:18:24
IDisposableが継承してるならDisposeしろ。
GCで解決するならIDisposable継承しない、するな。
513デフォルトの名無しさん:2010/04/26(月) 08:53:14
IDisposableってのは、「Disposeしろ!」っていう開発者からのメッセージだから。
514デフォルトの名無しさん:2010/04/26(月) 11:18:15
アクションゲームなのだとスターを取ると無敵とかありますよね
他にもフラワーをとったら火が出たりするのとかメタル化したりとか
こういうのをやるときにそのキャラクターのクラスにフラグを持たせる方法もあると思いますが
そうしないで外からそのキャラクターのインスタンスに機能を拡張するのはどうすればいいでしょうか

まあ、上の例位だと、あたり判定の部分にデリゲードを使って
その部分を差し替えるとかでもいいかもしれませんが
はじめからyを押された時の処理を描くつもりがなくてそういう関数を用意していない時とかに
フラワーとったらどうしたらいいでしょうか。
515デフォルトの名無しさん:2010/04/26(月) 11:19:40
>>514
IronPython
516デフォルトの名無しさん:2010/04/26(月) 11:29:06
>>515
ありがとうございます
今ちょっとぐぐってみました
.Netから使えるスプリクト言語みたいなものですか?
ちょっと調べてやってみます.
517デフォルトの名無しさん:2010/04/26(月) 11:30:53
オブジェクト指向を勉強したら>>514みたいに考えたくなるのはよくわかるけど
特にゲームは実際やってみるとやっぱり上から神様が管理しないと難しいよ
518デフォルトの名無しさん:2010/04/26(月) 11:34:04
>>517
そうですね痛感してますw
でも趣味の勉強なのでいろいろ試してみたいと思います。
519デフォルトの名無しさん:2010/04/26(月) 12:10:47
ゲームはソース読んで勉強するのが一番わかり易いと思う
520デフォルトの名無しさん:2010/04/26(月) 14:05:19
DataTableに自作のクラスを入れることができますか?
入れようとするとToStringの中身が入ってしまうようですが。
521デフォルトの名無しさん:2010/04/26(月) 14:14:59
できますん
522デフォルトの名無しさん:2010/04/26(月) 14:40:23
>>514
継承できなければ委譲。拡張メソッドで行ける場合もある。
523デフォルトの名無しさん:2010/04/26(月) 14:58:42
>>514
has-aでいいんじゃない?
Marioをコンストラクタで受け取る
FlowerMarioクラスを作ってやればいいと思う
と、どう考えても回答者側の知識量ではない俺がいってみる。
524デフォルトの名無しさん:2010/04/26(月) 14:59:52
>>520
できるよ
単に表示されるときにToStringが呼ばれてるだけでしょ
525デフォルトの名無しさん:2010/04/26(月) 15:04:26
>>523
それは無意味
MarioとFlowerMarioの間に継承関係が無いなら
アプリケーションがFlowerMarioをあらかじめ知っていないといけない
526デフォルトの名無しさん:2010/04/26(月) 15:07:05
>>525
ああそうだね、じゃあ両方にインターフェースをつけるとか
527デフォルトの名無しさん:2010/04/26(月) 15:07:30
>>512
Disposeできない時のためにFinalizeがあるんじゃないの
528デフォルトの名無しさん:2010/04/26(月) 15:09:56
>>514
ステートマシンを内部に持てばいいんじゃないの、と適当言ってみる
それをオブザーバーパターンで外から操作とか
529デフォルトの名無しさん:2010/04/26(月) 15:13:24
Decoratorとか?
まあゲームだったら結局仕様をきっちり決めて決め打ちが一番いいと思うけど
530デフォルトの名無しさん:2010/04/26(月) 15:21:44
ゲームの場合、一度納品してから仕様変更なんて、基本的にはないだろうしな。
531デフォルトの名無しさん:2010/04/26(月) 15:26:41
ゲームのキャラクターなんか激しく周りの環境に依存するんだから
プラグイン的な拡張をやろうとすると結局グローバル環境的なものを丸ごと渡すことになって
あんまり意味が無さそう
532デフォルトの名無しさん:2010/04/26(月) 15:38:43
ありがとうございます
>>519-531
Decoratorパターンていうんですね>>526さんの
方法は一応考えたんですが、羽と花をとったときに
両方の効果を使える用にしたいなと思いまして。

>>528
調べてみます

拡張性に意味はないかもしれませんが勉強なので。
533デフォルトの名無しさん:2010/04/26(月) 16:04:32
>>521,524
ありがとう
次のようなコードで試したんですが、使い方間違ってますか?
foreach( DataRow row in table.Rows )
{
row["col1"] = new MyClass();
MyClass obj = row["col1"] as MyClass; //失敗する
}
534デフォルトの名無しさん:2010/04/26(月) 16:16:39
それ、col1列のDataColumnのDataTypeがStringになってる
535デフォルトの名無しさん:2010/04/26(月) 16:19:26
>>523
重要なことだからつっこませてもらうと、MarioがFireFlowerを取るとFireMarioになるんです。
Luigiクラスはいりません。バグの元ですから。
536デフォルトの名無しさん:2010/04/26(月) 16:21:04
>>530
最近はオンラインアップデートがあるからなんとも言えなくなってきたかも。
追加要素という名のアンロックは別としても、修正パッチあたるよ。
537デフォルトの名無しさん:2010/04/26(月) 16:29:22
てか、MODだろ
538デフォルトの名無しさん:2010/04/26(月) 16:50:34
>>534
おぉ、できました。
ありがとう
539536:2010/04/26(月) 17:00:05
ああ、家庭用ゲームだと思い込んでレスした
540デフォルトの名無しさん:2010/04/26(月) 18:32:54
>>523
has-aならStateをキャラクターとアイテムが持ったらいいんじゃね?
FireStateを持ったFireFlowerをMarioがとるとMarioがFireStateを持つようにする
541デフォルトの名無しさん:2010/04/26(月) 20:14:52
正直、マリオ程度のゲームなら
愚直にステート値でswitchするコードを書くほうが結局分かりやすいと思う。
こういうの、最近はすっかり「不吉な臭い」扱いになっちゃてるけどw

デリゲートやインターフェイス使ってストラテージパターンみたいなことしても、
自己満足以上の効果はないと思う。
542デフォルトの名無しさん:2010/04/26(月) 21:59:06
風マリオと雷マリオと闇マリオと土マリオとマリエと・・・
stateの量の問題?
543デフォルトの名無しさん:2010/04/26(月) 22:01:16
実際のゲーム機の開発でそこまで綺麗にクラス使ってるのかね?
544デフォルトの名無しさん:2010/04/26(月) 23:01:59
ゲーム機のゲームも結構な規模になってるだろし
それなりに綺麗な設計せざるを得なくなってるんじゃないかね?
545デフォルトの名無しさん:2010/04/26(月) 23:18:51
家庭用ゲームのソースコードなんて見る機会無いからね。
このスレに業界人は居るのかなぁ。
546デフォルトの名無しさん:2010/04/27(火) 01:35:19
テートスとかジーラテはスーコーあげあげだからねー
ウィチスーでスーケーしてるほうが現実見てるってyou know?
547デフォルトの名無しさん:2010/04/27(火) 01:45:26
日本語でおk
548デフォルトの名無しさん:2010/04/27(火) 02:25:00
StateまたはStrategypatternは時間がかかります。
switch caseを使用するのは現実的です。理解?
549デフォルトの名無しさん:2010/04/27(火) 02:54:50
把握した
550デフォルトの名無しさん:2010/04/27(火) 06:59:08
スーコーあげあげいいなw
スーコーマシマシ!
551デフォルトの名無しさん:2010/04/27(火) 21:27:43
object同士でプリミティブ型であれば
ある程度大小比較してくれる関数ってありますか?
具体的に言うとstringとint(byteなど)で比較を
正しく行いたいのですが。
552デフォルトの名無しさん:2010/04/27(火) 21:39:01
"a"と100のどっちが大きいかなんか定義次第なんだから正しい比較も何もないだろ
553デフォルトの名無しさん:2010/04/27(火) 21:41:11
どうやって"one"と5を比較できると思うんだ?
数値に変換できる文字列なら、数値に変換して比較するしかなかろう。
554デフォルトの名無しさん:2010/04/27(火) 21:49:10
int.Parse
555551:2010/04/27(火) 21:56:06
書き忘れました。
型が同じことが前提です。

>>552-554
ありがとう
やはりParseが一般的ですか。
DataViewもParseで比較してるのかな。
556デフォルトの名無しさん:2010/04/27(火) 22:04:26
型が同じって、Objectに入ってるInt32同士を比較したいってことなのか?
ならComparerクラスとか
557デフォルトの名無しさん:2010/04/27(火) 22:13:55
もう、自分がやろうとしていることを意味的に把握してないから人にうまく説明できないわけで、
その時点でちょっと.....
558デフォルトの名無しさん:2010/04/27(火) 22:15:50
関係ないけどstringやobjectは組み込み型だけどプリミティブ型ではないよ
559デフォルトの名無しさん:2010/04/27(火) 22:55:53
>>502
なぬ?

>>512
残念ながら一貫してそうはなってない。
560デフォルトの名無しさん:2010/04/27(火) 23:55:42
まあ確かにWin9xでなきゃ目くじら立ててDisposeする必要がないものでもIDisposable
実装してたりするし

関係ないけどインターフェイスを「継承」する、って言い回しはJava方面の方言?
それとも単にありがちな誤用ってだけなのか。
561デフォルトの名無しさん:2010/04/28(水) 00:03:00
ありがちな誤用
562デフォルトの名無しさん:2010/04/28(水) 00:03:04
>>560
C#方言。

インターフェイスの概要
インターフェイスには、次の特徴があります。

インターフェイスは抽象基本クラスに似ています。インターフェイスを継承する非抽象型は、すべてのインターフェイス メンバを実装する必要があります。

インターフェイスは直接インスタンス化できません。

インターフェイスには、イベント、インデクサ、メソッド、およびプロパティを含めることができます。

インターフェイスには、メソッドの実装が含まれません。

クラスと構造体は、複数のインターフェイスを継承できます。

インターフェイス自体が複数のインターフェイスを継承できます。
563デフォルトの名無しさん:2010/04/28(水) 00:06:37
>>555
型が同じなら、IComparableにキャストしてCompareToするとか。
http://codepad.org/m37TS28P
564デフォルトの名無しさん:2010/04/28(水) 00:09:13
かと思ったら、Javaでも使ってるな。 interface inheritance

言語規定より。
This (multiple) interface inheritance allows objects to support (multiple) common behaviors without sharing any implementation.
この(多重)インタフェース継承は,オブジェクトがいかなる実装も共有せずに(多重の)共通的な振る舞いをサポートすることを可能とする。
565デフォルトの名無しさん:2010/04/28(水) 00:14:38
インターフェースはインターフェースを継承できる
566デフォルトの名無しさん:2010/04/28(水) 00:15:28
>>565
なるほど、それが「実装」だったら確かにおかしいな。
567デフォルトの名無しさん:2010/04/28(水) 00:38:38
Javaだと、implements と extends とキーワード異なるけれども、C#だと、どっちもコロンだから用語を忘れてしまうんだな。
568デフォルトの名無しさん:2010/04/28(水) 02:12:26
クラスがインターフェースを継承している時点で実装があるはずなんだから、継承だけ使えば意味通じるでしょ
569デフォルトの名無しさん:2010/04/28(水) 02:19:02
570デフォルトの名無しさん:2010/04/28(水) 07:58:33
>具体的に言うとstringとint(byteなど)で比較を
>正しく行いたいのですが。

>型が同じことが前提です。
どっちだよw
571デフォルトの名無しさん:2010/04/28(水) 08:01:22
>>551
遅レスだけどこんなのダメだっけ
if (obj1 is IComparable)
{
return (obj1 as IComparable).CompareTo(obj2);
}
572デフォルトの名無しさん:2010/04/28(水) 11:06:44
インターフェースて使った事ないんだけど
どういうときに使うの?
573デフォルトの名無しさん:2010/04/28(水) 11:40:01
>>572
継承関係にない型の間に共通の機能を持たせて、同じように扱いたいとき。
>>563,571がまさにそれ。

C#の言語仕様(foreachだのusingだの)とも密接に結びついているので、
知らず知らずのうちにインターフェースを活用しているはず。
たとえば、IEnumerableを実装しさえすれば、どんな型でもforeachで列挙できる。
574デフォルトの名無しさん:2010/04/28(水) 11:53:40
>>563
>>571
これって文字の比較であって、数値の比較じゃないでしょ?
575デフォルトの名無しさん:2010/04/28(水) 11:55:54
>>574
何を言ってるんだ
576デフォルトの名無しさん:2010/04/28(水) 12:02:44
>>574
冷静になるんだ
577デフォルトの名無しさん:2010/04/28(水) 12:34:27
あるクラスを継承してメンバ関数だけオーバーライドして使いたい場合
元のクラスで扱っても大丈夫でしたっけ?
578デフォルトの名無しさん:2010/04/28(水) 12:36:13
>元のクラスで扱っても大丈夫でしたっけ?
インスタンスを作った後も元のクラスで扱っても大丈夫でしたっけ?
579デフォルトの名無しさん:2010/04/28(水) 12:38:51
元のクラスで扱うってのはどういうことなんだ?
継承元のクラスにキャストするとかそういうこと?
580デフォルトの名無しさん:2010/04/28(水) 12:41:53
>>579
ゲームの中にでてくる物体(障害物、自機、敵など)はすべて座標系など特定の
情報を持つという部分では共通ですが、動きだけが違うので管理上は継承前の
クラスで管理して、動きに関連するメンバ関数だけを差し替えを実現したい・・
という感じです
581デフォルトの名無しさん:2010/04/28(水) 12:46:35
オーバーライドしなくてもいいんじゃないか?
継承先で個別に実装すれば

100%書き換えることが前提になってる感じだからむしろIFとかにしてみるとか・・・
いや・・・いろいろ方法はあると思うが 継承元で関数書いてもどうせ空の実装とかにしかならんだろうし
オーバーライドしなけりゃ元の動作のまんまになってしまうのはバグの元だと思うんだ・・・
582デフォルトの名無しさん:2010/04/28(水) 12:47:23
>>580
普通にできるが
583デフォルトの名無しさん:2010/04/28(水) 12:49:39
>>581
むかーしgcc上で書いた物を移植中なので.netなりの方法はないかなあと模索してたりします。
C時代は関数ポインタのテーブルを用意して・・・とかやってたんですけどね

>>582
どんな感じでやればいいですかね?
584デフォルトの名無しさん:2010/04/28(水) 12:54:08
>>583
いやだから基本クラスで動き意外の関数作って
継承したクラスで新しく動きの関数作ればいいだけだけど
何が問題なの?
585デフォルトの名無しさん:2010/04/28(水) 12:58:17
class 物体
{
public void 動き以外の処理(){}
}

class 自機:物体
{
 public void 動きの処理(){}
}
586デフォルトの名無しさん:2010/04/28(水) 12:58:27
>>584
Hogeクラスを継承したHogeA,HogeB・・・・・HogeZとかあったとして
管理はList<Hoge>として全体をまとめたいんです・・
587デフォルトの名無しさん:2010/04/28(水) 12:58:42
抽象クラス使えば?
588デフォルトの名無しさん:2010/04/28(水) 13:03:24
589デフォルトの名無しさん:2010/04/28(水) 13:13:10
関数ポインタ使っていたなら、そのまま構造体を抽象クラスにして、関数ポインタを仮想関数にしたら、完成のように思うが。
590デフォルトの名無しさん:2010/04/28(水) 14:47:22
>>577
やってみたらいいのに何でわざわざ面倒な手順を踏んでるんだ?
591デフォルトの名無しさん:2010/04/28(水) 15:27:18
まあvirtualでググればいいんじゃないかな!かな!
>>577
592デフォルトの名無しさん:2010/04/28(水) 18:20:03
模索している割には他の提案を聞き入れようとしない件について

もし判ってないならそれは技術力不足以外の何物でもないな
593デフォルトの名無しさん:2010/04/28(水) 18:47:36
>>592
聞き入れないわけではなく聞いた上で調べた結果実装を考えた際に
こういう時どうしようとか悩んでるわけなんですよ

たとえばクラスを継承してインスタンスを作る際は確かに一つの
メンバ関数をオーバーライドですれば済みますが状態がわかった際に
インスタンス化されてしまってるクラスのメンバ関数を状態遷移に応じて
さらにオーバーライドできるかとか

できないなら、昔書いたように関数ポインタもどきを実装するしかないのだろうかとか

でもクラスに関数ポインタぽいことを実装すると関数ポインタのテーブルを
もったインスタンスがいっぱいできる?・・・とか
594デフォルトの名無しさん:2010/04/28(水) 18:48:18
>状態がわかった際に
この記述は無しで
595デフォルトの名無しさん:2010/04/28(水) 18:57:23
>>593
デリゲート
596デフォルトの名無しさん:2010/04/28(水) 19:00:03
頭の中が混乱してるみたいですね。
デザインパターンのテンプレートメソッドとストラテジーあたりを勉強するといいかも。

理解できないならIF文で押し切れw
597デフォルトの名無しさん:2010/04/28(水) 20:05:06
以下のようなメソッドを用意して、データをネットワーク越しに通信するプログラムを書いています。

private byte[] CompressBytes(object rawData)
{
  using (MemoryStream stream = new MemoryStream())
  {
    using (DeflateStream compressedStream = new DeflateStream(stream, CompressionMode.Compress, true))
    {
      BinaryFormatter formatter = new BinaryFormatter();
      formatter.Serialize(compressedStream, rawData);
    }
    return stream.ToArray();
  }
}
598597:2010/04/28(水) 20:06:16
private object DecompressBytes(byte[] compressedData)
{
  using (MemoryStream stream = new MemoryStream(compressedData))
  {
    using (DeflateStream decompressedStream = new DeflateStream(stream, CompressionMode.Decompress))
    {
      BinaryFormatter formatter = new BinaryFormatter();
      return formatter.Deserialize(decompressedStream);
    }
  }
}

単一のプログラムでテストする場合は問題なく動作するのですが、
クライアント・サーバのプログラムにそれぞれメソッドを組み込んで通信をしていると、
return formatter.Deserialize(decompressedStream);
の部分で、「デコード中に無効なデータが見つかりました。」というエラーが出ます。

具体的にはNetwork Streamに対してbyte配列を書き込み、
相手側で読み出すという作業をしているだけなのですが、ローカルとネットワークの場合で挙動が変わるのかよくわかりません。
# ネットワーク越しといっても、サーバプログラムで127.0.0.1に対してポートを開いて、クライアントプログラムで127.0.01にアクセスしているので、マシンスペックに違いは無いはずなのですが…

もし何か注意することがあれば教えていただけないでしょうか?
599デフォルトの名無しさん:2010/04/28(水) 20:10:35
http://www.sherwooddungeon.com/SherwoodDungeon.htm
こんな3Dネトゲが4M程度で実現できてるんだけど
C#でやるにはwebdeveloperとかsilverlightが必要?
600デフォルトの名無しさん:2010/04/28(水) 20:14:07
俺的に3Dゲームはudkやsource modを使うのが一番現実的だと結論付けた
601デフォルトの名無しさん:2010/04/28(水) 20:22:13
>>599
inしてみたが週末Flashスレで貼られる戦車のゲームとエリア規模は似てるな
まあ4MBってのも圧縮した状態だと小さくなるしなあ
602デフォルトの名無しさん:2010/04/28(水) 20:26:47
気軽に対戦ゲーム作りたくてもサーバーが難しいよね
603デフォルトの名無しさん:2010/04/28(水) 20:32:16
↓ここで簡単厨のターン
604デフォルトの名無しさん:2010/04/28(水) 21:17:01
まぁ俺にかかったら1日で何でもできるけどね
605デフォルトの名無しさん:2010/04/28(水) 22:22:27
>>598
そのエラーが出てるとこのデータの中身はどうなってるんだ?
ちゃんと送りつけた時と一緒になってるか?
まずはそこからだ
606デフォルトの名無しさん:2010/04/28(水) 22:30:49
>>602
ほとんどのレンタルサーバーはゲーム禁止だからな
ATPAGESではOKだが、負荷をかけすぎるとアカウント自体止められる
607デフォルトの名無しさん:2010/04/28(水) 22:34:13
>>583
abstract class foo
{
 foo(){}
 abstract bar(){}
}
class xxx : foo
{
 override bar(){}
}
とやって、xxxのインスタンスをList<foo>にでも突っ込めばいける
608デフォルトの名無しさん:2010/04/28(水) 22:36:24
あと、遷移ごとにfooを継承したクラスを作って突っ込めばいい
詳しくResponserパターンでくぐってみろ
609デフォルトの名無しさん:2010/04/28(水) 22:45:58
デザインパターンなんてみんな覚えてるの?
610デフォルトの名無しさん:2010/04/28(水) 23:24:35
>>609
そりゃデザパタから入った人は「覚える」って意識になるんだろな。
611デフォルトの名無しさん:2010/04/28(水) 23:46:55
趣味で一人でプログラミングするなら、無理にオブジェクト指向を意識する必要はないけどな。
下手にクラス設計に凝るくらいなら、ひたすらstaticでプログラム組んだ方がましだと思う。
どうせ誰かにソースを見せたり、過去の資産を利用したり、誰かから仕様変更を言い渡されたりはしないんだろ。
612デフォルトの名無しさん:2010/04/28(水) 23:48:17
>>611
妄想で語るな
613デフォルトの名無しさん:2010/04/28(水) 23:51:44
いや、正しい
614デフォルトの名無しさん:2010/04/28(水) 23:55:35
いや、過程に過ぎない
つまり妄想
615デフォルトの名無しさん:2010/04/28(水) 23:58:52
構造体の配列で回して、キャラのタイプIDでswitchしまくりで別に問題ない
616デフォルトの名無しさん:2010/04/29(木) 00:10:33
趣味なら作ってて楽しければいいし、どんなソースでも動けばいいんだよ。
617デフォルトの名無しさん:2010/04/29(木) 00:12:40
正解
618デフォルトの名無しさん:2010/04/29(木) 00:39:40
うん。
でもね、べつにクラス設計とかって伊達で導入されてるわけじゃないんだけどな。
規模が大きくならないとあんまり意味がないってことなら同意だけど。
619デフォルトの名無しさん:2010/04/29(木) 01:19:21
>>616
動いたけどsbyteで済むようなただのフラグ用の変数すらintで書いていて起動しただけで10MB超のメモリを食ったのは恥ずかしい経験w
やっていくうちに分かるってのはあるが、どんなソースでもとかいう気持ちだといつまで経っても向上しないような気はする。
620デフォルトの名無しさん:2010/04/29(木) 01:38:49
まあ目的と手段を間違えないことだな
621デフォルトの名無しさん:2010/04/29(木) 01:41:56
ゲームの場合オブジェクト指向が有効そうにみえるんだが
案外そうでもなかったりするんだよな・・・
もうちょっといい方法があればいいんだが
622デフォルトの名無しさん:2010/04/29(木) 01:56:24
>>598
受信途中のデータの後ろが欠けてるんじゃない?
MemoryStreamじゃなくて、直接NetworkStream渡せば?
623デフォルトの名無しさん:2010/04/29(木) 13:22:01
>>620
それはあるねー。
もっとも趣味プログラマの場合、楽しく正しく書くってのも目的に入ってる人は多いんじゃね?
624デフォルトの名無しさん:2010/04/29(木) 15:04:41
WPFやっててバインディングがものすごくよかったんだけど
WinFormでも同じようなことできましたっけ?
625デフォルトの名無しさん:2010/04/29(木) 15:12:13
バインディングの仕組み自体は似たようなもんだけどUIが貧弱なんだよ
コレクションへのDataTemplateを使ったバインディングのようなことをやろうとすると大量のコードが必要になる
626624:2010/04/29(木) 15:19:16
>>625
そうなんですか・・・
残念
627デフォルトの名無しさん:2010/04/29(木) 15:23:23
>>623
プログラムのプロをプロフェッショナルとかけたダジャレで
昭和生まれは素人プログラマのことをアマグラマって言うんだぜ
628デフォルトの名無しさん:2010/04/29(木) 15:24:38
>>625
WPFだとTreeNode.TagにList<>なんかが入ってても
簡単に取得できるの?
629デフォルトの名無しさん:2010/04/29(木) 15:26:28
WPFではTreeNodeみたいなのは直接扱わないんだよ
元々ツリー上になってるオブジェクトグラフからバインディングだけでノードを生成する
630デフォルトの名無しさん:2010/04/29(木) 15:28:44
>>628
WPFのサンプルみた感じだとTreeNodeじゃなくてツリーを形成するための
クラスを自分で作ってTreeViewにぶっこめば勝手に表示してくれてたな
631デフォルトの名無しさん:2010/04/29(木) 15:35:31
C#で作られたものをWPFに移植しようとしたら
また1から作り直し?
632デフォルトの名無しさん:2010/04/29(木) 15:37:38
>>631
WinForm依存のデータ格納クラスはそうなるかも
でも最初から依存をなるべく避けたコード書いてればそれほど問題にならない
633デフォルトの名無しさん:2010/04/29(木) 15:37:39
ロジックからコントロールを直接触ったりするような馬鹿な造りにしていなければ修正はUIまわりだけ
634デフォルトの名無しさん:2010/04/29(木) 15:38:01
>>630
ほー
今メニューの項目をそのままTreeViewに表示しようとしているんだけど
激しく面倒くさい
635デフォルトの名無しさん:2010/04/29(木) 15:50:17
ツリービューの項目にボタンを付けてボタンの上にhoge.ImageUriプロパティの値をバインドしてアイコンを表示して
アイコンの右にhoge.Nameプロパティをバインドしてテキストを表示して
子プロパティとしてhoge.Childrenプロパティをバインドして再帰的に展開して…
みたいなことがXAMLだけでできる
636デフォルトの名無しさん:2010/04/29(木) 15:52:11
とにかくすごいわ

C++からC#でかなり楽になったけどさらにWPFで楽できそうな感じ
637デフォルトの名無しさん:2010/04/29(木) 15:53:22
MSはWinFormよりWPFに力入れてるの?
おれもやってみようかな
638デフォルトの名無しさん:2010/04/29(木) 15:55:40
WinFormsは完成放置状態
Silverlightに力入れててWPFはそれに合わせてる感じ
639デフォルトの名無しさん:2010/04/29(木) 16:42:59
2008expressはもうダウンロード出来ないのかよ
640デフォルトの名無しさん:2010/04/29(木) 16:47:07
641デフォルトの名無しさん:2010/04/29(木) 17:22:18
銀光はApacheとかがMIMEタイプを標準で持つようにならないと普及しないと思う
窓鯖でもIIS7でないと標準で対応してないのがもうね
これ、意外と高い壁だよ
642デフォルトの名無しさん:2010/04/29(木) 17:26:31
>>641
おいおい
.netにはおさるさんがあるじゃなか
銀光とセットで月光あるしLinux上で.net動くぞ
完全互換とは言いがたいが
643デフォルトの名無しさん:2010/04/29(木) 18:05:26
WinFormで出来てWPFでできないことって何?
644デフォルトの名無しさん:2010/04/29(木) 18:21:38
>>643
wndprocのフック
コモンコントロールがないに等しいので自作しないといけない
645デフォルトの名無しさん:2010/04/29(木) 18:27:08
お客さんに売り込み辛いんだよな、WPF・・・
646デフォルトの名無しさん:2010/04/29(木) 18:29:15
短期納品、コストさげろ

これって生産性あげろってことなのにWPFだめって言われるとねえ・・・
647デフォルトの名無しさん:2010/04/29(木) 18:31:14
WPFって実際生産性高いのか
xamlが手間かかりそうなんだけど
648デフォルトの名無しさん:2010/04/29(木) 18:32:18
最近コンソールとかサーバーサイドばっかりで、UIのあるアプリ作ってないなぁ。
649デフォルトの名無しさん:2010/04/29(木) 18:34:49
>>647
なれるまでが面倒かな
XAMLその物はHTMLでwebページ作成するような感じなので
慣れが必要かなあ
650デフォルトの名無しさん:2010/04/29(木) 19:00:35
>>641
MIMEタイプが問題になるのはSilverlightより、WPF/XBAPやClickOnceだな。
651デフォルトの名無しさん:2010/04/29(木) 19:07:54
htmlはコード見ただけで拒絶反応
652デフォルトの名無しさん:2010/04/29(木) 19:08:36
ルーズXAML
application/xaml+xml
XBAP
application/x-ms-xbap
ClickOnce
application/x-ms-application

このくらいかな。IEは無くても処理してくれるが、firefoxの.NET Assistantアドオンを使う場合に必要。
653デフォルトの名無しさん:2010/04/29(木) 19:12:43
.htaccessをいじらせてもらえなくても、perlは使えるところが多いので、
こんな感じで無理やり対応できる。
#!/usr/local/bin/perl
# -- hoge.cgi --
print "Content-type: application/xaml+xml\r\n";
print "\r\n";
open(INF,"<hoge.xaml");
for (<INF>) {
  print $_
}
close(INF);
654デフォルトの名無しさん:2010/04/29(木) 19:24:42
>>644
>wndprocのフック
http://blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx

>コモンコントロールがないに等しい
WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。
655デフォルトの名無しさん:2010/04/29(木) 19:51:18
とりあえず画像ビュアー的なのを作ろうと思うんだけど
皆さんだとWinFormとWPFだとどっちが速く作れます?

サムネイル一覧表示
書庫から画像読み込み
各種フィルタ機能
画像の変換
を予定してます
656デフォルトの名無しさん:2010/04/29(木) 20:10:13
>>654 >wndprocのフック
こりゃありがてえ!
657デフォルトの名無しさん:2010/04/29(木) 20:13:39
>>642
いやそう言う話じゃなくて
.xapのMIMEタイプを指定してやらんと貼っても認識しない
>>653みたいなことも出来なくはないけど、それじゃあFlashの代わりとしては敷居が高すぎる
658デフォルトの名無しさん:2010/04/29(木) 20:14:24
>>657
ああすまん
httpヘッダのあれか・・
659デフォルトの名無しさん:2010/04/29(木) 20:30:34
xapを直接クリックでも起動できたっけ?
普通はHTMLLからsilverlightControlHostやsilverlight.js経由で
読み込むからMIMEの登録は不要なはず。

video再生くらいならxapなしで書けたりする。
ttp://www7a.biglobe.ne.jp/~fbsoft/test/BinaryStar.html
660デフォルトの名無しさん:2010/04/29(木) 20:34:14
あれ・・・yahoo移管後のGyaoってSLのプレーヤーだな・・・
どうやってるんだろ
661デフォルトの名無しさん:2010/04/29(木) 22:04:42
>654
できるのか。知らんかった

>WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。
コモンコントロールあるのか・・・
そのキットにはコモンダイアログもついてるのか?
フォントダイアログを自作する作業はもう嫌だよ・・・
せめてそのくらいつけてくれ>MS
662デフォルトの名無しさん:2010/04/29(木) 22:06:41
ファイルダイアログくらいは仕方ないとしても、
コモンダイアログは本質的にWPFの範囲外だから付けたくないんだろ
663デフォルトの名無しさん:2010/04/29(木) 22:34:35
フォント選択ダイアログはこの辺参考に自分で作るか、WinFormsの利用するしかないかな。
http://ov-p.spaces.live.com/blog/cns!39D56F0C7A08D703!253.entry
http://blogs.msdn.com/text/archive/2006/11/01/sample-font-chooser.aspx
664デフォルトの名無しさん:2010/04/29(木) 22:36:51
>>661
WPFだとFont列挙してListboxにでも入れてしまえばいいような気がする
665デフォルトの名無しさん:2010/04/30(金) 00:21:52
C#に限ったことではないのですが
ループする項目に対していろいろな条件によって
continue;するプログラムを書いていると
ついループが長くなりがちでなんとかしたいのですが
コツのようなものはありますでしょうか
すぐ思いつくのは
・ループ内からメソッドを呼ぶようにして
結果をboolで返すとか(処理結果を他で使いたい場合に問題)
・例外でループまで戻ってくる
(処理コストの面と意味的な面で例外を使うのはどうか)
と言った辺りですが思いつくことありましたらご意見を。
666デフォルトの名無しさん:2010/04/30(金) 00:26:02
>ついループが長くなりがち
なったことないのでわからん
どんな処理書いてるのか見せてもらえると一番なんだが・・・

コード晒す場合は>>4の※コードの量が多い場合・・・のところを使ってね
667デフォルトの名無しさん:2010/04/30(金) 00:34:08
>>665
bool返すメソッドをデリゲートに設定すれば
一つのメソッドで複数のメソッドを呼び出すことができる
一つのif文で済む
あとはその処理用にデータ構造を設けてコードが短く済むようにする
668デフォルトの名無しさん:2010/04/30(金) 01:47:47
よく分からんが、ループ内をごっそり他の関数にするとか大きな処理にまとめるとか?
669デフォルトの名無しさん:2010/04/30(金) 01:56:16
多態使うとか
670デフォルトの名無しさん:2010/04/30(金) 02:02:16
↓な感じでPictureBoxのサイズ変更時にImageのサイズも
変更しようとしてるんですけどImageのサイズが変わりません。
この方法まずいでしょうか。
※PictureBoxはフォーム全体にアンカーを貼っていてフォームサイズが変わると
 連動するようになっています。

Private void pictureBox1_Resize(object sender, EventArgs e)
{
  pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
}
671デフォルトの名無しさん:2010/04/30(金) 02:23:50
なにをしたいか知らんがpictureBoxはこんなことができる
http://ideone.com/Cs4gU
672デフォルトの名無しさん:2010/04/30(金) 02:23:58
変更したサイズのImageが実際に欲しいのか、
Pictureboxのサイズに合わせて表示も拡大したいのか良く分からんけど、
後者ならプロパティに設定するだけ。
SizeModeをZoomかStretchImageにすればいける。
673デフォルトの名無しさん:2010/04/30(金) 02:31:27
それよりぶち抜きでcontinueとかbreakしたいのは俺だけか
一番内側から最外ループまで一気に戻りたい時とか面倒で仕方ない
674デフォルトの名無しさん:2010/04/30(金) 02:33:28
そんなのはケースによるしな
どんなコードの状況になてて>>665なのかわからんし
当たり障りの無い回答しかできないのも事実
675デフォルトの名無しさん:2010/04/30(金) 02:51:11
>>672
SizeMode設定で出来ました。
ありがとうございます。

別のGraphicsの画像をPictureBox.Imageに拡縮貼り付けしていて
PictureBoxのサイズが変わったら貼り付ける座標も変わるだろうということで
PictureBox.ImageのサイズをPictureBoxのサイズに変えたかったんですけど
PictureBoxはPictureBox.ImageをStretchBltしてくれるみたいなイメージなんですね。

>>671
なんだか・・・いろいろやってくれるんですね.NETは
今までWin32APIでしかウインドウズプログラミングしたことなかったので
勉強になります・v・
676デフォルトの名無しさん:2010/04/30(金) 17:10:33
次は、縮小画像がガタガタなんですけど…という質問が来るにちがいない。
677デフォルトの名無しさん:2010/04/30(金) 17:17:39
>>676
ファミコンの画像を縮小したら変に滑らかになって困ります。RGB接続した時のようなまま縮小したいです
678デフォルトの名無しさん:2010/04/30(金) 17:26:09
>>677
Bitmapオブジェクトを直接弄るしかない
679665:2010/05/01(土) 01:05:49
意見ありがとうございます。
実物はアレなので話のネタにサンプルコードとしますがこんな感じ

IEnumerable<T> e = xx;
foreach (var x in e)
{
bool a = this.A(x);
if (a)
{
continue;
}
bool b = this.B(x);
if (!b)
{
continue;
}
string c = ExtLibC.C(a, b)
if (c == null)
{
continue;
}
DD d = ExtLibD.D(x, a, b, c)
if (d == null || d.D == null || d.DD == null) {
continue;
}

// こんな処理が数十行続くとか
// もっとネストが深いとか
}
680デフォルトの名無しさん:2010/05/01(土) 01:54:42
適当な粒度でメソッドに分ければ?
この例だと有効なdを取得したいんだろうから、こんな感じかね

foreach(var x in e) {
  var d = D(x);
  if (d == null || d.D == null || d.DD == null) continue;

  // 処理
}

--
DD D<T>(T x) {
  if (A(x) || !B(x)) return null;
  string c = ExtLibC.C(false, true);
  return (c != null) ? ExtLibD.D(x, false, true, c) : null;
}
681デフォルトの名無しさん:2010/05/01(土) 03:02:05
>>679
まあ分かって聞いてるんだと思うけど、そんなの汎用的な方法論なんてあるわけないよね。

冗長なコードが悪なのは誰も異論がないとしても、
それは全ての処理はコンパクトな記述が可能だってことを意味しないわけで。
682デフォルトの名無しさん:2010/05/01(土) 04:10:07
ListViewのLargeIconモードでD&D並べ替えがしたいんだけど、スクロールが出来ない
DragDropEffects.Scroll指定するだけじゃダメなの?
683デフォルトの名無しさん:2010/05/01(土) 16:40:31
DataGridViewってセル結合出来ないのね・・・
684デフォルトの名無しさん:2010/05/01(土) 17:55:36
>>683
諦めるんだ・・・
サードパーティが売れなくなるだろ?
685デフォルトの名無しさん:2010/05/01(土) 19:22:19
できないことはないけど、コードガリガリ書くの面倒だよ
686デフォルトの名無しさん:2010/05/02(日) 13:10:14
面倒なんでhtmlにしてWebBrowser貼付けた
楽すぎるw
687デフォルトの名無しさん:2010/05/02(日) 13:22:41
>>686
ブラウザで代替出来る程度のことなら、素直にTableLayoutPanelでも使った方が
もっと簡単なんじゃないかと....
688デフォルトの名無しさん:2010/05/02(日) 14:48:35
>>687
中の文章でセルサイズを自動調節したいんで、
TableLayoutPanelでは難しいです
689デフォルトの名無しさん:2010/05/02(日) 18:17:07
if(a == 1 && a == 2 && a == 3)
{
}
こんな感じのコードをもっとスマートに書く方法ってないですかね。
例えば
if(a == (1 && 2 && 3))みたいな感じで。
「かつ」ではなく「もしくは」ならswitch文で代用できるんですけど。

よろしくお願いします。
690デフォルトの名無しさん:2010/05/02(日) 18:18:44
if(false)
691デフォルトの名無しさん:2010/05/02(日) 18:20:36
すみません。間違えました。確かにこれはおかしいですねw
if(a != 1 && a != 2 && a != 3)
{
}
こんな感じのです。
692デフォルトの名無しさん:2010/05/02(日) 18:22:36
また「スマート = 文字数が少ないこと」と勘違いしている人かな。
693デフォルトの名無しさん:2010/05/02(日) 18:23:27
switchとか!(new[] { 1, 2, 3 }.Contains(a))とか
694デフォルトの名無しさん:2010/05/02(日) 18:28:22
>>691
用途上 a >= 0 に限定できるなら
if (a && a > 3)
{
}
695デフォルトの名無しさん:2010/05/02(日) 18:43:52
>>692
今回例に出したのは数値型でしたが、文字列型だった場合には条件式の組み合わせが非常に多くなってしまって鬱陶しかったんで。
個人的なことですが、if文等の括弧の途中で改行挟むのが嫌いなものの、改行しないでいると横スクロールが面倒になるという始末。
まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。
要はわがままです。

>>693-694
ありがとうございます。配列に対してContainsを使う方法は思いつきませんでした。
文字列型の場合にも有効活用できそうですね。
696デフォルトの名無しさん:2010/05/02(日) 18:58:05
>>695
いずれにせよ、値の評価関数(ようはintならintを引数にとってboolを返す関数)
をつくるベタなやり方の方がいいと思うけど。

ifの()の中の記述に場当たり的な技巧を凝らすのは時間の無駄だし馬鹿っぽい。
697デフォルトの名無しさん:2010/05/02(日) 19:13:09
実行速度を計測してみたところまぁ当たり前な気もしますが、単純に比較するのとContainsを使う方法では前者のほうが圧倒的に速かったです。
実行速度を気にしなくて言い場合にはContainsは有効ですね。

>>696
上記の理由より、予め比較を終わらせておく手段をとるのが最善のようですね。
698デフォルトの名無しさん:2010/05/02(日) 19:13:41
数が多くなるならリストを予め作っといて>>693の後者の考え方で判定するのがきれい
699デフォルトの名無しさん:2010/05/02(日) 19:34:51
>>695
>>まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。

俺もこうするかな


bool b1 = a != 1;
bool b2 = a != 2;
bool b3 = a != 3;

if( b1 && b2 && b3 )
{

}
700デフォルトの名無しさん:2010/05/02(日) 20:21:29
俺は状態を管理するクラスを作るかな。
701デフォルトの名無しさん:2010/05/02(日) 20:24:30
var b = a != 1;
b &= a != 2;
b &= a != 3;
if (b)
{
}
だろ
702デフォルトの名無しさん:2010/05/02(日) 20:24:47
ただ条件文自体は普通に書くのが一番分かり易いし取り回しもいいと思う。
703デフォルトの名無しさん:2010/05/02(日) 20:25:45
>>702
まあ状況によりけりだが素直に条件式書く方がスマートだったりするよな
704デフォルトの名無しさん:2010/05/02(日) 20:31:55
拡張メソッドでNotIn作れば良いよ
705デフォルトの名無しさん:2010/05/02(日) 20:34:00
素直に条件式書いた方がコンパイラ的にも最適化しやすいと思うし。
706デフォルトの名無しさん:2010/05/02(日) 20:40:56
業務アプリならifのパフォーマンスなんかどうでも良くて人間が見やすいことが優先されることが圧倒的に多いけどな
707デフォルトの名無しさん:2010/05/02(日) 20:50:31
業務アプリなら他のプログラマが見ることもあるだろうから普通に書いた方がいい。
個人なら好きにすればいいよ。
708デフォルトの名無しさん:2010/05/02(日) 20:57:54
>>695
つまらないこだわりはよせ
月にロケットを飛ばすプログラムが一行で書けたところで
何の意味もない
709デフォルトの名無しさん:2010/05/02(日) 21:07:20
あれ?2010からはヘルプはドキュメントブラウザじゃなくてウェブブラウザになったの?
しかもオンラインのみ?
ローカルに設定したんだけど・・・
710デフォルトの名無しさん:2010/05/02(日) 21:13:25
あ、失礼w
ローカルアドレス参照になってましたorz
711デフォルトの名無しさん:2010/05/02(日) 21:18:03
>>708
意味あるだろ
712デフォルトの名無しさん:2010/05/02(日) 21:32:35
>>711
どこに?
713デフォルトの名無しさん:2010/05/02(日) 21:36:39
俺ルールだと
if ( a != 1
&& a != 2
&& a != 3
) {
}
条件の追加削除が楽だし、&&なのか||なのかが前に並んで、俺が分かりやすい。
後ろに置くとチェック変数の変数名長でガタついて見間違えやすいから。
横並びなんて誰得。複合条件ならカッコつけてインデント。複雑なら変数方式。
これを部下に押し付けてる。

途中で||とか変な条件入ったら693なんてどーすんの?
714デフォルトの名無しさん:2010/05/02(日) 21:38:20
大昔のパソコン雑誌(確かASCII)にはその手のコンテストがあったな。
一行プログラムコンテストだっけ?

オッサンの独り言でした
715デフォルトの名無しさん:2010/05/02(日) 21:40:59
>>713
これとか、カンマを文頭に書くのは好きになれないなぁ。
確かに見やすい&わかりやすいけどね。
716デフォルトの名無しさん:2010/05/02(日) 21:52:31
>>713
途中で||が入ったとしても、&&で括れるグループ毎にまとめるとかはできるでしょう。
それに様々な条件が入り交ざったモノってそこまで条件式自体は長くないのが多いし、仮に長かった場合には関数なりなんなりでわかりやすく分離すればいいかと。
717デフォルトの名無しさん:2010/05/02(日) 21:57:35
>>716
分解したら今度は読み解くのにあっちこっち見に行かなければならない
718デフォルトの名無しさん:2010/05/02(日) 22:02:28
神経質な人はやりたくなるのは分かるけど、
手作業でコードの整形とか時間の無駄なんだよな。
719デフォルトの名無しさん:2010/05/02(日) 22:15:44
そんなことよりswitch文で必ずbreak入れなければならない仕様は改悪だと思うんだ
720デフォルトの名無しさん:2010/05/02(日) 22:18:14
caseの中身書かなければ並べられるので不便だと感じたことはないな
721デフォルトの名無しさん:2010/05/02(日) 22:28:38
>>719
少数意見だろうな。
722デフォルトの名無しさん:2010/05/02(日) 22:30:54
723デフォルトの名無しさん:2010/05/02(日) 22:33:40
フォールスルーの読みづらさは凶悪
フォールスルーが言語でもめったに使われてないからたまに使われてるとほぼ確実に見落とす
724723:2010/05/02(日) 22:35:15
フォールスルーが許されてる言語でも の間違い
725デフォルトの名無しさん:2010/05/02(日) 22:38:46
>>722
交通事故かな
726デフォルトの名無しさん:2010/05/03(月) 00:51:47
まさかプログラム板でグロ画像見るとは思わなかった。
727デフォルトの名無しさん:2010/05/03(月) 01:27:07
病んでるんだろ
ほっとけ
728デフォルトの名無しさん:2010/05/03(月) 01:33:15
>>726
まあ休みの深夜だしw
729デフォルトの名無しさん:2010/05/03(月) 03:27:15
長期休暇は変な人があちこちに出没するなぁw
730デフォルトの名無しさん:2010/05/03(月) 09:47:15
>>723
フォールスルーするならコメント書いとけ
731デフォルトの名無しさん:2010/05/03(月) 13:15:11
732デフォルトの名無しさん:2010/05/03(月) 13:24:51
削除ガイドライン違反

8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。
733デフォルトの名無しさん:2010/05/03(月) 14:23:53
コピペ君も同類だけどな、まで読んだ。
734デフォルトの名無しさん:2010/05/04(火) 00:25:02
このプログラムなのですが、どうしてもエラーが消えません。
どこがおかしいのでしょうか?

C:\Documents and Settings\tutomu\My Documents\Visual Studio 2008\Projects\gomokuproguram\sironoisi.cs
735デフォルトの名無しさん:2010/05/04(火) 00:30:23
>>734
知りません。
答えようがありません。
736デフォルトの名無しさん:2010/05/04(火) 00:31:21
キチガイの相手すんな
737デフォルトの名無しさん:2010/05/04(火) 00:32:48
知らんがな。つとむくん。
738デフォルトの名無しさん:2010/05/04(火) 00:58:19
うお、うpろだにあげるの忘れてた
739デフォルトの名無しさん:2010/05/04(火) 01:01:27
つとむくん
忘れてたってレベルじゃねぇぞ!

ところで
gomokuproguram

GomokuProgram
ではないか?
740デフォルトの名無しさん:2010/05/04(火) 01:04:52
もうやめて!つとむくんのライフゼロよ!
741デフォルトの名無しさん:2010/05/04(火) 01:07:32
つとむくんは盲点だったわww
確かにwwww
742デフォルトの名無しさん:2010/05/04(火) 01:10:06
山口さんちのツトム君
このごろ少し変よ どうしたのかナ
743デフォルトの名無しさん:2010/05/04(火) 01:12:46
何歳だよお前
744デフォルトの名無しさん:2010/05/04(火) 01:20:32
うpろだにつながらなくなってしまった
なんで名前知ってるの・・・?

いちようウイルスソフトは入れている
2chになんかカキコするんじゃなかった
745デフォルトの名無しさん:2010/05/04(火) 01:24:02
誰だよお前
746デフォルトの名無しさん:2010/05/04(火) 01:26:50
例え私が滅びようが第二、第三のツトムが五目プログラムを作るであろう・・・

グフッ
747デフォルトの名無しさん:2010/05/04(火) 01:34:27
>>744
ウイルスソフトなんて入れてるから駄目なんだと思います。
>>746
ワロタww
748デフォルトの名無しさん:2010/05/04(火) 01:39:30
ツトム君の人気に嫉妬した
749デフォルトの名無しさん:2010/05/04(火) 02:25:23
プログラム一通り見たけど、設計がなってない
750デフォルトの名無しさん:2010/05/04(火) 02:44:44
シロノイシ

なんか小説でも書けそうなタイトル
751デフォルトの名無しさん:2010/05/04(火) 09:32:12
つとむ君のスレになりそうだな
【五目】C#相談室【白の石】
752デフォルトの名無しさん:2010/05/04(火) 09:50:42
こうだろ
【五目】C#相談室(ツトム君専用)【白の石】
753デフォルトの名無しさん:2010/05/04(火) 10:07:25
OSに頼らずにジェスチャーを実装することって可能かなあ・・・
マウスだとボタンとポインター移動部分が独立してるけど
タッチパネルとなるとタッチした瞬間にカーソル移動+
MouseDownとかイベント発生しそうだし・・・
754デフォルトの名無しさん:2010/05/04(火) 10:25:11
>>753
戦車ゲームが難しいな
タッチしたら旋回して即発射
つねに振り向きざま即発射
755デフォルトの名無しさん:2010/05/04(火) 11:09:10
白の意思・・・か・・・
ついにはじまるのか・・・
756デフォルトの名無しさん:2010/05/04(火) 11:46:18
燃え尽きた・・・真っ白に・・・
757デフォルトの名無しさん:2010/05/04(火) 12:38:42
原因がわかりました
iとjをまちがいていました
変数名をtateとyokoにすることによって解決。
forの変数はiから順に使うとならったけど
名前を使ったほうが分かりやすいと思う

あと名前をカキコするのはやめてください。
どこで知ったのかわかりませんが
ちゃんとうpろだに成功してたのかな?

758デフォルトの名無しさん:2010/05/04(火) 12:41:08
"つとむ" はローマ字だと"tsutomu"だよ。
"tutomu"じゃないよ。
759デフォルトの名無しさん:2010/05/04(火) 12:41:58
>>757
ネタなのかマジなのか
>>734で自分で晒してるよ

IDEのデフォルトの保存場所にするとマイドキュメントになるので
下手にプロジェクトとか晒すとユーザーネームまるばれなんだよw
760デフォルトの名無しさん:2010/05/04(火) 12:42:48
>>758
僕はtutomuって書くことが多いですね
最近はローマ字で名前書いたことないですけど
761デフォルトの名無しさん:2010/05/04(火) 12:44:00
>>759
はぁー!
フォルダに名前使ったおぼえないのに
C#が勝手に作った!?_
762デフォルトの名無しさん:2010/05/04(火) 12:45:34
>>761

お前面白いなwww
763デフォルトの名無しさん:2010/05/04(火) 12:45:42
>>761
プロジェクト保存するときに保存先を聞いてくるので
見逃してたら自己責任だろうw
764デフォルトの名無しさん:2010/05/04(火) 12:47:14
>>758
訓令式というものがあってな
765デフォルトの名無しさん:2010/05/04(火) 12:55:48
だめだフォルダの名前が変えれない
名前フォルダの中にデスクトップがあるし訳が分からない
デスクトップの中にエクスプローラーがあってその中にデスクトップがある。
でも普通にファイル開けた
766デフォルトの名無しさん:2010/05/04(火) 12:59:30
もうやめてあげて!ツトムくんが人間の形を留めていられなくなっちゃう!
767デフォルトの名無しさん:2010/05/04(火) 13:07:42
鼠人間ツトム
768デフォルトの名無しさん:2010/05/04(火) 13:12:11
そろそろ板違いだから。
これ以上やりたければ、パソコン初心者板でも行こうな。つとむくん。
769デフォルトの名無しさん:2010/05/04(火) 13:14:15
>>768
既に聞きに行っているみたいだぞwww
http://pc12.2ch.net/test/read.cgi/win/1267768729/828
770デフォルトの名無しさん:2010/05/04(火) 13:26:27
ネタじゃなくてマジだったのかw
771デフォルトの名無しさん:2010/05/04(火) 14:08:40
板を超えた釣りだろ
772デフォルトの名無しさん:2010/05/04(火) 16:53:13
>>769
予想の斜め上www
773デフォルトの名無しさん:2010/05/04(火) 17:02:31
プログラム作る前にやることあるだろ
774デフォルトの名無しさん:2010/05/04(火) 17:56:23
「白の石」って響きがすごくかっこよいんですけど。
775デフォルトの名無しさん:2010/05/04(火) 20:02:39
でも、黒の石と別にする合理的な理由が思いつかない
776デフォルトの名無しさん:2010/05/05(水) 00:20:35
黒の意思か・・・
・・・風が吹いてきたな・・・
777デフォルトの名無しさん:2010/05/05(水) 03:14:02
本人だけじゃなくてパソコンの先生にも問題があると思う
無条件に変数をiから使うとか教えてるっぽいし
778デフォルトの名無しさん:2010/05/05(水) 08:52:18
パソコンの先生wwwww
779デフォルトの名無しさん:2010/05/05(水) 09:26:18
VS2008を使ってます。
httpでHEADリクエストを送るにはどうすればいいでしょうか。

WebRequest, WebResponseを使うとGETで全部取ってきてしまうので・・
780デフォルトの名無しさん:2010/05/05(水) 09:33:54
>>779
Method プロパティに "HEAD" 入れりゃいいだけの話。
"POST" したことあるならやり方わかるよね?
781デフォルトの名無しさん:2010/05/05(水) 09:54:38
>>780
Method指定でできましたー
どうもありがとうございます
782デフォルトの名無しさん:2010/05/05(水) 15:10:58
VS2005なんですが、デザイナで自動生成されるコードで、
プロジェクト規定の名前空間を含めないようにすることはできますか?

規定の名前空間が'hoge'で、コンパイル時に
型名'hoge1'は型'hoge.hoge'に存在しませんとなるのを避けたいのですが・・・
783デフォルトの名無しさん:2010/05/05(水) 15:29:35
テンプレートをいじればいけるかも。
784デフォルトの名無しさん:2010/05/05(水) 18:29:47
C#をやってみようと思いますが、
Visual C# 2010 Expressというのは製品版と比べて
どんな制限があるんでしょうか?
785デフォルトの名無しさん:2010/05/05(水) 18:43:22
>>784
普通にやる分には、全く制限が無いと思ってもいい。
786デフォルトの名無しさん:2010/05/05(水) 18:52:04
>>785
えーっすごいですね!
早速参考書を買いに行ってきます。
787デフォルトの名無しさん:2010/05/05(水) 18:53:26
そういやC#部分だけ見たらほとんど制限ないな
788デフォルトの名無しさん:2010/05/05(水) 18:54:40
ところで、どこかに比較表とかありますか?
789デフォルトの名無しさん:2010/05/05(水) 18:58:45
2010の比較表はまだ無いようだ。
参考書はとりあえずやめとけ。ネットで調べたらいくらでも出てくる。
790デフォルトの名無しさん:2010/05/05(水) 18:59:40
MSのサイトにあるだろ。
791デフォルトの名無しさん:2010/05/05(水) 19:07:52
>>789
勉強時間が移動中か寝る直前ですし、
本のほうが集中して読めるので。。

>>790
http://www.microsoft.com/express/Windows/
このページの右の「Compare Express Products」ですか?
読んでもよくわかりません…(英語がわからないのではなく)
792デフォルトの名無しさん:2010/05/05(水) 19:08:56
出来ること
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/aboutexpress.aspx

これは広告だから制限は書いていない。
重要な制限としてはテスト周りが制限されている。
・ 単体テスト機能が無いので、外部ツールの NUnit を使う必要がある。
・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。
・ C++ とか C# とか言語別製品になっているため、言語の混在したソリューションが作れない。
→ C++で作ったDLLを参照して使うC#のプロジェクトのデバッグでC++のソースは見えない。
えーと、間違いとか校正よろしく。
793デフォルトの名無しさん:2010/05/05(水) 19:18:27
> 1. 無償
> Visual Studio 2008 Express Edition は無償で提供しています。さらに作ったアプリケーションは商用利用が可能です。

これすごいですね
794デフォルトの名無しさん:2010/05/05(水) 19:21:14
>>789
オヌヌメのサイトある?
795デフォルトの名無しさん:2010/05/05(水) 19:21:40
初心者スレ行けば?
796デフォルトの名無しさん:2010/05/05(水) 19:25:04
ちょいと行ってくる
797デフォルトの名無しさん:2010/05/05(水) 20:10:15
>>793
すごくない
当たり前のこと
798デフォルトの名無しさん:2010/05/05(水) 20:13:23
C# Builder Personalとか、商用利用はダメじゃなかったっけ?
それを考えれば「当たり前」とは言えないでしょ。
799デフォルトの名無しさん:2010/05/05(水) 20:33:50
何でも人の逆を言ってみたいだけのガキを相手にしてくてもいいのに
800デフォルトの名無しさん:2010/05/05(水) 20:35:21
天邪鬼か
801デフォルトの名無しさん:2010/05/05(水) 21:22:35
「天邪鬼」とは言えないでしょ。
802デフォルトの名無しさん:2010/05/05(水) 22:20:26
C#ExpressはFormだけで完結するアプリ作るんなら必要十分だが
DB絡むと途端に使えない子になる
まあ無償だからしょうがないが
803デフォルトの名無しさん:2010/05/05(水) 22:30:24
>>792
>・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。

どうすれば使えるんですか?
ご教示ください。
804デフォルトの名無しさん:2010/05/05(水) 23:47:48
>>803
スマンやり方を忘れてしまった。
http://project.iifp.biz/modules/mydownloads/
から拾ってきたテンプレートでごしょごしょやった気がしたが・・・

NCover単体でやってたのかな?カバレッジのために使ってたし。
805デフォルトの名無しさん:2010/05/06(木) 05:58:35
>>802
そんなことないよ。
806デフォルトの名無しさん:2010/05/06(木) 14:59:05
スレッドの意味がよくわかりません。
デリゲートと比較すると引数もコールバックも渡せない。
敢えてスレッドを選択するのはどういう場面なんでしょうか。
807682:2010/05/06(木) 15:03:43
自力でなんとか調べて、InsertionMark.NearestIndexとEnsureVisibleで
ある程度D&D時のスクロールは実現出来た
ただ、上方向へはスクロールするけど下方向がスクロールしない
マウス近くのアイテムが表示範囲に入ったところで止まってしまう
下方向へもスクロールするにはどうしたらいい?
808デフォルトの名無しさん:2010/05/06(木) 15:08:32
>>806
常にバックグランドで待ち構えていなければならないような用途かな
例えばアーカイバプロジェクトDLLはほとんどがマルチスレッドに対応していない
だからアクセス専用スレッド待機させて、生産者消費者パターンでシリアル化する、みたいな

まあUIスレッドのために存在する、って言っちゃってもいいんだけどw
809デフォルトの名無しさん:2010/05/06(木) 15:34:01
>>808
なるほど。
スレッド=タスク分散のためのマルチスレッド処理に使う物
と勝手に思い込んでたのでなんでこんな糞仕様なのかと疑問だったのですが
そもそもそういうことに使うものじゃないんですね。
もやが晴れましたどうもありがとうございました。
810デフォルトの名無しさん:2010/05/06(木) 17:48:37
>スレッド=タスク分散のためのマルチスレッド処理に使う物

これはこれで合ってるんじゃね?
811デフォルトの名無しさん:2010/05/06(木) 17:50:49
デリゲートの非同期呼び出しやスレッドプールはスレッドを使って実装されてる
ややこしい手続きを引き受けてくれる代理店みたいなもん
812デフォルトの名無しさん:2010/05/06(木) 20:19:22
非同期呼び出しのおかげで明示的にスレッドを使う機会がめっきり減った。
813デフォルトの名無しさん:2010/05/06(木) 21:10:36
ExcelやVisualStudioのタブみたいなTabControlが使いたい件。
814デフォルトの名無しさん:2010/05/06(木) 21:20:29
メールのタイトル?
815デフォルトの名無しさん:2010/05/06(木) 21:21:39
つWPF
816デフォルトの名無しさん:2010/05/06(木) 22:17:45
コードプロジェクト行けばそういうサンプルなんて何ぼでもあるぞ
とくにそれは見掛けたことがあるから絶対になるわ
817デフォルトの名無しさん:2010/05/06(木) 22:25:55
>>816
You've got my 5!
818デフォルトの名無しさん:2010/05/07(金) 03:39:53
てs
819デフォルトの名無しさん:2010/05/08(土) 02:12:36
ThreadPoolもどきを実装してるのは俺だけでいい
820デフォルトの名無しさん:2010/05/08(土) 07:42:37
CCRもどきを実装するのも俺だけで十分だ( ^ω^)・・・
821デフォルトの名無しさん:2010/05/08(土) 08:56:32
時間で消えるメッセージボックスもどきを実装させられるのも俺だけで十分だ
822デフォルトの名無しさん:2010/05/08(土) 10:49:32
それは割とよくあるな。
823デフォルトの名無しさん:2010/05/08(土) 11:39:24
そんなもん非同期にしなくてもWinFormsのタイマで頻繁に時間調べればいいだけじゃね
5分で作れる
824デフォルトの名無しさん:2010/05/08(土) 12:20:56
>>823
安価付けろタコ
825デフォルトの名無しさん:2010/05/08(土) 13:30:30
User32.dllに MessageBoxTimeout という関数があってな。
826デフォルトの名無しさん:2010/05/08(土) 13:56:24
>>825
当然それじゃ要求に満たないわけでな。
827デフォルトの名無しさん:2010/05/08(土) 14:36:21
>>823
メッセージボックスの場合はDialogResult返さないといけないから、
普通はそう単純にはいかない。

あと数値だけ受け付けるTextBoxとかComboBoxなんかも
かなりの頻度で車輪の再発明されてそうだな。
828デフォルトの名無しさん:2010/05/08(土) 14:46:23
入力内容の制限は本来はバインディングでやるべきだな
WPFでは実際にそうなってるが
829デフォルトの名無しさん:2010/05/08(土) 14:56:51
>>828
それって「馬鹿の一つ覚え」でしょ。
そういう方法論もあるとは思うが、それが「べき」なんていえる万能な方法なわけがない。

だいいち、入力を弾くなんていうGUI寄りの泥臭い処理を
データを持ってるオブジェクトが担当するなんて、どう考えても悪い設計にしか思えない。
830デフォルトの名無しさん:2010/05/08(土) 15:06:09
>>829
「入力を弾く」のはロジックであって、そもそもGUIの仕事ではない。
逆に入力ルールをUIに持たせようとする神経を疑う。
UIは、あくまでデータの見せ方を定義するもの。ロジックは他に任せろ。
831デフォルトの名無しさん:2010/05/08(土) 15:07:39
いい加減スレ違い。
832デフォルトの名無しさん:2010/05/08(土) 15:13:47
>>830
話が噛みあってないな恐らく。
同じ「入力を弾く」という言葉を使っていても、
君は例えば設定範囲外の数値を弾くようなことを想定しているんだろう。

俺はそんな話はしてないの。(>>827)
833デフォルトの名無しさん:2010/05/08(土) 15:46:18
C#ってもしかしてJavaにそっくり?
Javaが使えれば、何となくC#もできちゃう?
834デフォルトの名無しさん:2010/05/08(土) 15:47:25
よくわからんな、入力書式のチェックの話でしょ?別に勘違いはしてないと思う。
指定したキー(文字)以外の入力は受け付けない、という機能であればViewの仕事だと
思うけど、そういう話?

# 単にキーで入力制限すると、数値しか入力させないつもりが"1.1.0-"なんて
# 入力ができちゃったりするから、個人的にはあんまり意味ないと思うけど。
835デフォルトの名無しさん:2010/05/08(土) 15:56:58
>>834
そうそういう話。
君自身言ってるとおり、そんなのはViewあるいはGUI部品の仕事でしょ。

1個以上の小数点の入力を抑止したり、先頭以外の-の入力を抑止(あるいは、初めて
-が入力された時、先頭に-を表示する)するのは別に難しくない。というか普通そうする。
836デフォルトの名無しさん:2010/05/08(土) 16:00:08
>>833
Javaよりだいぶ洗練されてるけど、まあ、似てるっちゃ似てる。

元々が「SUNがあまりに要領得ないからうちでJavaに似た別言語創るよ」みたなノリだし。
今やJavaよりかなり高機能になってるけど、逆にJava側がC#の機能を輸入してたりするし。
837デフォルトの名無しさん:2010/05/08(土) 16:03:23
Javaより良いのか!
今まで興味なかったけど、何だか急に興味が沸いてきちゃったじゃないか。
838デフォルトの名無しさん:2010/05/08(土) 18:11:36
ただ最近ちょっと言語仕様太りすぎじゃね?って気もしてきたけど
IDEが優秀だからあんまり気にならなかったり
839デフォルトの名無しさん:2010/05/08(土) 18:18:31
>>837
後発で MS が作ってるものが悪いわけないじゃん。
MS が Java の仕様をあれこれ改善しようとして、それを SUN が断固拒否しなけりゃ
今頃 Java はいい言語になってただろうにねぇ。

>>838
IDE 抜きでもなかなかきれいにまとめてると思うよ、あれだけの高機能を。
840デフォルトの名無しさん:2010/05/08(土) 18:19:42
実際はVJ++で改悪しようとしてたけどな
841デフォルトの名無しさん:2010/05/08(土) 18:33:44
VJ++のどこら辺が悪いかな?
Write once, run everywhere. でなくなることぐらいだったような。
いろいろ便利なので、JDK1.1で成長を止められてしまったのに、長々と使われていた(日本ではほとんど使われなかったけど)。
842デフォルトの名無しさん:2010/05/08(土) 18:35:06
テキストボックスに開いたCSVを、1次元配列に入れていこうとしたのですが
配列の要素数が後ろに増えていくと思ったのですが
1行分の要素しか格納されていきません
要素全てを格納したいのですがどう直せばいいのでしょうか?

// 変数の宣言
string Str = "";
string[] stArrayData = {};

// テキストボックスの1行単位処理
for(int i=0;i<textBox1.Lines.Length;i++){
Str = textBox1.Lines[i]; // テキストボックスから1行取得
stArrayData = Str.Split(','); // カンマでsplit
}


843デフォルトの名無しさん:2010/05/08(土) 18:35:39
> Write once, run everywhere. でなくなることぐらいだったような。
それ駄目だろ、最大のウリだったのに。
844デフォルトの名無しさん:2010/05/08(土) 18:42:31
カンマでSplitした配列をListにAddすれば?
845デフォルトの名無しさん:2010/05/08(土) 18:46:33
>>841
当時 Pure Java とか言ってたくらいだし、
亜種作ることを SUN がとことん嫌ってたから。
なんか係争に発展してなかったっけ?
846デフォルトの名無しさん:2010/05/08(土) 18:49:19
>>841
Write once, run anywhere.
Write once, debug everywhere.

混ざってないか

>>842
stArrayData = textBox1.Lines.SelectMany(s => s.Split(',')).ToArray();
847デフォルトの名無しさん:2010/05/08(土) 18:50:11
>>844
すみません。頂いたヒントからググっても
どうにも上手くいかず

上のコードをどう直していけばよいのでしょうか
848デフォルトの名無しさん:2010/05/08(土) 19:02:26
C# の欠点はオープン系のみで構築したいなんて案件だとちょっと辛いってとこぐらいかな。
MONOってどうなの?業務で使った人居る?
849デフォルトの名無しさん:2010/05/08(土) 19:39:02
GPLが混入した時点で全く使い物にならないだろ
.NET関連のオープンソースプロジェクトってGPLより緩いライセンスがほとんどだし
サードパーティのライブラリとかも全滅
850デフォルトの名無しさん:2010/05/08(土) 19:41:02
>>847

// 変数の宣言
string Str = "";
List<string> arrayData = new List<string>();

// テキストボックスの1行単位処理
for (int i = 0; i < textBox1.Lines.Length; i++)
{
Str = textBox1.Lines[i]; // テキストボックスから1行取得
arrayData.AddRange(Str.Split(','));
}

// string[]に変換
// arrayData.ToArray();
851デフォルトの名無しさん:2010/05/08(土) 19:52:00
>>850
ありがとうございます!できました
…C#難しいよ…Perlのが楽だよ
852デフォルトの名無しさん:2010/05/08(土) 19:54:14
面倒というならわかるが難しいならそりゃPerlもわかってないんだよ
オブジェクト指向してないでしょ
853デフォルトの名無しさん:2010/05/08(土) 20:03:39
2002年以前の情報のままの奴がいるな。
GPLじゃなくなってから8年もたつのに。
854デフォルトの名無しさん:2010/05/08(土) 20:09:30
>>850
Strの場所おかしくないか?(そして何故大文字)
855デフォルトの名無しさん:2010/05/08(土) 20:13:44
>>854
元のソースで、とりあえずそのままでもいいところは
そのままにしているだけ、だと思う。
856デフォルトの名無しさん:2010/05/08(土) 20:14:16
本家もできてないけどな
857デフォルトの名無しさん:2010/05/08(土) 21:14:17
Perlでもあのロジックじゃ上手く行かないと思うのは俺だけか
858デフォルトの名無しさん:2010/05/08(土) 22:20:25
Perl はぶっちゃけオブジェクト指向する必要ないと思うぜ
859デフォルトの名無しさん:2010/05/08(土) 23:47:15
Perlでオブジェクト指向するくらいならRubyがいいな。
860デフォルトの名無しさん:2010/05/09(日) 00:01:58
スレ違い。
861デフォルトの名無しさん:2010/05/09(日) 20:52:45
enum を作るときって、関連するクラスの中に作ります?
それとも同じ名前空間内のクラスの外側に作ります?
862デフォルトの名無しさん:2010/05/09(日) 20:54:41
そのクラスの外に見せるならクラスの外に作らないとガイドライン違反
863デフォルトの名無しさん:2010/05/09(日) 21:35:19
>>862
ソースは?
864デフォルトの名無しさん:2010/05/09(日) 21:38:28
>>862
何のメリットが
865デフォルトの名無しさん:2010/05/09(日) 21:54:25
866デフォルトの名無しさん:2010/05/09(日) 22:06:36
キリ
867デフォルトの名無しさん:2010/05/09(日) 22:09:19
クラス内のenumを使うユーザーコントロールがデザイン時にエラーになってかなり困ったことがあるよ。
あんまり想定されてなくて危ないのでやめたほうがいい。
868デフォルトの名無しさん:2010/05/09(日) 22:27:07
わかりにくいし使いにくいし探しにくい
869デフォルトの名無しさん:2010/05/09(日) 22:28:07
>>862,865,867
なるほど。
確かに名前空間の分離で充分賄える内容でした。

とはいえ流石に enum 用の名前空間分けるのも変なかんじなんで
"Foo"StatusType みたいにそれっぽいプリフィクス付けて対処してみます。

ありがとうございました。

870デフォルトの名無しさん:2010/05/10(月) 11:51:30
めんどくせーからpublic classの中にpublic enumでつくってもごもご。
871デフォルトの名無しさん:2010/05/10(月) 12:00:24
namespace HogeProject
{
  public class HageClass
  {
    //(ry
  }
}
namespace HogeProject.HageClass
{
  enum StatusType
  {
    hoge = 0,
    hage = 1,
  }
}
872デフォルトの名無しさん:2010/05/10(月) 12:02:19
禿ワロタw
873デフォルトの名無しさん:2010/05/10(月) 12:04:06
if(this.Status == HogeProject.HageClass.StatusType.hage)
{
  MessageBox.Show("禿");
}
874デフォルトの名無しさん:2010/05/10(月) 12:46:53
875デフォルトの名無しさん:2010/05/10(月) 13:27:17
>>871
using HogeProject;

var hage = new HageClass(); // <- 名前空間はnewできない

って書けなくなるじゃん
876デフォルトの名無しさん:2010/05/11(火) 05:38:15
877デフォルトの名無しさん:2010/05/11(火) 06:07:53
C#で文字解析をしたいのですが、
なにかいい方法はあるでしょうか?
例えば、テキストボックスにある
文字列が
"A B" C | D -E
という場合は、
A B AND C OR D ANDNOT E
という文字列に置換したいです。
今は文字列を1バイトずつ調べて
いますが、なにかmethodを使い
よい方法があればと思い質問します。

C#は初心者ですが、よろしく
お願いします。
878デフォルトの名無しさん:2010/05/11(火) 06:38:39
正規表現とか
879デフォルトの名無しさん:2010/05/11(火) 07:45:43
ぶっちゃけいうとF#でFslex,yacc使った方が幸せになる
880デフォルトの名無しさん:2010/05/11(火) 10:04:31
C#でExcelシートを読み込む処理を作っています。
OleDbで接続して読み込むことはできるのですが、
どうしても読み込むことのできない列があり、その列の値だけは
何行目でも空になってしまいます。
試しに他のExcelファイルに変えてみましたが、最初のファイルとは別の
列がまったく読み込めませんでした。
Excelファイルに問題があるのでしょうか?
それともOleDbでDBのように読み込むには何かの制限があるのでしょうか?

よろしくお願いします。
881デフォルトの名無しさん:2010/05/11(火) 10:17:39
で、それはどんな列なんだ?
882デフォルトの名無しさん:2010/05/11(火) 10:22:23
>>881
商品一覧のようなシートで、読めない列には金額が入っています。
他の列にも同じような値が入っているのですが、一部の列だけ読めないんです。
やはりこれだけの情報では厳しいでしょうか?
883デフォルトの名無しさん:2010/05/11(火) 10:26:28
じゃぁその読めない列と読める列の適当なサンプル提示してみれば?
個人情報が残らないようにしてソースの一部とともに公開すれば親切な誰かが見てくれるかもしれんよ
884デフォルトの名無しさん:2010/05/11(火) 10:35:27
接続文字列に IMEX=1とか?
885デフォルトの名無しさん:2010/05/11(火) 10:59:30
皆さんありがとうございます。
>>884さんの仰るとおりIMEX=1を追加したところ
動作しました。

C#に全然関係ない質問しちゃって失礼しました。
886デフォルトの名無しさん:2010/05/11(火) 11:09:52
>>883

いつもソース要求しかしないアホ丸出し
887デフォルトの名無しさん:2010/05/11(火) 11:13:01
どっちにしてもソース晒すのが礼儀
888デフォルトの名無しさん:2010/05/11(火) 11:20:25
>>886
予想が当たったけど、データがなければ分からんのだから、指摘変だよ。
889デフォルトの名無しさん:2010/05/11(火) 11:38:01
接続文字列の情報があれば
IMEX=1
が無かったは明白だったわけだから解決は早かったかもしれんの
890デフォルトの名無しさん:2010/05/11(火) 15:56:07
C#2010で2008のプロジェクトを変換すると
プロジェクトプロパティにビルド構成が表示されるように
なったんですが、2008と同じようにする方法はありますか?
2010の新規プロジェクトを作ると2008と同じになるようですが・・。
891デフォルトの名無しさん:2010/05/11(火) 19:54:46
上の件で、どうも元のソリューションのプラットフォームがAnyCPU
だと変換後に2008と同じような表示にならないようでした。
(テキストエディタでslnとcsprojのAnyCPUをx86に書き換えて確認)
書き忘れましたが環境はC# 2008 Express(一度削除)→C# 2010 Expressです

2010ExpressだとAnyCPUは推奨されないーとか、AnyCPUのときは手動で
ビルド構成の切り替えが必要ーとか、何か関連がありそうな事があれば
教えていただきたい。
892デフォルトの名無しさん:2010/05/11(火) 21:47:27
>>891
メニューの「ツール」ー「設定」に基本設定と上級者設定があるからそれで切り替える。
変換元が基本設定でカバーできない範囲だったら上級者設定になるんじゃねーか?
その他の微調整はカスタマイズ、オプションで。
893デフォルトの名無しさん:2010/05/11(火) 22:02:23
VisualStudioのエディタのデフォルトエンコードを UTF-8 から ShiftJIS に
したいのですが、何かレジストリとかで設定できないでしょうか?
保存オプションの詳細設定でいちいち変更するのが面倒になりました。
UTF-8でいいじゃないかという意見もあるでしょうが、UTF-8 をサポートしない
ツールにソースをコピーペーストすると文字が化けるので。
例) かちゅ〜しゃ
/// <summary>
/// 繝?繧ケ繝?
/// </summary>
894デフォルトの名無しさん:2010/05/11(火) 22:11:27
一旦メモ帳にペーストして再コピーすると良いよ

多分無いんじゃないかな
895デフォルトの名無しさん:2010/05/11(火) 22:18:08
テンプレートを修正するんだったかな。
896デフォルトの名無しさん:2010/05/11(火) 22:26:34
そもそもファイルの文字コードと関係なくクリップボードはUnicodeでコピーされる。

897デフォルトの名無しさん:2010/05/11(火) 22:30:15
つまり、vsのファイルはシフトJISだから、そのファイルを他の
エディタで開けば読めると思うが、コピペだと文字化けする、
ということか。
898デフォルトの名無しさん:2010/05/11(火) 22:34:14
>>896は大嘘だけどな
899デフォルトの名無しさん:2010/05/11(火) 22:44:03
嘘と言い切ることもできないが(CF_UNICODETEXTも付いてるから)
しかしCF_TEXTにUTF-8とか止めて欲しいもんだ
900デフォルトの名無しさん:2010/05/11(火) 22:45:28
UTF-8 をサポートしないツールを捨てよう
901デフォルトの名無しさん:2010/05/11(火) 22:48:49
WinDiffのことかー!
902デフォルトの名無しさん:2010/05/11(火) 22:57:29
windiffはもうずっと使っていないなぁ。WinMerge便利だし。
変な文字コードのクリップボードはxyzzyでクリップボードエンコーディングを指定して貼付けがいいよ。
xyzzyは貼付けの文字コード自動判別もできると楽なんだけどなぁ。
903デフォルトの名無しさん:2010/05/11(火) 23:01:33
秀丸はOK
904デフォルトの名無しさん:2010/05/11(火) 23:07:10
>>893
そんな問題に対応するクリップボード拡張ツールがあってもおかしくないな、
と思って検索したら、ベクターにこんなのあったよ。

http://www.vector.co.jp/soft/win95/util/se285480.html

使えるかどうかは確認してない。
905デフォルトの名無しさん:2010/05/11(火) 23:59:26
/// <summary>
/// テスト
/// </summary>
うん、Windows7で動作。
オプションでShiftJISに変換するのとどちらが便利か比べてみる。
ありがとう。
906デフォルトの名無しさん:2010/05/12(水) 08:11:27
C#の本でVisualStudioのGUI操作を主に取り扱ってる、お勧めな本ありますでしょうか?
C#の言語仕様や文法については他の言語を知っているので詳しく書いてなくてもいいのですが。
特に、GUIコンポーネントの継承、VSS、外部参照方法など
エンタープライズ向けの操作方法が乗ってるのがありましたら教えてください。
907デフォルトの名無しさん:2010/05/12(水) 08:20:31
908デフォルトの名無しさん:2010/05/12(水) 12:06:03
>>892
 ありがとう。色々いじってみました。
2010ってデフォルトがAny CPUからx86に変わったんですね。
とりあえずは32ビットwinだとx86じゃないと必ず表示されるという結論
に達しました。
 これに関連してか、Any CPUだと「プロジェクトおよびソリューション」
の「ビルド構成の詳細を表示」をOFFにしても「ソリューションのビルド」
でリリース構成としてビルドされないっぽい事がわかりました。

また何か情報あったら教えてください
ありがとうございました。

909デフォルトの名無しさん:2010/05/12(水) 12:22:26
>>908
AnyCPUで作っちゃうといろいろ問題が起きるから2010では
デフォルトをx86つまり32bitにしておくことになったはず
この辺はAnyCPU vs2010とかググるとでてくるよ

まあこちらで経験した中ではブラウザコアを使った件はもろこれにあたったな
AnyCPUでブラウザコアを使うアプリ組むと64bitOS上だと64bitのIEが呼び出され
Flashまわりも64bitの物を要求するらしいんだけどないのでエラーになるとか
まあそれ以外にもいろいろあるようだけど
radikoのアプリ書いたときもろこれになった

そういう問題があるので2010ではデフォルトをx86にしてWOW64を当てにして
動かすようにしたとか
910デフォルトの名無しさん:2010/05/12(水) 12:28:57
>>909
あれから開発は進んだ?
911デフォルトの名無しさん:2010/05/12(水) 12:30:02
>>910
誰と勘違いしてるのか知らないけどradiko関連は最初に作った以上はやらないよw
912デフォルトの名無しさん:2010/05/12(水) 13:43:14
普段から64bitOSで作業してるからこれにすぐ引っかかる
コーディングしてデバッグ開始して外部DLLの初期の時にもう落ちるからねえ
913デフォルトの名無しさん:2010/05/12(水) 18:38:59
>>845
亀だが、係争に発展した挙句SUNが負けたような
914デフォルトの名無しさん:2010/05/12(水) 18:40:53
>>912
.netとかいっても内部はネイティブDLLなんかの単なるラッパーだったりするからねえ
915デフォルトの名無しさん:2010/05/12(水) 19:52:30
よろしくお願いします。

VSC#2008です。

int.Parseに続くカッコ内に2バイト文字の数字を入れると、挙動がおかしいのですが
デバッグ付実行でエラーでず、素通りしてしまいます。
2バイト文字の数字をint型にするには、どういった方法がよいでしょうか。
916デフォルトの名無しさん:2010/05/12(水) 20:08:30
2バイト文字をint型に入れようって考えるのがそもそもおかしいと思うが…
Parseする前にワンクッション、全角数字を半角数字に置換するようにすればいい。
917デフォルトの名無しさん:2010/05/12(水) 20:11:08
いったん半角にすればいいじゃん。
918デフォルトの名無しさん:2010/05/12(水) 20:11:38
むしろReplaceで充分。
919デフォルトの名無しさん:2010/05/12(水) 20:19:12
その前に
>デバッグ付実行でエラーでず、素通りしてしまいます。 
の部分が変だな。どんなコードかいてるの?
920915:2010/05/13(木) 12:34:06
Microsoft.VisualBasic.Strings.strConvでNarrowにするのって、
半濁音のピは、ヒと゜に分解されるんですね・・・2文字になるのか・・・orz..
921デフォルトの名無しさん:2010/05/13(木) 12:40:22
濁点付き文字を別に用意したら文字数が増えすぎて文字コードの隙間に入りきらないだろ
視認性も確保できない
*作られた当時の話
922デフォルトの名無しさん:2010/05/13(木) 12:40:42
復活のじゅもんだって半濁音は2文字だろうが!
923915:2010/05/13(木) 12:48:42
そうでしたね、ありがとうございます・・・。
ファイル名から数字をChar.IsDigitを駆使して抜き出してから
strConvしたらうまくいきました・・。

便乗質問ですが、
int.Parseで変換しようとしている文字列が表現する数字の桁数が相当多くて、
intに入りきらない場合ってあるじゃないですか。
でね、そんなケースを実験してみたら、

return int.Parse(Microsoft.VisualBasic.Strings.StrConv(str.Substring(startindex, finalindex - startindex + 1), Microsoft.VisualBasic.VbStrConv.Narrow, 0));

デバッグ付実行なのに、何らエラー(バグったり凍ったりダイアログが勝手に出たり)でずに
素通りして、何食わぬ顔でシステムアイドル状態に戻るんですよね。

うーん。うまくいってんのかいってないのかわかんねーと悩んでいます。
924915:2010/05/13(木) 12:51:02
なるほど、
これを
OverflowException
s が MinValue 未満の数値か、MaxValue より大きい数値を表しています。
というんですね・・・。
try catch finallyで囲って強制的に例外を吸い上げる(何もしないとスルーしやがるので)しか
ないのでしょうかね・・・ORZ

http://msdn.microsoft.com/ja-jp/library/b3h1hf19%28VS.80%29.aspx
925デフォルトの名無しさん:2010/05/13(木) 12:53:09
COM系のイベント内でやってないか?
926915:2010/05/13(木) 12:53:53
>>919さん

わかった!INT.PARSEって明示的に例外処理を用意してやんないと
スルーするんですね?ってことであってますでしょうか。

で、厄介なのはスルー後、何事もなかったかのようにシステムアイドルに
戻るっていうこと。
何食わぬ顔で実行中のFOREACHから抜けだすし、それが記述されてるメソッドからも
抜け出す・・・。
927915:2010/05/13(木) 12:54:42
>>925
private void MainForm_DragDrop(object sender, DragEventArgs e)

内でやっています。
(MAINFORMはFORM1のことです)
928デフォルトの名無しさん:2010/05/13(木) 13:02:35
DragDropイベントもCOM系だな
.NETの例外はHRESULTに変換されてCOMの呼び出し元に返値として渡されるので
例外は外部に通知されない
929デフォルトの名無しさん:2010/05/13(木) 13:35:36
>>928さん

まじでつか・・・ORZ
どうすりゃいいの変になりそう(byビース、ZEROより)
930デフォルトの名無しさん:2010/05/13(木) 13:51:48
いきなりParseせずチェック入れた後に変換すればいいのでは?
多倍長ライブラリでInt範囲にあるかチェック→変換
もしくは
文字数カウント→Decimal変換→Int範囲にあるかチェック→変換
931デフォルトの名無しさん:2010/05/13(木) 14:02:07
イベント内で例外処理すれば良いだけじゃん?
932デフォルトの名無しさん:2010/05/13(木) 14:03:35
>>915MSDNくらい読め、くそが。
TryParse
933デフォルトの名無しさん:2010/05/13(木) 14:06:39
TryParse()使えば
934915:2010/05/13(木) 14:20:13
>>932、933さん

ですね・・・クビ吊ってきます・・・ORZ
935デフォルトの名無しさん:2010/05/13(木) 14:32:32
お前は既に釣っている
936デフォルトの名無しさん:2010/05/13(木) 15:29:06
だれうま
937デフォルトの名無しさん:2010/05/13(木) 15:31:15
ついでに、intで範囲外ならlongを使えばいいじゃない
幾ら何でもlongを超えるような桁数扱う訳じゃないだろ
あ、先に言っとくがlong.TryParse()だからな?
intからキャストするとかマヌケなことはナシだぜ
938915:2010/05/13(木) 16:06:38
ファイル名に日付が入っている場合は、
例えば20100513で8桁。
更に時刻も入っていれば、
201005131606で12桁。

ファイル名から数字を抽出する作業でインチージャを使うのは
その時点ですでに無謀ですね・・・おrz
939デフォルトの名無しさん:2010/05/13(木) 16:09:11
>>938
結局何がしたいの?
無理して数値型を最初の器にするからはまるんじゃないの?
940デフォルトの名無しさん:2010/05/13(木) 16:09:19
計算に使うんじゃないのかよw
941デフォルトの名無しさん:2010/05/13(木) 16:19:58
もういいから正規表現使えよwwwwww
942915:2010/05/13(木) 16:26:38
そんなにいっぺんにいろいろ言わないで下さい・・・滝汗

加工したいファイルをアプリにDDする。
DDされたファイルのファイル名を解析する。
ファイル名は、どのような形式か予測できない。
ファイル名は、おそらく少なくとも1文字の0でない数字が入っているものと想像する。
ファイル名の文字列のうち、頭から探っていって最初に0でない数字と出くわしたら、
そこから、数字の連続が途切れるまでシークし、
少なくとも1文字以上の数字列を抜き出す。

ということをしているんです。
抜き出した数字列をとりあえずイントにしていた、というだったんです。

シクシク・・・
943デフォルトの名無しさん:2010/05/13(木) 16:46:58
だったらなおさら正規表現使え
見た目難解とかの言い訳は聞かん
944デフォルトの名無しさん:2010/05/13(木) 16:47:39
(ノД`)シクシク
945デフォルトの名無しさん:2010/05/13(木) 16:49:39
おれもそれやるなら正規表現でやるわ。
946デフォルトの名無しさん:2010/05/13(木) 16:49:57
>>943
難解かね?
最悪わからなければ正規表現スレで書いてもらえばいいだけだし
,netの正規表現はperl5互換だったのでその旨だけ書いておけば
人がいれば書いてくれるよ
947915:2010/05/13(木) 16:53:47
kwsk(ノД`)シクシク
948デフォルトの名無しさん:2010/05/13(木) 16:56:10
>>946
だな
とにかく>>942みたいなことをやりたいなら正規表現一択
そっから数値型に落としたいならVBのStrConv()をC#で使えばいい
949915:2010/05/13(木) 16:57:59
950デフォルトの名無しさん:2010/05/13(木) 16:58:18
ところでたとえば>>938をどういう風に加工するの?
>例えば20100513で8桁。
>更に時刻も入っていれば、
>201005131606で12桁。
これをどうintの範囲に収めるか

ルールがないとねえ・・・
951デフォルトの名無しさん:2010/05/13(木) 17:00:30
intの最大がこれか
2147483647
952デフォルトの名無しさん:2010/05/13(木) 17:07:23
>>950
いや日時って事前に解ってればDateTime型にするだろJK
例え日時と連番が混在してたとしても、正規表現で一工夫すればある程度分離可能
953デフォルトの名無しさん:2010/05/13(木) 17:09:32
>>952
いやいや
事前にわかってない物をルール決めて
intの範囲に落とし込むんでしょ?

そのルールというか仕様を決めないとどうしようもないって話・・・
954915:2010/05/13(木) 17:17:34
とにかく949でアップしたおソースをゲットして、
諸先輩方からの辛口批判を希望します。
955デフォルトの名無しさん:2010/05/13(木) 17:21:28
この意図不明なソース見てどうしろと?
意味じゃなくて意図が不明
まず仕様をはっきりさせるのが先だ
956デフォルトの名無しさん:2010/05/13(木) 17:21:55
>>954
本人だったのか
使い方わからんし、いろいろポップアップするしでスルーしてたわw
できれば>>4>>7のコード貼るサイト使ってくれ
957デフォルトの名無しさん:2010/05/13(木) 17:22:52
949は怖くてダウンロード出来ません
958デフォルトの名無しさん:2010/05/13(木) 19:25:45
>>942-943
new Regex("(\D*?(\d*?)\D*?)", RegexOptions.IgnoreCase)
要するにこうか?
未検証だからこのまま動くかどうかは知らん
959958:2010/05/13(木) 19:27:11
おっと最後の繰り返しが抜けてた
new Regex("(\D*?(\d*?)\D*?)*", RegexOptions.IgnoreCase)
こうだな
960デフォルトの名無しさん:2010/05/13(木) 21:33:49
なんのこっちゃさっぱり分からん。
915が説明すらまともに出来ないクズなのか、俺の頭が悪いのか
961デフォルトの名無しさん:2010/05/13(木) 23:05:51
さっぱり分かるけど、21億、または42億を超えるような数字が取れてしまった場合どうするのかと、
数字が含まれていない可能性もあると書いているのに、1文字以上の数字列を返すところ

後者は"0"返せばいいのかな。
962デフォルトの名無しさん:2010/05/13(木) 23:07:27
そもそも数値が欲しいのか数字列が欲しいのかすら分からんわけで
963デフォルトの名無しさん:2010/05/14(金) 01:45:28
おまんこが欲しいです…
964デフォルトの名無しさん:2010/05/14(金) 03:13:16
だったらこんな板にいないで歌舞伎町にでも飛び出せ
早くしろ
965デフォルトの名無しさん:2010/05/14(金) 08:40:37
要するに文字列から「連続した数字文字列」を抽出したいといことなんだろう。
何に使用するかは知らないけど。
966915:2010/05/14(金) 09:27:23
>>965
そのとおりでつ!
ただし、数字文字列の先頭は0であってはならない。
抽出した数字文字列は1バイト文字に変換しなければならない。

でっつ!
967デフォルトの名無しさん:2010/05/14(金) 09:54:03
あ、いや、むりして数字にしなくても、数字文字から成る文字列stringのままでもいいかも・・・。
でも、その代わり全角か半角か混在している場合はどちらかに統一するような処理をしたいけれどもでつ。
968デフォルトの名無しさん:2010/05/14(金) 10:09:35
ジョニー・デッツ
969デフォルトの名無しさん:2010/05/14(金) 12:26:36
でっつ奉公
970デフォルトの名無しさん:2010/05/14(金) 13:28:59
971デフォルトの名無しさん:2010/05/14(金) 14:35:15
>>966
間違っています。
以上。
はい次の方。
972967:2010/05/14(金) 15:16:49
915です、とりあえず戻り値をintじゃなくstringのままにしたら、全く問題ありませんでした。
諸先輩方、ありがとうございました。
973デフォルトの名無しさん:2010/05/14(金) 15:31:59
ゆとりらしい解決だったな
974デフォルトの名無しさん:2010/05/14(金) 17:45:06
結局設計意図がわからなかった
975デフォルトの名無しさん:2010/05/14(金) 19:43:33
ぽかーん
976デフォルトの名無しさん:2010/05/15(土) 13:54:24
f
977デフォルトの名無しさん:2010/05/15(土) 20:23:26
機械制御プログラムとかで、コマンド送信時にタイムアウト値を指定する必要があります。
それぞれのコマンドに推奨の最低タイムアウト値が存在するのですが、
こういうのは enum で定義した方がいいんでしょうか?
それとも const int の方が良いのでしょうか?

それぞれのコマンド送信メソッドではタイムアウト値は int で受けつける仕様にする予定です。
(最低タイムアウト値 +- αの値を指定する必要があるため)
978デフォルトの名無しさん:2010/05/15(土) 20:25:11
readonly int
979デフォルトの名無しさん:2010/05/15(土) 20:27:42
static readonly intに訂正
constはできるだけ使わない(値そのものに意味があるenumも同じ)
980977:2010/05/15(土) 21:25:43
値そのものに意味がある enum は NG ですか。
enum → 意味のある数字への変換メソッド等用意するのが正道ということでしょうか?

機械制御のコマンドも数値で表現されているのですが、想定していない数字を受けつけないよう
enum で型を作ってメソッドにわたすようにしていたのですが、
これは適当なクラスを作って定数を持たせるようにする方がいいのかな?

例)
class ControlCode {
public int Value { get; private set }
private ControlCode(int value) { Value = value; }

public readonly ControlCode Reset = new ControlCode(101);
.....
}

... public void SendControlCode(ControlCode code, int timeout);
981デフォルトの名無しさん:2010/05/15(土) 22:08:30
別にそのコマンドの数値自体には意味はないんだし
絶対にその値を変えることが無いと言い切れるならenumでもいいと思うけどな
値をラップする型を作る方法をとるのであればクラスじゃなくて構造体使うのが普通
==と!=とGetHashCodeは必ず実装すること
WPFなんかでは列挙体みたいな構造体は確かに多用されてる
982デフォルトの名無しさん:2010/05/16(日) 09:07:14
なるほど。

MSDN を再度見返してみましたが、後から変更がかかりそうな定数なんかは enum にするのは
よろしくないんであって、意味のある数字を持たせてはいけないってわけではなさそうですね。

今後の拡張や定数自体にプロパティを持たせる必要があるか等考えて再検討してみます。
ありがとうございました。
983デフォルトの名無しさん:2010/05/16(日) 09:51:40
enumにご執心のようだが、同じ数値セットできないことは認識してるのかな。
異なるコマンドでタイムアウト値が同じ状況は十分ありえそうだが。
984デフォルトの名無しさん:2010/05/16(日) 11:53:12
>>983
できるよ。
985デフォルトの名無しさん:2010/05/16(日) 14:09:28
んな馬鹿なと思ってためしてみたら本当に出来たでござる
986デフォルトの名無しさん:2010/05/16(日) 14:13:00
enumって手抜き用みたいなもんでしょ
987デフォルトの名無しさん:2010/05/16(日) 14:17:44
>>984
んな馬鹿なとおもったけど>>985のレスでできるのだなぁと思い、そういやC#のenumはかなり変更されたんだったなと思い出した
988デフォルトの名無しさん:2010/05/16(日) 14:25:01
>>985
感謝しろ
989デフォルトの名無しさん:2010/05/16(日) 14:36:10
これが出来るって事?


public enum eSwich {
VALUE1 = 1,
VALUE2 = 1
}
990デフォルトの名無しさん:2010/05/16(日) 14:37:13
昔からできたでしょ
991デフォルトの名無しさん:2010/05/16(日) 15:02:47
これとかよくあるパターンだろ

enum Hoge { A, B, Default = A }

ついでに、別環境(Compactなど)で値が異なるとか

enum Hoge { A, B, Default = B }

>>982
・要素を追加/削除しない
・要素の値を変更しない
・利用者が値を意識する必要が無い

を守れないならenumは不適切
992デフォルトの名無しさん:2010/05/16(日) 17:32:26
>>991
ふーん
993デフォルトの名無しさん:2010/05/16(日) 20:21:10
列挙体といえば.NET4で今更Enum.HasFlagが追加されたわけだけどこんなの使う?
ものすごい遅そうなんだけど
994デフォルトの名無しさん:2010/05/16(日) 20:45:44
これから新しく書くものには使う。
995デフォルトの名無しさん:2010/05/16(日) 20:51:43
[Flags]が付いた列挙体に対してはコンパイラが
その型専用に最適化されたバージョンのHasFlagを生成するとかできなかったのかな
ボックス化+リフレクションだからビット演算に比べると途方もなく巨大なコストだよな
996デフォルトの名無しさん:2010/05/16(日) 20:58:11
using とか lock みたいな構文糖衣でもよかったよね。
997デフォルトの名無しさん:2010/05/16(日) 21:10:16
unko
998デフォルトの名無しさん:2010/05/16(日) 21:18:05
static bool HasFlag<T>(T value, T flag) {
return ((dynamic)value & flag) == flag;
}
こうしてみたらEnum.HasFlagの1/10くらいの処理時間になった
それでもビットマスクの数百倍だけどdynamic結構速いね
999デフォルトの名無しさん:2010/05/16(日) 21:18:23
o
1000デフォルトの名無しさん:2010/05/16(日) 21:19:43
C#最強
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。