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


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

C#, C♯, C#相談室 Part48



1 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 17:44:14 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。

前スレ
[プログラム板] C#, C♯, C#相談室 Part47
pc11.2ch.net/test/read.cgi/tech/1214038282/

その他テンプレ>>2-5くらい

263 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 09:32:55 ]
>>259
リフレクションでLIST<T>からList<>もってくるのあったろ。GetGenericsContain?うろ覚えだが。
そういう話とは違う?

264 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 09:35:11 ]
>>262 >>260
そういう風にできるんだ、助かりますた
ところでフィールドやプロパティーについてのそれはないですかね?


265 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 09:36:28 ]
>>263
GetGenericTypeDefinitionだね

266 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:44:30 ]
HTTP、SQL Serverと通信するGUIアプリケーションを作成しています。

try{ 例外の起きるコード }catch(SomeException e){}... としたとき、
VS上から実行すると例外が正しくキャッチされるのですが、
直接実行ファイルから実行すると例外をキャッチしてくれません。

発生するすべての例外について起きているのですが、何か原因等考えられるでしょうか。

環境は、Windows XP SP3、VS2008 SP1、Release/Debugビルド共です。

よろしくお願いします。

267 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:47:26 ]
キャッチされてないことはどうやって判断したの?
あとtryやcatch書いてるのはどこ?
ひょっとしてMainだったりする?

普通の処理の流れでキャッチされないってのはまず考えられない。

268 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:09:00 ]
>>267
キャッチされてないと判断したのは
・VSから実行するとcatchしてエラー内容をdumpしてくれる
・実行ファイルから実行すると「ハンドルされていない例外が…」と表示される
という部分です。

例外をキャッチしてるのはMDI親フォーム内の子フォームをShowする部分です。
もしかしたらスレッドが別に生成されたかと思ってデバッグ→ウィンドウ→スレッドを開いてみても特にスレッドが生成されてる様子はありませんでした。
もちろん、明示的にスレッドは生成していません。

269 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:11:21 ]
catch( SomeExpection e ) {
MessageBox.Show(e.Message)
}

270 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:57:10 ]
そりゃ無理
ThreadExceptionを調べてみな

271 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:20:32 ]
よくわかんないけどモードレスダイアログって別スレッドではないの?



272 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 03:04:42 ]
WebBrowserを使ってフレームページを扱っているんだけど
Browser.Document.Window.Frames[0]のフレームに
<A HREF="javascript:ShowFrames('11')">全表示</A>
っていう記述で貼られているリンクをクリックした動作をしたいんだが
NAMEがないからGetElementsByNameが使えない.

Javascriptを直接実行しようと思って
ttp://web.sfc.keio.ac.jp/~shokai/archives/2007/01/cs-webbrowser-javascript.html
を参考にしながら
Browser.Url = new Uri("javascript:" + Uri.EscapeDataString(@"ShowFrames('11)") + ";");
としてみたけどランタイムエラー(オブジェクトを指定してください)
とでます.

なにかいい方法はないでしょうか,
あとオブジェクトの指定ってどのことを指してるのか教えてもらえませんでしょうか.

273 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 07:28:50 ]
レベルの低い質問で申し訳ないのだが、生成したファイルパスが有効な書式(ファイルが存在するとかそういうのは無視)
かどうかを検査する方法ってないかな?無効な文字列を含んでいないとかそういうの。
正規表現自作で弾くか、DirectoryInfoやFileInfoのコンストラクタにそのファイルパス渡して、例外をキャッチしなかった
おkとか。そういうのしか思いつかないんだが・・・どうだろう?

274 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:55:19 ]
File.Exists

275 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 10:18:25 ]
C丼

276 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 12:32:53 ]
>>273
「有効な書式」ってのが多数のこんがらがった条件受けまくり
なので実質それしかないです。はい。
一応使えない文字レベルなら GetInvalidPathChars あたりで
取れるが…色々保障されてません

277 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:28:33 ]
正規表現は以前やってみてキツかった記憶が

278 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:49:38 ]
Path.CheckInvalidPathCharsとかPath.NormalizePathあたりを参考にするか
面倒くさければそのまま呼び出しちゃえば

と思ったけど、FileInfoコンストラクタやPath.GetFullPathでも最終的には
Path.CheckInvalidPathChars, Path.NormalizePathに行き着くようだ

279 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 14:07:15 ]
考え方を変えてみたらどうだろう。

パスが無効であることを確実に検査するメソッドを作ることは難しいが、
パスが有効であることを確実に検査するのはそんなに難しくない気がする。

何をいっているか分かりにくいかもしれないけど、
要はそのメソッドで「無効」と判定されたパスが実際には有効なパスである場合があっても、
それは許容することにするってこと。

Winのそれより厳しいルールを適用する、と言い換えてもいい。

280 名前:デフォルトの名無しさん [2008/09/13(土) 17:01:59 ]
>>272

Document.LinksからinnerTextが「全表示」であるaタグを拾えばまず
HtmlElementとしてリンクが取得できる。
そのHtmlElementでinvokemember("click")すればいけるんじゃないか?



281 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 18:40:29 ]
>>270
ありがとうございます。
無事例外発生時にイベントハンドラを呼び出せるようになりました。



282 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:57:47 ]
C#だとforやforeachで宣言した変数が、ブロック外まで有効なんだな。
C++みたいにブロック内に閉じ込めてくれた方が好きなんだが、どうしようもないんかな?

283 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:19:33 ]
いやいや、ブロック内だぞ。

ブロックでるときにデストラクタ呼ばれないという意味でならそうだけど。

284 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:22:20 ]
>>282
そんな仕様は旧VBぐらいだと思うけど。
まあ現VB.NETにも一部引き継がれているようだが。

285 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:27:22 ]
ブロック外では使えないけども、
ブロック外で同じ名前の変数を宣言できない仕様にはなってる。
バグの原因だからいっそのこと禁止してる。

for (int x = 0; x < 10; x++)
{
int y = 0; // この y をブロック外から参照できはしない。
}
int y = 0; // これは確かにエラー。


286 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:59:40 ]
いや、それはシャドーイングの禁止、つまり、外のスコープに存在する変数を内側で再宣言できない制約だよ。

287 名前:282 mailto:sage [2008/09/14(日) 00:30:15 ]
for(int i = 0; i < N; ++i) { }
int i;

これがダメだったから外に漏れてるんだと思ったが、そういうことか。

288 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 00:50:37 ]
それは特例というか救済措置。


289 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 02:01:43 ]
>>274-279
多忙な中、お答え頂いて感無量です。
GetFullPathを利用することにしました。
ありがとうございました。

290 名前:デフォルトの名無しさん [2008/09/14(日) 23:06:02 ]
viライクな操作形態にしたいんですがやり方有りませんか?
補完機能は便利なんで、補完機能そのままに操作形態をviライクにする方法教えてください。


291 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:07:15 ]
うぜえ氏ね



