ふらっとC#,C♯,C#(初心者用) Part21
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0802デフォルトの名無しさん
2007/12/12(水) 23:23:01自分のメソッドの仕様に書いてある通りの例外に編み変えて再スローする
0803デフォルトの名無しさん
2007/12/12(水) 23:23:190804デフォルトの名無しさん
2007/12/12(水) 23:25:25呼ばれる側もそうだし呼ぶ側もそうだ
OrNullって書くようにしてからnullチェックし忘れは消えた
0805デフォルトの名無しさん
2007/12/12(水) 23:25:37言いたかったのはそんだけちゃんとやっても呼び出し側のバグに対しては効果ないよねってこと。
0806デフォルトの名無しさん
2007/12/12(水) 23:27:13nullチェックはどっちの場合でも要るんじゃ…
0807デフォルトの名無しさん
2007/12/12(水) 23:28:42なるほど、初期設定はデザイナでして実行中の変更はコードでするみたいな感じですね。
0808デフォルトの名無しさん
2007/12/12(水) 23:29:00呼び出し側の引数かなんかの違反なら
呼び出し側の違反ですよってわかる例外を投げる
正しく呼び出したときの例外ならそれと分かる例外を投げる
さらに下のメソッドから飛んでくる例外がそこをきちんと分けていれば
自分も判断できる
0809デフォルトの名無しさん
2007/12/12(水) 23:35:08エラー発生時の対処は必要なんだから全て例外処理が
必要ってことおk?
0810デフォルトの名無しさん
2007/12/12(水) 23:35:45nullを受け入れて変数に入れた場合は、その変数を使うたびにnullチェックが要る
変数名にOrNullって書いてあればチェックし忘れはなくなる
0811デフォルトの名無しさん
2007/12/12(水) 23:40:290812デフォルトの名無しさん
2007/12/12(水) 23:40:42呼び出し側の要因である場合必要な処置というのは
バグを認識させ直させることだ
キャッチしなければそれが最もよく果たせる
例外が投げられた瞬間でデバッガがブレイクし何が間違っていたかが分かる
0813デフォルトの名無しさん
2007/12/12(水) 23:41:35Trace吐けばいいのでは
0814デフォルトの名無しさん
2007/12/12(水) 23:44:59マウスポインタおいたら変数の値がぱっとわかり
呼び出し履歴をずずっと辿っていくこともできるようなトレースならな
0815デフォルトの名無しさん
2007/12/12(水) 23:47:03MatchCollection mc = Regex.Matches(hoge.ToLower(), @"(http/1.[0-1] 200)|(https?://.*\.xml)");
if (mc.Count < 2)
{
// 異常
}
0816デフォルトの名無しさん
2007/12/12(水) 23:47:49そんな画面出しても済ませられる程度のAPなんだ
0817デフォルトの名無しさん
2007/12/12(水) 23:49:060818デフォルトの名無しさん
2007/12/12(水) 23:49:16多分、昨日からずっとそのこと言ってる人いますね
0819デフォルトの名無しさん
2007/12/12(水) 23:49:450820デフォルトの名無しさん
2007/12/12(水) 23:50:010821デフォルトの名無しさん
2007/12/12(水) 23:50:550822デフォルトの名無しさん
2007/12/12(水) 23:51:480823デフォルトの名無しさん
2007/12/12(水) 23:52:39なんで判断できないんだ?
メソッドの正しい呼び出し方を決めるのは自分だぞ
0824デフォルトの名無しさん
2007/12/12(水) 23:52:59それがバグなのかそうでないのかなんて判断できない。
0825デフォルトの名無しさん
2007/12/13(木) 00:01:08呼び出し方自体はあってるなら
FileNotFoundExceptionを投げればいい
パス文字列として正しくないならInvalidPathExceptionかなんかを投げればいい
メソッド作成者が、パス文字列として正しくない文字列を渡すのが違反だと考えるなら
ArgumentExceptionにしてもいい
もちろんパス文字列として正しいかどうかを判断する方法は別途用意しなきゃならないし
それを判断してから呼び出すのは無駄だから普通は
パス文字列として正しくないものも違反とは考えないという設計にするだろうが
呼び出し側はパス文字列として正しくないのが渡されるのがバグである場合はキャッチしなければいいし
ユーザーが入力したのをそのまま渡すとかするならキャッチしなきゃいけない
0826デフォルトの名無しさん
2007/12/13(木) 00:02:160827デフォルトの名無しさん
2007/12/13(木) 00:04:26ArgumentExceptionは一概に呼び出し側の要因とは言えない。
エラーチェックしろって話だが。
0828デフォルトの名無しさん
2007/12/13(木) 00:06:500829デフォルトの名無しさん
2007/12/13(木) 00:09:07どれだよ
正しくない呼び出しと区別できないんだったらそれはただの設計ミスだ
0830デフォルトの名無しさん
2007/12/13(木) 00:11:44まぁファイルの存在確認もしない奴は死んだ方が良いけど。
0831デフォルトの名無しさん
2007/12/13(木) 00:14:19呼び出し側が間違っててファイルがないときがあるだろ。
そんなの呼び出される側じゃ分からない。
結局同じ例外なり返さざるを得ない。
0832デフォルトの名無しさん
2007/12/13(木) 00:14:44そりゃパスを入れるプロパティにパスじゃないものが入ったらArgumentExceptionだろ
そりゃ違反だ
0833デフォルトの名無しさん
2007/12/13(木) 00:15:08それの後にファイルが消失したら?
0834デフォルトの名無しさん
2007/12/13(木) 00:16:220835デフォルトの名無しさん
2007/12/13(木) 00:16:540836デフォルトの名無しさん
2007/12/13(木) 00:19:28そりゃそうだな
メソッドに出来るのは自分が決めたルールに違反を犯したかどうかを通知するだけだ
0837デフォルトの名無しさん
2007/12/13(木) 00:21:510838デフォルトの名無しさん
2007/12/13(木) 00:23:42キャッチしていいものと、しちゃいけないものがある
0839デフォルトの名無しさん
2007/12/13(木) 00:24:33パスが不正かどうかはファイルが存在するしないに関係しないだろ。
こういうのはDirectoryNotFoundExceptionを返すケース。
0840デフォルトの名無しさん
2007/12/13(木) 00:27:27>ArgumentException
>
>指定したパスにワイルドカード文字が含まれています。
>または
>指定したパスに無効なパス文字が含まれています。
http://msdn2.microsoft.com/ja-jp/library/system.io.filesystemwatcher.path(VS.80).aspx
と書いてあるがこれは間違いか?
0841デフォルトの名無しさん
2007/12/13(木) 00:35:15>指定されたパスが存在しないか、見つかりませんでした。
>または
>指定したパスにワイルドカード文字が含まれています。
>または
>指定したパスに無効なパス文字が含まれています。
0842デフォルトの名無しさん
2007/12/13(木) 00:40:58パスが無効とNot Foundとnullとは
分けた方がいいと思うんだがなあ
まあそんなに困るケースは思いつかないが
0843デフォルトの名無しさん
2007/12/13(木) 00:44:590844デフォルトの名無しさん
2007/12/13(木) 00:47:11完成版には一番上にcatch(Exception)入れなきゃいかんだろうが
開発中はいれちゃいかんという話だ
想定外の例外が来たら安全に実行が続けられるかなんて分からんのだから
終了するしかない
0845デフォルトの名無しさん
2007/12/13(木) 00:49:110846デフォルトの名無しさん
2007/12/13(木) 00:54:200847デフォルトの名無しさん
2007/12/13(木) 00:54:21どういう意味か分からんが
単体テストなら正しい例外が返ってくるかcatchして調べる
想定外の例外が返ってきたらバグだからそれはcatchしない
0848デフォルトの名無しさん
2007/12/13(木) 01:12:42質問者がスルーされまくってるだろ
どれが質問者から分からないくらいに
0849デフォルトの名無しさん
2007/12/13(木) 04:31:09その答えは・・・続きはこちらで、みんな移動頼む。
C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/507-
0850デフォルトの名無しさん
2007/12/13(木) 09:28:16もっと存在しない記号にすれば良いのに
0851デフォルトの名無しさん
2007/12/13(木) 09:31:000852デフォルトの名無しさん
2007/12/13(木) 10:07:300853デフォルトの名無しさん
2007/12/13(木) 11:34:540854デフォルトの名無しさん
2007/12/13(木) 11:43:250855デフォルトの名無しさん
2007/12/13(木) 11:47:50£include <stdio.h>
とか書いてたの?
0856デフォルトの名無しさん
2007/12/13(木) 12:12:45みたいに
0857デフォルトの名無しさん
2007/12/13(木) 12:14:580858デフォルトの名無しさん
2007/12/13(木) 12:17:110859デフォルトの名無しさん
2007/12/13(木) 12:23:220860デフォルトの名無しさん
2007/12/13(木) 12:34:000861デフォルトの名無しさん
2007/12/13(木) 13:00:22やっぱりWinアプリですか?
0862デフォルトの名無しさん
2007/12/13(木) 13:15:120863デフォルトの名無しさん
2007/12/13(木) 14:23:18プログラム終了時にフォルダ内全削除してから終了させるのってどうやるんでしょうか?
0864デフォルトの名無しさん
2007/12/13(木) 14:52:150865デフォルトの名無しさん
2007/12/13(木) 14:54:37誰か慰めてください><
0866デフォルトの名無しさん
2007/12/13(木) 14:56:43犬にでも噛まれたと思ってあきらめなさい。
0867デフォルトの名無しさん
2007/12/13(木) 14:57:100868デフォルトの名無しさん
2007/12/13(木) 15:02:400869デフォルトの名無しさん
2007/12/13(木) 15:27:03catch(>>865){}
↑
完全スルーカワイソス
0870デフォルトの名無しさん
2007/12/13(木) 16:19:32ファイルの存在確認からOpenまでの間にファイルが消えることがあるだろ
並列処理してたらそういうことはよくある
確認用メソッドと取得用メソッドは分けてはいけない
0871デフォルトの名無しさん
2007/12/13(木) 22:02:26そういう問題かよ
0872デフォルトの名無しさん
2007/12/13(木) 22:17:46どうすればいいかな?
0873デフォルトの名無しさん
2007/12/13(木) 23:57:43常にVirtualListSizeを操作するのでしょうか?
また、一般的な使用方法とかはList<ListViewItem>みたいなリストを保持して、
RetrieveVirtualItemで処理するのでしょうか?
0874デフォルトの名無しさん
2007/12/14(金) 01:49:46現在の処理の流れとしては
Process.GetProcessesByNameでプロセス取得
↓
取得したプロセス.Threadsをforeachでまわして
Win32APIのEnumThreadWindowsを使ってウィンドハンドル取得
↓
EnumThreadWindowsの中でEnumChildWindowsを使って全部の子ウィンドを取得
↓
GetWindowTextを使用してキャプション取得
こんな感じで処理してます。ここで質問なのですが
1.他のアプリケーションウィンドウのキャプション取得するのって
Win32APIを使う以外に処理する方法ってありますか?
2.特定のウィンドウのキャプションが変更された時に
何らかのメソッドを実行したいのですができますか?
0875デフォルトの名無しさん
2007/12/14(金) 01:54:36それ以外はなし
あとGetWindowText使うな
タイマでポーリングしてりゃ良いんじゃね
0876デフォルトの名無しさん
2007/12/14(金) 01:55:46>1.他のアプリケーションウィンドウのキャプション取得するのって〜〜
確かできなかったはず。IntPtr を取る Control のコンストラクタもあるっぽいが、
昔試したときに他のアプリケーションのウィンドウやコントロールに関して有益な情報が得られなかったと記憶してる。
>2.特定のウィンドウのキャプションが変更された時に〜〜
Win32 API を使う方法になるけど、メッセージフックがある。
SetWindowsHookEx などの関数で調べてみるといいかも。
0877874
2007/12/14(金) 02:34:30レスありが�d
>>875
GetWindowTextって使わない方が良いのですか?
>>876
SetWindowsHookEx試してみたいと思います
0878デフォルトの名無しさん
2007/12/14(金) 02:44:270879デフォルトの名無しさん
2007/12/14(金) 02:47:560880デフォルトの名無しさん
2007/12/14(金) 02:50:38Environment
0881デフォルトの名無しさん
2007/12/14(金) 04:15:340882デフォルトの名無しさん
2007/12/14(金) 06:30:47Length = 0 で代用できるのと、十分に軽量にしているから
使いまわしせずに必要になったら作り直せというお達しだと思う。
0883708
2007/12/14(金) 10:28:420884デフォルトの名無しさん
2007/12/14(金) 10:46:29ToolStripDropDownMenuのチェックとかアイコンの枠を描画するときじゃね
Refectorで追いかけてみればどうよ
0885デフォルトの名無しさん
2007/12/14(金) 12:58:42やり方知らねーなら素直に分かりませんって書けやカス
ほんと役立たずのゴミしかいねーなここ
こんな低脳の溜まり場なんかで聞いた俺が馬鹿だったわw
0886デフォルトの名無しさん
2007/12/14(金) 13:01:34そういうときに使える有名なレスを授けよう。
「知らないんだったらレスしないで下さい!!」
0887デフォルトの名無しさん
2007/12/14(金) 13:09:55アンインストール用のソフトがあるんだね。これ使ってればよかったのに
手順が間違っていたのか、アンインストールもインストールもできなくなった
どうすればいいんでしょうか?
0888デフォルトの名無しさん
2007/12/14(金) 13:10:350889デフォルトの名無しさん
2007/12/14(金) 13:18:46http://support.microsoft.com/kb/290301/ja
>>888
できません。
自前で各行の差し替えを実装して頑張ってください。
0890デフォルトの名無しさん
2007/12/14(金) 14:01:450891デフォルトの名無しさん
2007/12/14(金) 14:27:01即レス感謝します
なんとかインストールはできるようになりました
あとは、もう一度アンインストールしてうまくいくかどうか・・
0892デフォルトの名無しさん
2007/12/14(金) 15:51:36APIとかいうのを使うしか無理?
0893デフォルトの名無しさん
2007/12/14(金) 18:29:520894デフォルトの名無しさん
2007/12/14(金) 18:39:47他アプリ(非.NET)のデータを取得するのはc#でもできるということですか?
0895デフォルトの名無しさん
2007/12/14(金) 18:41:180896デフォルトの名無しさん
2007/12/14(金) 19:31:21API使うとメモリリークとかを意識しないとだめなんですよね
0897デフォルトの名無しさん
2007/12/14(金) 20:21:44[ { col1 => "val", col2 => "val" }, { col1 => "val", col2 => "val" } ]
上記のような表示形式で見たいのですが方法はありますか?
0898デフォルトの名無しさん
2007/12/14(金) 20:25:08autoexp.cs弄ればできるかも
0899デフォルトの名無しさん
2007/12/14(金) 21:30:490900897
2007/12/14(金) 21:40:28List<Dictionary<string,string>>
>>898
おお。まだちゃんと調べてないけどこれでちょっといけそうな気がします。
ありがとうございます。
Javaだと構造が一発でみれて楽なんだけどなぁ・・・
0901デフォルトの名無しさん
2007/12/14(金) 21:43:03レス数が900を超えています。1000を超えると表示できなくなるよ。