292 名前:デフォルトの名無しさん [2008/09/14(日) 23:32:27 ]
下記のサイトのサンプルを使って2台の映像を表示とキャプチャをしたいのですが、
どのようにすればいいのでしょうか?

mobiquitous.com/programming/usbcamera.html

293 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:37:22 ]
お前には無理。

294 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:06:07 ]
昨日あたりからC#はじめたものなのですが、とっかかりとして、
簡単な例として典型的な図形クラスつくってみているところです。
以下のように書いてAreaを取得する関数はどうやってかけばいいんでしょうか?
DoubleとT型が違うんでだめじゃ!とおこられます。(T)Math.PIもやってみたが
だめでした。例では、Cylinder<float>, Cylinder<double>での使用を考えています。


class Cylinder<T>
{
protected T r;
protected T h;

public Cylinder(T _radius, T _height)
{
this.r = _radius;
this.h = _height;
}

public virtual T Area()
{
T area;
area = 2 * Math.PI * r * r;
return area;
}
}

295 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:08:47 ]
>>294
ジェネリクスはテンプレートとは違うからそういう用途には向かないよ。
まあ今回の場合はとりあえずキャストしとけばいんじゃない?

296 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:09:18 ]
C++のテンプレートと違ってそういうことは無理。

297 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:11:47 ]
>>294
そういう風には現状使えない。
Generics != Template

…まぁ抜け道はあるんだがそれを話すにはここでは
スペースが足りない

298 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:13:08 ]
そうなのですか。。。残念。結局、Volume、Area等の計算は別にだすしかないのかー
でも普段使うクラスのどっかにfloat,doubleと違うのが入り込んだら
他の汎用的に書いたクラスの汎用性を著しく妨げる方向に働くのが
いやなんですよね><

299 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:15:58 ]
C++/CLIを…

300 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:19:46 ]
結局C++にもどれっていうのかいw

301 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:25:49 ]
>>298
double間と暗黙の型変換できるようにしたりT同士の四則演算子を定義したりした
doubleやfloatのラップクラスを用意しておけば出来ないことも無いけどね。




302 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:28:54 ]
>301
やるしかなさそうですね。今がんばってそこまで学習しておくのも手かとおもいますが
なに分まだ舐め終わってないのでもうちょいいってから戻ってきてみます。

とりあえず、ここは、
public virtual double Area()
{
return 2 * Math.PI * (double)(object)r *(double)(object)r;
}
みたいにdouble返り値でつくっておき次へいきます。
(実際の使用時に、floatには自動的にキャストされるだろうと。)

303 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:29:25 ]
>>301
そしてそれの内部は LCG か Expression Tree あたり使うって感じだな


304 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:39:04 ]
ExpressionTreeおもしろそうですね。でも3.0からの機能みたいなので2.0の学習が一段落したら
みてみます。LCGは難しそう。1回機能全体みたら、中間コードの出力しらべながら学習してみます。

305 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:45:42 ]
>>304
ttp://d.hatena.ne.jp/NyaRuRu/20060802

理論的には簡単に出来るはずだから誰かやってねーかなぁと思って
ぐぐったら、やっぱり NyaRuRu 氏が取り上げてた
2.0 考えた LCG 版でも書いてみようかなぁ

306 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:55:32 ]
おー、いいサイトですね。ありがとうございます。
今このスレでおきた事象は、デザインパターン化できそうです。
『PublicBrainStorming Pattern』

Aが解決できないPという課題を公開する
ObserveしているB、C、D、… が解決案か、ヒントを出す。
Aを含めてPを一個すすめたP´という課題をだすというようにして
解決にむけて相互作用しながらすすめていく方式。
似ているパターンいくつかありますが、微妙にちがいますよね。

307 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:56:34 ]
>>305
ただし、NyaRuRu さん本人も言ってるけども、
LCG なんて最後の最後、よっぽどせっぱつまった時の奥の手よ。
書くのも大変だし、メンテはもっと大変。

動的コード生成の類は C# 4.0 で動きがありそうなんで、
それまで待った方がいいと思う。

308 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 04:25:27 ]
>280
おそまきながらありがとうございます.
おかげさまでうまくいきました.

309 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 04:44:29 ]
どういたしまして

310 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 05:42:11 ]
>>305
その記事微妙に勘違いしてる部分がある
そのままでも動くんだが組み込み演算/ユーザ定義演算で場合分けは不要
IL見れば分かるけど、内部にGetUserDefinedBinaryOperatorOrThrowというようなメソッドがある

ほぼすべての演算を定義した構造体をなんとなく作ったけど、あまり使ってないな

311 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 06:41:54 ]
というか今書いてみてるんだが、そもそも組み込み型は
固定なのでそれを固定でメソッド化していくと結論として
LCG も Expression Tree もいらね。



312 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 06:46:59 ]
作ったこと無くて言ってる奴がおるなぁ(・∀・)クスクス

313 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:57:28 ]
気色わる

314 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 14:00:45 ]
頭わる

315 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 15:52:26 ]
わる

316 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 16:07:44 ]


317 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 16:43:38 ]
 

318 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 17:42:41 ]
>>565
10kg10回が限界なら、12kg5回が限界。20kgなら1回。

319 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 17:46:26 ]
どこの誤爆か聞こうか?

320 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 17:50:14 ]
>>319
ああ、ごめん、筋トレスレ。いかんな。
今日も昼飯食わずにトレーニングしてたら倒れそうになって、
嫁さんに脳トレもしとけと諭された。

321 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 04:31:38 ]
>>297
フェルマー先生乙



322 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 12:02:22 ]
>>305
これ、いちいちExpression Treeなんか使わなくてもCreateDelegate使えばいいじゃん
プリミティブ型に関しては別扱いでそれぞれあらかじめメソッドを用意しないといけないけど

323 名前:322 mailto:sage [2008/09/16(火) 12:12:01 ]
DelegateクラスのCreateDelegateね
リフレクション経由の呼び出しが無くせる

324 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 14:11:46 ]
そりゃ「できる」だろう。
だれもその目的ではExpressionTreeを使わなきゃできないなんて言ってない。

つか俺は遊びでやりかけて止めた。
単にわざわざメソッドいっぱい作るの面倒臭かったから。


325 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 14:14:22 ]
あれ?CreateDelegateいったっけかな?忘れちまった。


326 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 14:31:55 ]
型関連でコード生成が必要な時って
LCG使わなくてもMakeGenericTypeとCreateDelegateで結構いろんなことできるよね

327 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 14:47:21 ]
ジェネリックと+-*/のような演算子が相性が悪いということで、
どうするかって話だったと思うけど。
MakeGenericTypeとCreateDelegateで何とかなるの?

328 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:03:20 ]
もちろん強引にしかできない

329 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:05:24 ]
+演算子を使うためにはop_Additionという名前のメソッドを呼び出す必要がある。
もちろんリフレクションを使えばMethodInfo.Invokeで呼び出せるんだけどすごく遅い。
そこで、デリゲートにそのメソッドをバインドしてしまえば、通常のデリゲート呼び出しと同じ
オーバーヘッドで呼び出せるわけ。CreateDelegateを使えばMethodInfoからデリゲートが作れる。

330 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:01:56 ]
すいません。質問です。
スレッドにてSuspendとResumeを使用しているのですが
使用しないでくださいとMSDNにあります。
そこで代わりになるようなのを見つけようと思ったのですが見つかりません。
Suspendのような、特定メソッドが呼ばれるまでスレッドを待機させると言う事は出来ないのでしょうか

331 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:29:13 ]
>>329
たしか、基本データ型はop_色々を実装していない。
勿論ユーザー定義型の演算子なら大丈夫だが不便。

struct Int32 : IAdd<Int32> ... とかすればいいのにとか、この設計は凄くイライラする。



332 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:32:01 ]
DynamicMethodでいいやん

333 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:41:37 ]
DynamicMethodなんか使う暇があったら
各プリミティブ型に対してそれぞれ演算を行うメソッドを全て書いたほうがマシ

334 名前:333 mailto:sage [2008/09/16(火) 17:44:04 ]
op_○○に相当するものを自分で定義するという意味だよ

335 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:16:22 ]
ラムダ式羅列でOK

336 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:17:34 ]
>>330
素直にMomitorかEvent系使え

337 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:54:02 ]
>>330
AutoResetEventでいいんじゃない?
msdn.microsoft.com/ja-jp/library/ms173179.aspx

338 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:44:49 ]
もみたー

339 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:24:09 ]
ワロタorz

340 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:59:03 ]
すみません。
usingステートメントに二次元配列クラスを渡す方法を教えて下さい。
御願いします。

341 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 21:00:53 ]
日本語で御願いします



342 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 21:07:06 ]
public MapSearch[,] msc = new MapSearch[256,256];
for (i = 0; i < 256; i++)
{
for (j = 0; j < 256; j++)
{
msc[i,j] = new MapSearch();
}
}

//↓ステートメント内で宣言できません
//MapSearch内には多く変数が入っています
using (MapSearch[,] msc = new MapSearch[256,256]){
}
すみません。絶対何か間違った方法だと思いますが

343 名前:340 mailto:sage [2008/09/16(火) 21:09:43 ]
あ、>342=>340です。申し訳ありません。

344 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 21:10:06 ]
usingはメモリ使用量の大小とは無関係です。
IDisposableインターフェイスを実装しているもののみに限りusingが必要と覚えておきましょう。
マネージ配列はIDisposableを実装していませんから使えません。放置しましょう。

345 名前:340 mailto:sage [2008/09/16(火) 21:17:28 ]
>>344
ありがとうございます。
もう少し言葉を覚えたいと思います。

346 名前:デフォルトの名無しさん [2008/09/17(水) 01:22:22 ]
配列を以下のように宣言したら、別の関数に渡せるのですが?
private int[] func1() {
int[] testarrays = {1,2,3,4,5};
return testarrays;
}
private void func2(int[] a) {
int[] testarrays2 = func1();
}
自分の環境だと動いているのですが、C#では配列はスタックに
作成されないのですか?


347 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:22:53 ]
配列はオブジェクトです。

348 名前:デフォルトの名無しさん [2008/09/17(水) 02:43:17 ]
そうか。
そして開放は、ガーベージコレクターにまかせればいいんですよね。
ありがとうございました。

349 名前:デフォルトの名無しさん [2008/09/17(水) 03:19:35 ]
すみません。最近プログラムに目覚めてC#の本を買って勉強中です。

まずやりたいことは、Excelを使ったグラフ作成での資料提出です。
Consoleでの操作はある程度やったのでそろそろExcelに手を出したいのですが・・


350 名前:デフォルトの名無しさん [2008/09/17(水) 03:38:40 ]
>>349
こんな時間に、なんか軽い感じの書き込みだな。
もしかして、あんたのいるところは昼間?
英語問題ないんだったら、
Visual Studio Tools for Office:
Using C# with Excel, Word, Outlook, and InfoPath
とかどうスか?


351 名前:デフォルトの名無しさん [2008/09/17(水) 10:48:12 ]
>>350
知り合いが言うにはそこまで複雑ではないそです。
一般家庭にあるExcelを使ってグラフと作成して印刷するだけです。

基本的なことだとは思いますがC#を勉強しててもまったくそのことに触れません。
昨日数時間も本屋さんに通いつかれて疲れました



352 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:49:53 ]
C#を使わずにExcelのマクロだけでやったほうがいいんじゃないかな

353 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 12:07:48 ]
何考えてC#選んだのか知らないけど、直接Excel触るのにはC#は不向きなんだよね

354 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:27:07 ]
>>331
>たしか、基本データ型はop_色々を実装していない。
Reflectorで見たらマジでそうだったんだけどさ
どうして演算できる訳?なんでこんな仕様?

355 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:32:16 ]
もちろん理由はパフォーマンス
数値演算ごときに一々メソッド呼び出しとかコスト高すぎ
ILレベルで数値演算用のオペランドが使われる

356 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:33:51 ]
正しくはオペランドではなくオペコード

357 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:56:44 ]
構造体みたいに見えるように工夫してるけど実際は対応するIL組み込み型として扱われる

358 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:17:24 ]
decimalは真っ当な構造体なんだぜ?


359 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:36:26 ]
decimalも他ほどではないにしろやっぱりCLRにべったりくっついてるね

360 名前:デフォルトの名無しさん [2008/09/17(水) 15:04:58 ]
Excel触るならVB.Netの方が使いやすいと思う(というか、かなりめんどくさいw>C#)
自分は遅さに耐えかねてVBAで組むことが多い

361 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:11:07 ]
VB.NETもC#も変わらん



362 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:13:55 ]
オプショナル引数に対応できる分だけVBが楽
あとは推奨じゃないがCreateObjectでレイトバインディングも可能
まあたいして変わらないのは確かだがね

363 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:46:52 ]
すまん、基本だと思うんだが、Equals、==について教えてたもれ

一応、ガイドラインはみますた
msdn.microsoft.com/ja-jp/library/ms173147(vs.80).aspx

・基本的に値的なオブジェクトでなければEqualsをオーバーラードする必要はないのか?
・演算子==のオーバーライドについてガイドラインではオブジェクトが不変な場合に同じ値を持つ限り同一云々とあるが、自分的にはそのオブジェクトが値的なものであればオーバーライドしなければいけないように思うのだが違うのか。
・その上でDictionaryのようなKey的なオブジェクトを使うものはそのキーの同一性を比較するのに、==とEqualsのどちらを使うべきなのか。
・GetHashCodeの効率的な実装方法

以上のことを教えてくれ。エロい人

364 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:57:28 ]
・ない。
・その項目は参照型の場合のみ。
・IEqualityComparer<T>を使う。特別な実装がない場合はEqualityComparer.Default。
・知らん

365 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:03:27 ]
>>361
遅延バインディングが(手軽に)できるのとできないのじゃ天と地ほと違うと思うけど。
あと暗黙的なキャストができないと面倒な場面も多い。

366 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:53:30 ]
>>365
>・その項目は参照型の場合のみ。
いや参照型のオブジェクトで値的な性質のものについて値としての比較を強制するために==をoverrideしなければいけないのかと。

367 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:56:25 ]
>>363
> ハッシュ
Point構造体を例にすると

- Xを返す (.NETはこれ)
- Yを返す
- XとYの上位16ビットを並べたものを返す

などの実装が考えられるけど、
事前に確率分布が分かっていなければ基本的にどれでも一緒だから、
適当にフィールドから32ビット見繕って返せばいいよ

368 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:04:34 ]
ここにはXorなんてどうよ、と書いてある。
msdn.microsoft.com/ja-jp/library/system.object.gethashcode.aspx

369 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:08:03 ]
>>367
あれ、PointはXとYのxorだったはず

370 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:19:28 ]
ごめん、何か別のと勘違いしてた

371 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:21:55 ]
とりあえずはメンバ全部の GetHashCode Xor だな普通
あとは分布とコスト次第で調整(必要なのはあまりない)



372 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:24:24 ]
俺は少しビットずらすのがすき。
あんま深く考えてはいないけど。


373 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:26:37 ]
floatはどうすると?

374 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:29:34 ]
float.GetHashCode

375 名前:デフォルトの名無しさん [2008/09/18(木) 00:30:25 ]
質問です。

String s = (o==null)?"":o.ToString();
みたいにいちいちNullチェックするの面倒だから

static String ObjToString(Object o){
return (o==null)?"":o.ToString();
}

みたいな野作ったんですが邪道でしょうか
もっといい方法ないでしょうか


376 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:39:21 ]
>もっといい方法
VBを使う。
VBだとnullはString.Empty扱いされる。(本当)

377 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:43:20 ]
まじかーでもVB使いにくいしなー

慣れかな

378 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:51:12 ]
>>375
自分なら拡張メソッドにする。
おかげで自分のプログラムではobjectのメソッドが増えること増えること('A`)

379 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:54:28 ]
三項演算子ってこわくね?

String s = (dataSet.Tables.Count == 0) ? "" : (dataSet.Tables[0].Rows.Count == 0) ? "" : (dataSet.Tables[0].Rows[0]["Field0"] == null) ? "" : dataSet.Tables[0].Rows[0]["Field0"].ToString();


380 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:00:30 ]
そうか?俺平気で結構連結するよ
改行とインデントしっかりすれば個人的にはこっちのほうが
みやすい
とはいえその例はしないかな

381 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:00:58 ]
>>378
拡張メソッド はずかしながら知りませんでした。
これは便利ですね。




382 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:02:06 ]
>>378
>objectのメソッドが増えること増えること

せめてジェネリクス使おうよ。

public static string SafeToString<T>(this T obj)
{
  return (obj != null) ? obj.ToString() : string.Empty;
}

383 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:11:19 ]
>>382
それにジェネリクス使っても何の意味もなかろーもん

384 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:12:05 ]
それに何の意味があるのか教えてくれたまえ。


385 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:12:14 ]
この場合ジェネリクスにしたら何がうれしいの?
よくわからんがnull許容型に対してボクシングが行われないとかなのかな?

386 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:13:00 ]
値型だとボクシングが回避できるんだぜ?


387 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:13:35 ]
T が値型だと boxing が起きませんな
デメリットも思いつかんし付けたほうがいいね

388 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:13:49 ]
余計なnullチェックもなくなるんだぜ?

389 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:14:34 ]
だけどToStringするようなもんならあんまり意味はないんだぜ?


390 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:19:12 ]
>>388
おお、値型ならアクティブ時に条件分岐すら消滅しますな確かに

391 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:21:59 ]
むしろこうすると値型で余計なメソッドが見えなくなってうまーかな。

public static string SafeToString<T>(this T obj)
  where T:class
{
  return (obj != null) ? obj.ToString() : string.Empty;
}




392 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:24:38 ]
DataGridViewかRDBMS関連のお話かな

393 名前:384 mailto:sage [2008/09/18(木) 01:25:27 ]
しょうじきすまん買った
今は反省している

394 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:31:17 ]
俺はcoalesceの方が好きだな

(obj ?? "").ToString()

395 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 02:41:21 ]
その系のパターン結構多いんだよな。
で思わず??で書こうとして無理じゃんってのが多いんだよな。


396 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 06:06:23 ]
c#2008EE使っているんだけど
F5デバッグしてプログラム終了後、エディタ画面にもどるまで
2秒ほどもたつくんだけど、これは無料だからわざとやってるのかな?

c2d E8400でやっているんだけど、これでも足りないとは思えないんだけど・・・

397 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 09:08:45 ]
そんな現象に会ったこと無い

398 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 10:18:24 ]
Webプロジェクトやフォームアプリでも、ちょっとした小さなコードを書いて挙動を確認したい時が
あるじゃないですか。例えば、Enumのパースってこれで良かったっけ?とか。

そういう時、Visual Studioだとマイクロコードを書いて確かめる方法なかったでしたっけ?
皆さん、どうしています?
ソリューションにコンソールアプリプロジェクトを追加するのは大げさだし、
別にテスト用ソリューションを用意しておくほどのものでもないし。

テストプロジェクトでも流用して、小さなコンソールアプリでも追加できないんですかね。

399 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 10:19:36 ]
またスタートページ切ってないとかじゃないのどうせ

400 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 10:24:32 ]
EEって書かれると、エンタープライズエディションかと思っちゃうよね〜。
2008チームスイート使ってるけれど、SP1で確かにもたつきが無くなった気がするよ。


401 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 10:34:11 ]
>>398
小さいテストコードって意味なら、適当にブレークして
イミディエイトでご自由にどうぞ。



402 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 11:00:29 ]
オブジェクトテストベンチ
ちょっと違うか…

403 名前:396 mailto:sage [2008/09/18(木) 13:00:24 ]
>>399
スタートページ表示したままだったので消してみました。様子見

>>400
一応最新です

404 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 13:03:03 ]
>>396
俺も、Vistaマシンに入れたら同じ現象おきるな。
なので今はXPマシンでやってる。

405 名前:396 mailto:sage [2008/09/18(木) 13:13:58 ]
スタートページ切ったら不可思議なラグがなくなった
ありがとう

406 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:07:24 ]
3.5SP1にしてからインテリ扇子が英語になってもーた

407 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:38:50 ]
翻訳が間に合わなかったらしい
ttp://blogs.msdn.com/dd_jpn/archive/2008/08/11/8848131.aspx

408 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 18:12:06 ]
>>407
そうだったんですか。
ありがとうございました。

409 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 19:33:17 ]
.NETリモーティングで双方がどちらもクライアントかつサーバーになる
サンプルをどこかで見た記憶があるんだけど、今ググっても見つからない。

誰か心当たりある人いない?

しかし、.NETリモーティングって同じことをやる方法が複数あるわ、
必要なクラスがバラバラの名前空間に散らばってるわでもう訳がわからん。

410 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:41:45 ]
よく双方向なんてやる気になるな。
リクエストリプライのステートレスでしか使ったことないぜ。


411 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 22:01:19 ]
>>398
MonoのMiguelたんがやってくれたぜ。

CSharpRepl
ttp://www.mono-project.com/CsharpRepl



412 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:17:59 ]
DataColumn.Expression プロパティについて教えてください。

あるフォルダの中で、条件に一致するファイル(名)を取得したいと思っています。
そこで、条件をテキストボックスなどで[abc def xyz]などのようにスペースで区切って、AND検索をしたいと思っているのですが、Dataset.DataTable.SelectのExpressionの記述方法で困っています。

具体的には、
string[] keywords = textbox1.Text.Split(' ');
というように各キーワードの抜き出しを行っているのですが、ここからどうすればいいのか困っています。
abcだけならDataset.DataTableTable.Select("\"FileName = 'abc'\"");などでできると思うのですが。。。

よろしくお願いします。

413 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:23:09 ]
それのSelectの中身ってSQL文だっけ?
そんなに詳しくないけども、in 演算子ってなかった?
Filename in { 'abc', 'def', 'xyz' } みたいなの。

414 名前:412 mailto:sage [2008/09/18(木) 23:28:12 ]
>>413
すみません。リファレンスを書き忘れました。
msdn.microsoft.com/ja-jp/library/system.data.datacolumn.expression(VS.80).aspx

IN演算子ありました!

ちなみに、IN演算子を使って、
Filename IN { 'abc', 'def', 'xyz' }


415 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:29:48 ]
すみません。間違えてShif+Enterを押してしまいました。

ちなみに、IN演算子を使って、
Filename IN { 'abc', 'def', 'xyz' }
と記述した場合に、結果にはabc def xyzを含むファイル名が取得できるということでいいでしょうか?

416 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:38:15 ]
「を含む」じゃなくて「のいずれかに一致する」
Expression の IN は ()

「を含む」の場合は LIKE 演算子が必要だが IN と併用できたっけ。
無理なら OR でつなげるしかないかな?

417 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:42:28 ]
>>415
in は「右辺の配列の中に左辺が含まれているかどうか」
今の場合、Filename が abc, def, xyz のいずれかと一致するかどうか
になると思う。

418 名前:412 mailto:sage [2008/09/18(木) 23:45:08 ]
>>416
>>417
なるほど。

LIKEとINが併用できるか調べてみます。
# だめだった場合は、ORでつなげるか、複数回Selectを実行してやってみようと思います。

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

419 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:46:11 ]
というか、こういう処理こそ LINQ の出番なんだけどねぇ。

420 名前:412 mailto:sage [2008/09/18(木) 23:58:31 ]
>>419
すみません。
LINQについてはまだ勉強不足です。
# 将来的には勉強しなければと思っていますが・・・。

421 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:03:37 ]
元々から非 LINQ の DataTable 使ってるとか
会社の方針として使うものが決まってるんなら別にいいと思うけど、
新規に学ぶなら LINQ の方が楽というだけ。



422 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:14:59 ]
RDBMSやSQLをきちんと理解していれば、LINQの勉強なんて大した手間でもない

423 名前:412 mailto:sage [2008/09/19(金) 00:37:03 ]
>>421
>>422
助言ありがとうございます。
今後勉強する際の参考にしたいと思います。

424 名前:デフォルトの名無しさん [2008/09/19(金) 22:25:12 ]
すれ違いで間違ったところに投稿してしまったのでここへ書かせてもらいます。

C#2.0 

CTIのシステムを自分のソフトにも組み込んでみたいんですが
どんな感じで実現するんでしょう?

着信があってその番号から検索するのはわかるんですが、
どうやって電話を邪魔せずに番号だけ抜き出せばよいのか…・

外からの着信→PCのモデム→TEL
こんな感じでつなぎそうな気がするのですが・・・・

425 名前:424 [2008/09/19(金) 22:27:26 ]
おぉ・・・・間違ってShift+Enterを・・・orz

以下追記です。

対象はC#2.0+WinXP環境です。
また、単純に着信があれば顧客のデータにある電話番号か携帯番号のどちらかからデータが取得したい程度のことです。

番号さえフックできればあとは簡単な話なのですが・・・

426 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:39:36 ]
C#のクラスライブラリには直接サポートするものはなかったと思う。
何か市販のミドルウェアを使うならそのマニュアルを、モデムを直接制御するならモデムのマニュアルを。
ふらっとでスレ違いといわれたら当然ここでもそうだろう。

427 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:40:38 ]
Creed Taylor Issue レコードを C# で作りたいのか。

まあ、冗談は置いとくとしても3文字略語(・A・)イクナイ

428 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:41:59 ]
TAPI3Libで検索するとちょっとは幸せになるかもしれない。

429 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 23:05:07 ]
>>424
ここに書き込んだからには、そのCTIとやらの知識はあって
Cないし他言語では組めるんだろ
で、C#だと何が問題なんだ?

430 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 00:12:29 ]
>>424
.NET / Visual Basic環境でのCTI開発ツール“VBVoice”、トライアル版の無償ダウンロードの開始
japan.zdnet.com/release/story/0,3800075480,00017855p,00.htm
検索したらこんなのが見つかったけど調べてみれば?

431 名前:424 mailto:sage [2008/09/20(土) 02:02:22 ]
レスありがとうございます。
ひとまずCTIでやるべき事はわかるんですがその手法かなと

>>428
どうもTAPI3Libは電話機器とかその辺の関連DLLみたいですね
今軽く見たらなんとなくいけるかもしれない希望が見えてきた気がします。

>>426
そうですか、それがわかれば逆に範囲は狭められる感じがします。
TAPI3Libが今回やろうとしていることにうまいこと使えればうれしいものなのですが・・・

>>427
いわゆる広義でいう Computer Telephony Integration
のことを言おうとしていました。
ただ、もっと具体的に書くべきかなと思いました。

>>429
とりあえず組めるには組めるのですが、何ができないかというと
かかってきた電話を邪魔せずに電話番号(ナンバーディスプレイ)をPCで取得しようとする方法です。
ハード寄りな部分というのはあんまりしたことがないのでノウハウが・・・

>>430
それはどうもその会社の製品を買ったおまけで、しかも開発ライセンスはタダだけど配布ライセンスはいるという感じなorz

まずは頂いた情報であれるだけやってみようと思います。
ありがとうございました。



432 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 08:42:09 ]
ワンギリ業者氏ねよ

433 名前:デフォルトの名無しさん [2008/09/20(土) 10:54:22 ]
C#でソースを書いていて、タブキーを押すと押せば押しただけタブが挿入されるのがいやです。
タブを何回押しても、決まったインデントの位置に行くだけになるよう設定できますか?
環境はVisual C#2008です。よろしくお願いします。

434 名前:デフォルトの名無しさん [2008/09/20(土) 11:35:49 ]
文字列をtextBoxに表示するとき、改行を\r\nと書かないとだめなのはなぜですか?
MessageBoxに表示するときは\nで改行できるのに。

435 名前:デフォルトの名無しさん [2008/09/20(土) 12:03:36 ]
寧ろMessageBoxがおかしい。

436 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:27:27 ]
コモンコントロールに依存してるところがそうなってる感じかな。


437 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:44:33 ]
コモンコントロールに依存してないWPFのTextBoxは\r\n \r \nのどれもOKだった

438 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 19:47:22 ]
>>431
CTIは知らんけど、auの携帯電話ならシリアルで接続すれば、着信時にシリアルポートから電話番号の情報が受信できるけど・・・

439 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 03:15:28 ]
[C#, Delphi] いい加減 C# 信者がうざい件
tobysoft.net/diary/archives/2008/09/believers_of_c-sharp_are_uzai.html
---
C# 信者の特徴
 Hejlsberg は神であり神による実装である C# こそが唯一絶対の言語である
 他の言語(特に DelphiとJava)は存在自体が悪である
 他の言語を使っているのは C# を知らないからである
 C# を布教することでそのような不幸な子羊たちを救済することこそが正義である
どこかの世界宗教のようですね。


440 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 03:28:21 ]
まあ文句は使ってみてから言えや
もちろんこっちはPASCALもJavaも使える

441 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 03:42:37 ]
C#使ってるけど別に信者じゃないからどうでもいいよ。

だいいち信者がウザイのはどこの言語でも一緒だから
ことさら言うまでのことじゃないんだ。



442 名前:デフォルトの名無しさん [2008/09/21(日) 09:48:13 ]
C#で書かれているチャートソフトを使用しています
いろいろとソース弄って表示を変えたいところがあります

プログラミングをした事がないのですが
いきなりC#から入ったら無謀でしょうか?

443 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 09:51:24 ]
具体性のない質問をされてもな。具体的に困ったことがおきてからふらっとへ。

444 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 09:55:03 ]
言語によらず入ってくるの自体が無謀

445 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:17:37 ]
>>442
ソース見て頭がフリーズしなけりゃ大丈夫

446 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 18:44:36 ]
プログラミングがしてみたいんじゃなくてそのソフトを弄るのだけが動機なんだったら
言語問わずすぐ挫折するよ

447 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:19:46 ]
BackgroundWorkerでCancelAsyncメソッドを呼び出して、RunWorkerCompletedイベントで
引数RunWorkerCompletedEventArgs.Resultを参照するとInvalidOperationExceptionがスロー
されるのは仕様?

DoWorkイベント内で
if (backgroundWorker1.CancellationPending)
{
e.Result = "hoge";
e.Cancel = true;
}

とやってもダメだった。

448 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:20:12 ]
イベントハンドは仮想関数であってもいいの?

449 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:39:02 ]
>>447
そうみたいだね
>>448
うん
オーバーライドされてたらちゃんと派生クラスのメソッドが呼ばれる

450 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:40:16 ]
>>447
RunWorkerCompletedEventArgs.Resultの解説に明記されてる

451 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 01:28:10 ]
DatasetのDataTableにおいて、DataRowの要素が重要かどうかを判断するために、列として System.Boolean で isImportant という名前をつけています。
そこで、DataTableに isImportant が true となっている要素だけを取り込もうと思い、以下のようなコードを書いたのですが、System.Boolean の値判定はどうすればいいでしょうか?
(現状では単純に True となっているのですが、そもそもそれでいいのかどうか・・・。)
また、ほかにスマートなやり方があれば教えていただけるとうれしいです。

DataSet.DataRow[] dataRows = (DataSet.DataRow[])DataSet1.Table1.Select("\"isImportant = 'True'");

よろしくお願いします。



452 名前:デフォルトの名無しさん [2008/09/22(月) 06:20:11 ]
C#でExcelのアドインを作ろうとして以下のページを見てるのですが、
ttp://support.microsoft.com/kb/302901/ja
>[新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] の下の [その他のプロジェクト] を展開し、
>[機能拡張プロジェクト] をクリックします。次に、[共有アドイン] テンプレートをクリックします。
という手順のところで、「その他のプロジェクト」というのがありません。
自分の使っているのはVisual Studio C# 2008 Expressなのですが、ExpressではExcelアドインは作成できないので
しょうか?
どうかよろしくお願いします。


453 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 07:23:51 ]
>>452
この資料は以下の製品について記述したものです。
 ・Microsoft Visual C# .NET 2003 Standard Edition
 ・Microsoft Visual C# .NET 2002 Standard Edition

まともに調べたことは無いがちらっと検索したら否定的な意見が目に付くな

454 名前:デフォルトの名無しさん [2008/09/22(月) 07:43:45 ]
>>453
ありがとうございます。
自分も調べているのですが、Expressでアドインを作成できるにはできるらしいのですが、それ用のテンプレートが
Expressには入ってない、というところまではわかりました。
テンプレートをダウンロードできるのか、もしくは簡単に自分で書けるのか、もしくはExpressでやるのはやめた方がいいのか
今調べているところです。

455 名前:弱弱 [2008/09/22(月) 07:54:40 ]
とりあえず、VS2008Professionalの90日間トライアルバージョンをダウンロード
し始めました。
#でもダウンロードマネージャというのがJavaでできてるのが変な感じ。
最悪、こいつで作ってみて、shared add-inのtemplateが自作できそうなのか判断してみます。


456 名前:弱弱 [2008/09/22(月) 12:36:28 ]
ダウンロードして、トライアル版で作り始めました。
まず、ExcelアドインでHello worldを作ろうとしているのですが、
 private Excel.Application applicationObject;
 private Core.COMAddIn addInInstance;
 private Object missing = Type.Missing;
この3行のコンパイルが通りません。コンパイルエラーには、
Expected class, delegate, enum, interface or struct
と出ているのですが、、、
参照は、COMのMicrosoft Excel 11.0 Object Libraryを追加しました。
どうかよろしくお願いします。


457 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 12:39:21 ]
using Excel = Microsoft.Office.Interop.Excel;
このへんは入れた?

458 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:14:20 ]
C#でデスクトップマスコットみたいな 自由な形のアプリを作るにはどうしたらいいですか?
参考になるような書籍・サイト等ないでしょうか?


459 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:24:47 ]
ちょっとググったが、
ttp://uchukamen.com/Programming1/Region/
こういうやつ?

460 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:30:22 ]
>>458
www.codeguru.com/csharp/csharp/cs_misc/graphicsandimages/article.php/c4259/

461 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:42:27 ]
>>459
>>460
まさに求めていたモノです。
ありがとうございます!!



462 名前:弱弱 [2008/09/22(月) 20:10:08 ]
>>457
ありがとうございます。
using Core = Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
を入れました。あと、参照の追加で、
Microsoft.Office.Interop.Excel
も追加してあります。
でも結果は同じでした。


463 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 20:11:57 ]
グローバル変数定義しようとしてるだろ
クラスメンバとして宣言しろ

464 名前:弱弱 [2008/09/22(月) 20:49:45 ]
>>463
ありがとうございます。
クラスメンバとして宣言したらコンパイル行けたみたいなのですが、そのあと管理者で
実行しないとだめといわれました。
HKEY_CLASSES_ROOT\MyAddin3.Connectへのアクセスが拒否されました。
といわれてます。自分も管理者権限もってるんですが、、、

465 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 20:54:46 ]
>>464
>>463はバカだから放置したほうがいいよ

466 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 20:59:33 ]
馬鹿はおまえだ

467 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 21:43:54 ]
(´・ω・`)しらんがな

468 名前:デフォルトの名無しさん [2008/09/23(火) 01:15:01 ]
Visual Studioを管理者権限で実行させてみようと思うのですが、
どうすればよいですか?ちなみに環境はVista上のVS2008です。

469 名前:デフォルトの名無しさん [2008/09/23(火) 01:19:47 ]
実行するときに右クリックで管理者権限で実行を選択するとあっさりできました。
とりあえず、F5押すとExcelが起動して、Hello Worldが表示されました。
ありがとうございました。

470 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 07:29:06 ]
DDEを利用したいのですが
メインのスレッドでないと正しく動作しないようです。
他のスレッドを実行中にDDEにアクセスすることはできないでしょうか?

471 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 07:30:24 ]
DoDemoE



472 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 07:39:38 ]
DemoDaijinE

473 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 10:46:51 ]
どうやってDDE使ってるのか分からんけどSTAThreadか
まあ普通にControl.Invokeでメインスレッドで処理すれば良いじゃん

474 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 19:07:45 ]
VS2008で.NET FW3.5向けで開発したものが、.NET FW2.0しか入ってない環境でも動くんだけど大丈夫?

475 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 19:35:17 ]
大丈夫

476 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 20:36:54 ]
>>474
3.0 と 3.5 は基本的にライブラリの追加のみ。
追加部分を使わなければ .NET Framework のバージョンは 2.0 で OK。

477 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 23:57:53 ]
>>475-476
ありがとう、大丈夫なんだね

478 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 09:59:11 ]
当たり前だが2.0SP1以降や3.0以降の機能を使おうとしたら止まるぞ。


479 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:27:04 ]
private List<ISchedule> zTasks = new List<ISchedule>();
これを同じことを NET 1.1でやりたいんですが どうすればいいんですか?

arraylist ってヒントまではもらえたんですが
具体的なコードを教えてくれませんか?

480 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:33:16 ]
private ArrayList zTasks = new ArrayList();
要素がobject型になるので、ISchedule型でなくても入れようと思えば入れられる
取り出すときにはダウンキャストが必要
どうしてもちゃんと型付けしたかったらSystem.Collections.CollectionBaseから派生した
ISchedule型専用のコレクションを自作する

481 名前:デフォルトの名無しさん [2008/09/26(金) 00:35:12 ]
コントロールが結構たくさんあるフォームがいくつかあるのですが、
一応コーディングが終わってこれらの動作を一通りテストしたいというときには、
手動でやるしかないですか?
このボタンとこのコンボボックスの××の項目を選択してOKをおしたら△△になって、、、、
とか、かなり煩雑なのです。
こういうテストってどうすればよいですか?



482 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 00:38:54 ]
GUIテストの出来るツールを使うか、GUIで中のプロパティをいじくる動作と、プロパティに基づいたその後の動作を分けて後者をユニットテストで、前者は仕方ないので手動でしこしこですかね?
もっといい方法があれば教えてエロイ人。

483 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 00:43:26 ]
皆さんリリースしたフォームアプリ(まぁなんでもいいのですが、とりあえず客先に納入したとおもいねぇ)で想定していなかった例外がでる時って現象把握とかどうしてますか?
いまはスタックフレームを出しているぐらいなんですが、これだけだと原因が把握できない時ってありますよね?
( ゚Д゚)ナニカ?コードを仕込んでおけば例外はいた時点でのレジスタ?の値とかはけて、後でILと照らし合わせれば変数値が把握できるなどなにか技があれば是非・・・

484 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 00:57:33 ]
>>483
tryで全部くくればエラーでなくていいよ

>>482
APIぐらい使えよカス

485 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 00:58:40 ]
GUI操作しなければチェックできない時点で糞設計
はじめからやり直せ

486 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 01:48:06 ]
>>484
だから俺が言ってるのがAPIだろうがこの池沼

487 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 06:38:25 ]
>>483
追わないといけない処理してるmethodは中でcatchして情報まとめてthrow
んで大外で全部catchしてログ出力じゃ問題か?

>>485
糞設計者の俺にサンプルの提示してもらえないか?

488 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 06:48:02 ]
手動での操作を減らす方向での設計には大賛成、ただ減らすことはできてもゼロにはできない。
WEBアプリじゃあるまいしテスト容易性のために利用者の利便性や操作性は犠牲にできない。


489 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 07:46:55 ]
>>487
>追わないといけない処理してるmethodは中でcatchして情報まとめてthrow
>んで大外で全部catchしてログ出力じゃ問題か?
その場合、リリースしてから想定してなかったところですっ飛んで、追わないといけなくなったときに必要な情報がとれなくてどうしようということがありますた(´・ω・`)
情報まとめるよう入れ替えることが出来るときは問題ないんですが、諸事情で其れが出来ないときにどうしたらいいかと。
BoundContextObjectとかうまく使うとリコンパイルしないでうまく出来そうな所もあるかも知れないけど全部其れというわけにもいかないし

490 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:11:22 ]
結合テスト以降は手動でいいんじゃね?
UIなんて変わるもんだし

単体テストはユニットテスト使えばいいし

491 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 10:27:04 ]
BoundContextObjectてなんだ。



492 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 10:42:50 ]
商用アプリ作っていてちょっくら難読化しようと思ったら、

Dotfuscatorたけぇぇぇぇぇぇぇぇぇぇ!!!!!

1ユーザー1ビルドマシーンで85万てどんだけですか。
これこの間まで15万ぐらいだったような気がするんだが気のせいですか?
しょうがないので他のツール試してみる(ノД`)シクシク
そういうのはだいたい600$から1200$ぐらいなのに・・・

493 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 11:25:46 ]
なんかフリーのなかったっけ?
機能は落ちるだろうけど

494 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 11:27:52 ]
フリーっつうか、CommunityEditionはVSに付属

495 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 11:52:55 ]
フリーならこのへん
uwa.potetihouse.com/soft/nandoku.html
www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx

496 名前:デフォルトの名無しさん [2008/09/26(金) 12:14:16 ]
XXX_FormClosing(object sender, FormClosingEventArgs e)
の中で、
e.Cancel = true;
というコードがあるのですが、これの意図が良くわかりません。
これって何か意図がありますか?


497 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 12:17:53 ]
それがどのイベントの時に呼び出されるメソッドかは分かるな?
あとはそのイベントの解説読め

498 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 12:40:27 ]
フリーだと商用使用は禁止されてるぞ

499 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 12:48:33 ]
GPLの難読化ツールとか憧れるな

500 名前:デフォルトの名無しさん [2008/09/26(金) 12:58:08 ]
>>497
ありがとうございます。
フォームを閉じるのをキャンセルする意図ですね。ヘルプ読んだら真っ先に出てきてました。
ありがとうございました。

501 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 23:44:11 ]
>>489
入れ替え不可で修正って何の意味があんの?修正したって入れ替え出来ないんだろ?
想定外とかはテスト不足か理解して作ってない、素直に諦める。



502 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 23:45:08 ]
タブブラウザを作ろうとして試行錯誤しています。
とりあえずシンプルに、TabPageにWebBrowser(System.Windows.Forms)をAddしてTabControl上で表示させることにしたのですが、
iGoogleのページに移動して、ページ内のすべてのコンテンツが完全に表示される前に「タブを閉じる」のような操作を通じてWebBrowserをDisposeしてしまうと、
IEが立ち上がり、アプリのプロセスが停止するまでものすごい勢いでタブを開いてしまいます(www.google.co.jp/#%22remote_iframe〜などのURL)。
IEを起動しているのはDCOM Server Process Launcherサービスのようです。
現状iGoogle以外のサイトでは起こらないのですが、回避方法がありましたらご教授ください。
また、情報の不足等ありましたらご指摘ください。よろしくお願いします。

503 名前:デフォルトの名無しさん [2008/09/27(土) 00:17:28 ]
コンボボックスに名前のリストを何個か表示させておき、comboBox.SelectedTextで
選択されたものをとってこようと思ったのですが、うまくいきません。comboBox.SelectedItem.ToString()
で出来たのですが、SetelctedTextってどんな使い方があるのですか?


504 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 00:23:13 ]
>>503
SelectedText でぐぐったら1番上にまんまな答えが載ってたんだが。

505 名前:デフォルトの名無しさん [2008/09/27(土) 00:29:08 ]
すいません、見ました。
じゃあとりあえずSelectedItemを使っといて必要なときにはToString()する、
というのでいいですか?

506 名前:デフォルトの名無しさん [2008/09/27(土) 00:33:47 ]
コードのある部分を無効化したいとき、#if 0 と#endifで括ってやってたんですが、
C#では出来ないですか?

507 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 00:35:58 ]
>>505
まあ、そう。

>>506
#if false

508 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 00:39:28 ]
Conditional属性なんてのもなかったけ。
ほとんど使ったことないけど。

509 名前:デフォルトの名無しさん [2008/09/27(土) 00:53:10 ]
>>507
ありがとうございます。

510 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 02:20:46 ]
>>501
入れ替えできないってのは容易に入れ替えできないということだろ。
たとえば、本番環境で24時間稼働していてテスト環境では現象が再現しない場合など、メンテナンス時などに詳しくログはくものに入れ替えるとか。

511 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:24:17 ]
デリゲートは本当に遅いの?
ただの仮想関数よりも?



512 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:27:35 ]
どこで聞いてきたのさ?DynamicInvokeしなければ速いよ。


513 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:52:46 ]
C#なじてんで…

514 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 20:01:02 ]
(インライン化されてない)普通のメソッド呼び出しと仮想関数呼び出しだって、
遅くなるのは間接参照1回分よ。

デリゲートはそれよりはちょっと遅いかも。
普通の関数ポインタよりも高機能なことやるのに色々オーバーヘッドかかってるだろうし。

515 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:08:04 ]
ILも見ずに議論とな

516 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:13:50 ]
ILからJITされた結果も確認せずに議(略ってどうやったら見れるのだろう。

仮想関数のオーバーヘッドはJITでほぼゼロになる。
インライン化もたいていJITでやってる。


517 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:19:54 ]
ILはあんまり見ないけどJITコンパイル後のは時々見る
こっちの方が分かりやすい

518 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:42:40 ]
C#のJITではC++でコンパイルされたコードより高速なコードが出力されると聞いたが
CPUごとに最適化できるという意味でな

519 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:45:56 ]
そういう場合もある、程度だろ。

520 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:47:19 ]
まぁなんにせよ初回実行にすこし時間かかります

521 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:50:47 ]
Cとアセンブラの関係とそう変わらないと思う。
どうしても人手の最適が強い部分もあるし、
機械的な最適化の方が強い場面、あるいはそれで十分な場面も多々。



522 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:52:11 ]
できるのとするのは別問題だけどな

523 名前:デフォルトの名無しさん [2008/09/27(土) 23:26:34 ]
sts.bkukr.de/l-davoss/blog/default.aspx?BlogId=21
開発環境もポータブル



524 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:31:27 ]
>>511
デリゲートは仮想関数よりもおそいらしい。
どっかの英語のサイトにテスト結果出てた。
普通の関数>>>>仮想関数>デリゲートってかんじ
仮想関数とデリゲートは1割ぐらいの差?それほど気にすることじゃないかと。
どっちにしろ普通の関数よりは数倍遅いので其れは柔軟性に必要な代償だと思ってあきらめるがヨロし。


525 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 05:28:40 ]
フォーム上にtextboxを複数設置してるんですが
それぞれ同じイベントを記述したい時
どのようにすればいいのでしょうか?
private void textBox1_Enter(object sender, EventArgs e)
{
textBox1.BackColor = Color.RED;

}
private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.BackColor = Color.White;
}
フォーム上のテキストボックスをコピペしてもイベント記述は
コピーされないので、困っています。
このような連番のコードを生成するアプリなどあるのでしょうか?


526 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 06:28:01 ]
全く同じ処理を行うと解釈していいんだろ

ならプロパティ ウィンドウのイベントから全部のTextBoxのEnter/Leaveに
textBox1_Enter/textBox1_Leaveを設定すればいい

527 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 07:01:41 ]
ありがとう、できました

528 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 07:58:39 ]
>>524
> 普通の関数>>>>仮想関数>デリゲートってかんじ 

普通の関数が大きく有利になるケースとして、
テストに使用した関数がサイズが小さくJITでインライン化された場合がある。
仮想関数やデリゲートの場合はサイズが小さくてもインライン化されない。
int f(int i) { if (i>=0) return i; else -i; } 
という関数を使用した場合普通の関数はJITでインライン化されて非常に有利になる。

最適化をOFFにすればインライン化は抑制されるが、
最適化前提で設計されている.NETのパフォーマンス測定で意味のある行為ではない。
最適化ONのままインライン化を抑制するには無駄なコードを挿入してサイズを増やす必要がある。
テストでは引数i は負になることはないとする。
int f(int i) { if (i>=0) return i;
 意味のない大量のコード; -- ただし最適化で捨てられないように
  Randomで生成して結果はConsoleに出力するようにするなど工夫が必要
else -i; } 

さらにデリゲートに関してはデリゲートの生成を減らす工夫が必要になる。
これらの条件でテストすると普通の関数・仮想関数・デリゲートはほぼ変わらなくなる。



529 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 08:02:18 ]
君は注意力が足りないようだ

530 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 11:42:16 ]
リフレクション経由の呼び出しくらいになるとさすがに問題になるだろうけど
インターフェイスとデリゲートなんて普通の使い方ではほとんど意味のない差






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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