- 1 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 13:45:15 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part49 pc11.2ch.net/test/read.cgi/tech/1224754660/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5くらい
- 321 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:54:31 ]
- プラグインが実装するインターフェイスのアセンブリは、
呼び出し側とプラグイン側で同じものを参照する必要がある。 両方に同じコードをコピーしてそれぞれでコンパイルしてるのではないかな。
- 322 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:56:37 ]
- 俺はC++&PythonからC#入ったら、ほとんど覚えることは無かったな。
最近のGC付き言語はどれも似たような感じだね。
- 323 名前:319 [2009/01/07(水) 18:34:24 ]
- >>321
どうもご返答ありがとうございました 一応あの後頑張った結果 1.インターフェースクラスのみをdllに吐き出す 2.参照の追加、でdllを参照に加える(これは継承したクラスとアプリケーションどちらも) 3.この状態で動的ロードとダウンキャストを行う で、うまく行きました ありがとうございました。
- 324 名前:デフォルトの名無しさん [2009/01/07(水) 20:27:38 ]
- >>275
解決しました
- 325 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:44:01 ]
- Runed・・・ 笑うとこ?
- 326 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:59:11 ]
- sql serverへの接続プログラムを作っていて不思議に思ったことがありました。
SqlConnectionクラスが保持しているリソースの開放を、 『using + IDisposableインタフェイス』で行いました。 using (SqlConnection oCon = new SqlConnection("接続文字列")) {…処理…} この時、ふと、 「SqlConnectionクラスって、IDisposableインタフェイスを実装してるよね?」 と思い、継承関係を追いかけてみると、親クラスであるDbConnectionが、 IDisposableインタフェイスを継承していました。 「あ〜、ここで継承してるのね。」 「Disposeメソッドを定義してるのが、SqlConnectionクラスなんだ。」 と思ったのですが、SqlConnectionクラスのDisposeメソッドを見てみると protected override void Dispose(bool disposing) となっていました。 「あれ? "void Dispose()" じゃないの?」 と思い、引き続き調べてみると、DbConnectionクラスの親クラスである Componentクラスもまた、IDisposableインタフェイス継承しており、 ComponentクラスにてDisposeメソッドが定義されていました。 ComponentクラスでもIDisposableインタフェイスを継承しており、 Componentクラスを継承しているDbConnectionクラスもまた、IDisposableインタフェイスを 継承していることがとても、不思議でした。 なぜ、DbConnectionクラスでもIDisposableインタフェイスを継承する必要があるのでしょうか? 以上、おサルな私に何かアドバイス頂けたら幸いです。
- 327 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:10:18 ]
- DbConnectionはDisposeには手を出してないよ
Componentがpublic void Dispose()とprotected virtual void Dispose(bool)を定義 Dispose()およびファイナライザ内でDispose(bool)を呼び出す DbConnectionは何もしない SqlConnectionがprotected override void Dispose(bool)をオーバーライド クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる
- 328 名前:326 mailto:sage [2009/01/08(木) 08:26:19 ]
- >>327
>クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる この1行で全てが解決しました。 目から鱗です。 ありがとうございました。
- 329 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:26:05 ]
- Objectとobjectって同じもの?Stingとstringって同じもの?
- 330 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:54:57 ]
- System.Objectとobjectは同じもの
System.Stringとstringは同じもの
- 331 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:59:58 ]
- global::System.Object とすればさらに正確か
- 332 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 02:34:19 ]
- C#やり始めて3年、大体空気するように使えるようになったけれど、F#今初めてどのぐらいでこの域に達するかな・・・
やっぱり日々の仕事で使ってかないと上達しないんだろうな・・・
- 333 名前:デフォルトの名無しさん [2009/01/09(金) 12:21:41 ]
- >>332
プログラミング言語なんてひと月ふた月でフルに立ち上がらないようなやつは だめだろ
- 334 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 12:24:23 ]
- F#が日々の仕事で使えるわけないがな
- 335 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:37:02 ]
- >>333
ひと月ふた月でフルに立ち上がるってどんな超人だよw そんな奴いるんだったらうちで月50万で即雇うよ。 住所と名前教えてくれ。 フルってC#で可能な事なら何頼んでもすぐ完成させてくれるって事だよな? マジで雇う。
- 336 名前:デフォルトの名無しさん [2009/01/09(金) 15:06:09 ]
- VC#2008EE なんですけど、
コンパイルのたびに前回のコンパイルなどの知識を生かしてPGO(?)、最適化みたいなことって やっているんですか? 意味不明な質問ですいません
- 337 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:11:23 ]
- >>335
派遣会社にでも相談したら? 月150万出せば、貴方の言う超人レベルの人が来てくれるよ。 >>336 ただの最適化しかしてくれないよ。 PGOみたいな機能はない。
- 338 名前:336 [2009/01/09(金) 15:15:02 ]
- ということは、
同じソースコードを同じパソコンでコンパイルしたら大体同じ速度ってわけですか。 (最適化オプションが一致なら) しかしそれがどうもそうじゃない気がして気持ち悪いのですが。 なにかありがちな勘違いとかないですか?
- 339 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:17:22 ]
- コンパイル時に行われる最適化はローカルな範囲だけ。
どこでコンパイルしても出来上がるILは一緒。 インライン展開が行われたりするのは実行時。
- 340 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:21:30 ]
- 気がすると言われても困る
dllのキャッシュとかその辺のレベルの話もあるわけだし
- 341 名前:336 [2009/01/09(金) 15:23:53 ]
- >>339 さん
ありがとございました。
- 342 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:25:57 ]
- VS2008 .net3.5SP1
SmtpClient を使用してメールを送信しようとしています。 2つのLANカードがささってるPCから送信する場合、 指定のLANカード経由でメールサーバーに接続する プロパティや方法などありますでしょうか?
- 343 名前:336 [2009/01/09(金) 15:28:48 ]
- >>340 すいません、こういう質問のしかたはよくないな、と思ったんですが。
結果とって計ったりしなかったもので。
- 344 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:32:57 ]
- >>342
ServicePointプロパティの解説
- 345 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:54:50 ]
- >>344
ServicePoint.BindIPEndPointDelegate プロパティ でいけそうです。ありがとうございます。
- 346 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 16:08:41 ]
- WebBrowserでリンクをクリックした時に、リンク先がpdf等だった場合
IEとかのブラウザが立ち上がってしまうんですが、これを直接pdfのプログラムで開きたい場合は どうしたらいいんでしょうか。
- 347 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 16:46:05 ]
- NewWindowイベントを持つ継承クラスを作ってイベントでNewWindowをキャンセルさせて、DLしたファイルを直接開く。
- 348 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 20:49:08 ]
- 超人レベルPGが月50万てw
駄クラスでもフリーランスで70万くらいは取ってるだろ。そんな安い金で来るわけねーだろw
- 349 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:04:34 ]
- >>335のレベルが推して知れるな
- 350 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:05:52 ]
- 50万て。何重に搾り取られたゴミ派遣だよ…
- 351 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:58:52 ]
- マ版へ池
- 352 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:52:33 ]
- フリーと会社で雇うのは全く違う。
税金とか保険とか退職金とかあるだろ。
- 353 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:53:36 ]
- www.atmarkit.co.jp/fdotnet/dnfuture/vs10net4_01/vs10net4_01_01.html
Parallelクラスいいな・・・
- 354 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:35:06 ]
- >>351
- 355 名前:デフォルトの名無しさん [2009/01/10(土) 16:22:42 ]
- FormのPaintイベントで
DrawImageをしているのですが、 たまに Formの上にウィンドウを表示しているところにも DrawImageの一部が描画されてしまいます。 これはいったい何が原因なのでしょうか? ウィンドウを再描画するようにするしか方法はないのでしょうか?
- 356 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:26:21 ]
- ウインドウってなに
- 357 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:35:24 ]
- MDI?
- 358 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:35:47 ]
- 液晶が焼きついたんだろ
- 359 名前:355 mailto:sage [2009/01/10(土) 19:04:50 ]
- >>358
それかも。 違うハードで試してみます。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:07:29 ]
- 何という釣り
- 361 名前:デフォルトの名無しさん [2009/01/10(土) 21:02:12 ]
- VS2005なんですけど
プロパティの自動作成機能ってなかったですっけ? public clas MyClass { public string プロティ って書いて自動でget,set作る機能です。
- 362 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:07:20 ]
- prop
- 363 名前:361 mailto:sage [2009/01/10(土) 21:29:44 ]
- thx
- 364 名前:デフォルトの名無しさん [2009/01/11(日) 03:29:41 ]
- 質問です。
CのヘッダーファイルからDllImport行を自動生成するツールってありますか? もしあるようでしたら、場所を教えて欲しいです。
- 365 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:31:38 ]
- ピンボケドトネト
- 366 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:21:44 ]
- >>364
ヘッダファイルからじゃないが msdn.microsoft.com/ja-jp/magazine/cc164193.aspx の siggen download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe
- 367 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:28:44 ]
- >>366
それちゃんとヘッダファイルから生成してくれるよ
- 368 名前:デフォルトの名無しさん [2009/01/12(月) 20:22:14 ]
- ジェネリッククラスについていまいち理解できませんのでちょっと教えてください。
クラス内で扱うオブジェクトをDisposeする必要がある場合、 型パラメータにIDisposableの制約を与えます。 新しくクラスを作成するときに、上記のような制約のあるジェネリッククラスを作ればよいのか、 IDisposeインターフェースを継承したクラスを使えばよいのかの判断がわかりません。 継承されたクラスを作るなら作成されたクラスはIDisposeを求められる引数などに使えます。 ジェネリッククラスだとそういうケースでは使えないが、 パフォーマンスや、明示的に型を設定できることが便利です。 インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスを 比較した場合、こんな考えでよいでしょうか? なんか自分の理解が足りていない気がしましたので質問させてください。
- 369 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:28:36 ]
- >>368
質問の意図がわからないし、俺じゃなくてもわかる人間がいる気がしない。 そもそも比較の対象になりようがない二つを比較している気がするんだが
- 370 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:31:18 ]
- IDisposable はクラスを Dispose 可能にする(Dispose を強制する)ためのインターフェイスであって、
ジェネリックスとは直接関係ない。 クラスの機能としてジェネリックスが必要なのか? をまず考えるべきじゃね?
- 371 名前:368 mailto:sage [2009/01/12(月) 20:46:15 ]
- >>369-370
お返事ありがとうです。 インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスは 直接なんの関係もない、ということですね。 いろいろな型として振る舞わせたい場合はジェネリッククラス、 そんな必要はない場合はインターフェースの継承。 ジェネリッククラスの機能が導入され、Hashtableクラスはジェネリッククラス版ができ、 進化しました。 ということはジェネリッククラス>通常のクラス と思ったわけです。 ジェネリックの機能の追加によるメリットを受けることができるのは HashTableクラスのようなobject型としてデータを保存し、利用時にキャストしていたような クラス、ということでしょうか? そんな動作をしないようならジェネリッククラスは特にいらない、という解釈です。 まだ考えへんですかね?
- 372 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:51:45 ]
- >>371
型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが。 全く別のものなのに、なんで比べてんの?
- 373 名前:368 mailto:sage [2009/01/12(月) 20:59:32 ]
- >>372
>型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが この機能考えてませんでした。 だとしたら極論ジェネリッククラスにしておくに超したことはないということでしょうか? リソースやらなんやらで多少はデメリットあると思いますが。 とりあえずジェネリッククラスで実装しておいて利用時に型を限定できますので。 全く別物とは言われるのですが自分の中では未だに ジェネリッククラス>そうじゃないクラス に見えてしまっています。 結論を言うと皆さんの言うように別物なんでしょうが、 まだ理解ができていません。 いろいろなところで解説をみると「この場合ジェネリッククラスは便利」という内容は見かけますが、 「この場合ジェネリッククラスにすると変」みたいな例ありませんか?
- 374 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:01:54 ]
- Form クラスをジェネリックスで実装するバカはいないだろJK
- 375 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:14:20 ]
- つかジェネリッククラスはメタクラスなわけで、クラスとはレイヤが違うと何度言われれば(ry
- 376 名前:368 mailto:sage [2009/01/12(月) 21:17:16 ]
- >>374
例えばこんなクラスですよね? class MyClass<T> where T:Form 実際書いてみました。 利用時にTに設定するクラスが思いつきません。 >>375とも通じますが、つまり他のクラスを管理するようなクラスでないと ジェネリックにする意味はない、ということでしょうか?
- 377 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:28:43 ]
- つか、コンテナ以外の用途って何かあるの?
- 378 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:32:22 ]
- IEquatable<T>のようなインタフェース
- 379 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:36:16 ]
- へー。勉強になった。実装クラスでは何かある?
- 380 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:42:40 ]
- Func<..> やら Linq の中身(処理の連結連結)でも使いまくり
だろ。
- 381 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:49:54 ]
- ほー。勉強になった。LINQ とかあんま使ってないからなー。
- 382 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:24:49 ]
- まーこれも型推論の出来ない静的であるせいなんだが。
- 383 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:36:28 ]
- ジェネリックだとHoge<A>とHoge<B>は全くの別物になるからかえって不便になる場合がある
そういうときはわざわざ非ジェネリックのIHogeを定義してHoge<>に実装させたりする
- 384 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:42:12 ]
- C# 4.0 でその手間もいらなくなるかもね
- 385 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:46:08 ]
- 値型は反変ダメだからやっぱり必要だよ
- 386 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 23:34:41 ]
- string配列をSettingsクラスを使って保存したいんだけど、型を選ぶところにstring[]が無いんだけどどうすればいいの?
- 387 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:19:56 ]
- 手で入力する
- 388 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:21:15 ]
- string[]をCSVに変換して保存する方法あります?
CSVからstring[]に変換することも視野に入れて
- 389 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:24:28 ]
- for/string.split
- 390 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:32:17 ]
- >>382
型パラメータなんて推論しまくって省略されまくりだろ。 パラメータ化しなければならないってならそうだけど この方式が安全ではあるので仕方ない
- 391 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:32:33 ]
- 単なるsplitはまずい
- 392 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:51:46 ]
- 結局グーグルにかけたら↓にデザイナに表示されない型の保存についてのやり方が書いてあったwww
dobon.net/vb/dotnet/programing/mysettings.html
- 393 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:54:26 ]
- CSVのパースって、本当に汎用・厳密にやろうとするとすげー面倒だよな
だから、CSV出力・パーズ専用ライブラリを探すか作るかしなくちゃならない。 splitが使えるのは、「データに絶対にカンマが入らない」 とか、「絶対に改行が入らない」 とか、そういう仮定がいくつかおける場合だけだと思う。 C# CSVでググればいくつか出てくるから、ライセンスとかと相談しながら 選ぶか作るかすればいいんじゃね
- 394 名前:デフォルトの名無しさん [2009/01/13(火) 05:14:59 ]
- Visual BasicからC#に変える利点ってどのようなものがありますか?
- 395 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 05:20:50 ]
- エクスプローラでフォルダを開きたいのですが、
System.Diagnostics.Process.Start("EXPLORER.EXE", path); を使うとウィルスバスターに警告されてしまいます。 もう少し安全な方法はありませんか?
- 396 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 06:00:36 ]
- 元々非常に安全なので心配は無用です。
- 397 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 07:17:48 ]
- ASP.NETを勉強中ですが、疑問に思ったことがありまして…。
System.Web.UI.Pageにはプロパティーとして「Page」があると思うのですが、 どうしてわざわざ、このようなプロパティを用意しているのでしょうか? System.Web.UI.Pageクラスを継承しているのだから、「this」でいいとおもうのですが…。 ※System.Web.UI.Pageクラスを継承した独自クラスで Pageプロパティとthisを比較したのですが、同じインスタンスでした。 恐らく、何かとても深い意味があるのだと思うのですが、私には思いつきませんでした...orz...
- 398 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 07:23:01 ]
- 先祖のControlがもってるんだから仕方ないだろ
- 399 名前:397 mailto:sage [2009/01/13(火) 07:29:52 ]
- >>398
レスありがとうございますm(_ _)m そうなのですか…。 あまり、深い意味はないということなんですね…。 ありがとうございましたm(_ _)m
- 400 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:15:32 ]
- >>399
Page以外のControlもPageプロパティを持ってて、その場合Pageプロパティ != this
- 401 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:48:35 ]
- 正規表現で半角記号かどうか判断するにはどうしたらいいんでしょうか?
- 402 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:51:22 ]
- 正規表現 半角記号 でぐぐるといいよ
- 403 名前:397 mailto:sage [2009/01/13(火) 10:04:40 ]
- >>400
レスありがとうございますm(_ _)m 参考にさせて頂きます それで、引き続き調べてみたのですが、また1つ疑問が…。 [前提] System.Web.UI.Controlクラスに定義されている「Page」プロパティは System.Web.UI.Pageクラスだと思います。 [試したこと] マスターページを使用してaspxを作成しています。 マスターページ→OrgMasterPage : System.Web.UI.MasterPage コンテンツページ→OrgPage : System.Web.UI.Page ※OrgMasterPageクラスにOrgPageを突っ込んでいます <結果1> OrgMasterPageクラスにて this.Equals(this.page) → true <結果2> OrgPageクラスにて this.Equals(this.page) → true となります。 [不思議におもったこと] [前提]にもあるとおり、「Page」プロパティは、System.Web.UI.Pageクラス。 OrgPageクラスは、System.Web.UI.Pageクラスを継承している為、<結果2>となるのはわかります。 しかし、OrgMasterPageは、System.Web.UI.MasterPageクラスを継承しています。 なのに、<結果1>となります。 System.Web.UI.MasterPageクラスは、System.Web.UI.Pageクラスを継承していないのにどうして 「Page」プロパティ(System.Web.UI.Pageクラスインスタンス)に設定できてしまうのでしょうか;;
- 404 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:14:52 ]
- >>393
vbにはcsv専用のparseがあるんだが。 C#からも使えるよ。
- 405 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:34:05 ]
- なんとなく"LINQ to CSV"でぐぐってみたら、
www.codeproject.com/KB/linq/LINQtoCSV.aspx ちゃんと作りこんであるのあるじゃん。 ライセンスもCPOLなんで、たいてい大丈夫。
- 406 名前:364 mailto:sage [2009/01/14(水) 01:50:29 ]
- >>366
やっと試せたけど、これスゲー!! いいもん教えてくれてありがとう!
- 407 名前:397 mailto:sage [2009/01/14(水) 01:57:54 ]
- 大変失礼致しました。完全なる間違いです。
OrgMasterPage.Pageプロパティには、OrgPageクラスインスタンス※1が設定されていました。 大変申し訳ありませんでした。 ※1…正確には、自動生成されるコードに定義されているOrgPageクラスを継承した クラスインスタンスです。
- 408 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 02:22:27 ]
- タブコントロールのボタンをドラッグドロップする方法ってありますか?
- 409 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:08:13 ]
- FormView使って表形式の編集画面作ってるんだが、バインドした
データによってある項目を出す、出さないを行いたいんだけど テンプレートベースのFormViewにはちょっときついのかな。 インラインスクリプトで <% if (Eval("hoge").equals("foo")) { Response.Write("<TR>・・・</TR>"); } %> みたいに書ければ良いんだけど、バインドデータを呼び出せないから 当然エラーだし。 なんか、根本的に間違ってるのかな。
- 410 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:34:05 ]
- C#というより、.NET frameworkの質問なのですが、
Buttonコントロールで、 Image に画像を設定し、 AutoSize を true、 AutoSizeMode を GrowAndShrink に設定すると、 ImageAlign が MiddleCenter になっているにもかかわらず、 画像がボタンの若干右下に数ドット寄って表示されます。 ちゃんとボタンの中央に表示する方法はないでしょうか?
- 411 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:49:36 ]
- ならんけどな、、うちがVistaだからか?
- 412 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:50:58 ]
- Windowsサービスを作成しようとしています。
サービスをインストールするためにInstallUtil.exeを使わなければいけないとわかりました。 ここ見てみたのですが、 msdn.microsoft.com/ja-jp/library/aa984379(VS.71).aspx コマンドプロンプトで「installutil.exe」と打ってもそんなコマンドない、と言われます。 私の環境では「C:\Windows\Microsoft.NET\Framework\v2.0.50727」ここにInstallUtil.exeがあるので 当然カレントディレクトリがここでないとコマンドが通らないのですが、 これってみなさんそうなんでしょうか? いろいろサイトを見るとなんかこのパスが環境変数Pathに設定されているかのような 振る舞いみたいに見えるのですが。。
- 413 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:51:59 ]
- パスが通ってないのが通常でしょう
- 414 名前:412 mailto:sage [2009/01/15(木) 23:55:24 ]
- >>413
やっぱりそうですか。 では自分でパス通しときますね。 ありがとうございます。
- 415 名前:412 mailto:sage [2009/01/16(金) 00:21:14 ]
- おかげさまでサービスとしてインストールできたので
早速テスト的にOnStartに以下のコードを書いてサービスを開始しました。 using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) using(StreamWriter sw=new StreamWriter(fs)) { sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart")); sw.Flush(); sw.Close(); fs.Close(); } するとログに「2009/01/16 00:22:34 OnS午ar午」という化けた内容で書き込まれたのですが これってどうしてでしょうか? あとちょっと別件ですが、上記のコードにファイルオープン時のエラーをcatchするために try,catchを入れたいのですが、こういうusingを使っている時って どの行にtry,catchを書くべきでしょうか?
- 416 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 00:44:28 ]
- >>415
ただ単に”OnStart"の場合はどう? usingはdisposeをfinallyで実行してくれるだけ。 using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) { using(StreamWriter sw=new StreamWriter(fs)) { try { // 処理する } catch () { // 例外処理 } } }
- 417 名前:412 mailto:sage [2009/01/16(金) 01:13:44 ]
- >>416
返答ありがとうございます。 "OnStart"のみの出力では「OnS午ar午」と出力されてしまいました。 try,catchについて 今回の件ですとファイルオープンのエラーをキャッチしたいので書くとすればこうなりませんか? 少なくともFile.Openはtryブロックの中に書かないといけないと思うのですが。 try { using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) { using(StreamWriter sw=new StreamWriter(fs)) { // 処理する } catch () { // 例外処理 } だとすると今度はusing使ってるからdisposeしてくれるはずですし、 catchの例外処理って大して書くことない? と思って変に感じました。
- 418 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:29:14 ]
- >>415
Console.WriteLine(DateTime.Now.ToString("tt")); => "午前" の1文字目 sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart")); => sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")+"\t OnStart"); 釣りじゃないよね
- 419 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:32:00 ]
- つりでした
- 420 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:35:23 ]
- やっぱりそうか・・・
orz
- 421 名前:412 mailto:sage [2009/01/16(金) 01:45:35 ]
- >>418
!!! てっきり文字化けと思って深く考えすぎました。。 ありがとうございます。 >>417のusingの話はどうでしょうか
- 422 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 02:11:25 ]
- >>421
エラーの発生を検出する必要があるため 417の通り、全体を try 〜 catch() で囲む必要はあると思います using を使う場合はリソースの後処理が不要になるというだけですね リソースの後処理は一般的に finally 節でおこなうことが多いため、 このfinally 節部分が省略できることになります ただし、もともとcatch節で書く処理(ログを吐くとかエラーコードを復帰値にいれて返すとか) は必要でしょう
- 423 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 02:55:06 ]
- フリーのプロファイラを検索するといくつかあるんですが、
お勧めはどれですか?ざっとググった範囲だと Prof-It for C# NProfiler nprof などが見つかりましたが
- 424 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:06:54 ]
- 携帯サイトとPCサイトを1つのaspxで対応させたいと思っています。
例えばPHPであれば、 1.クライアントからの要求に対する処理を行う。 2.出力データを編集する。 3.クライアントに応じたテンプレートhtmlを読み込む。 4.読み込んだテンプレートhtmlに、編集されている出力データを設定。 5.クライアントへ返す。 と、いった感じでPHP自体には、HTMLのコーディングを一切行わず、 クライアントに応じたテンプレート化されているファイルを読み込み、 可変部分となる出力するデータを埋めていく。 この際、テンプレートをクライアントに合わせたファイルを使用することで、 1つのPHPで、クライアントに応じたHTMLを返すようなことをしていました。 最近、勉強し始めたASP.NETでは、 「このようなやり方はやらないのかな・・・。」 と、感じました。 通常、1aspxで数種類のhtmlを出力するような場合、どのような方法があるのでしょうか?
- 425 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:12:03 ]
- Enumを|で連結されてる条件の中に一つの要素(Enum)が入ってるかどうか調べるにはどうすればいいんでしょうか?
- 426 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:30:06 ]
- 言ってる意味がよくわからんが
if((foo & Enum.Hoge) != 0) これが知りたいのか?
- 427 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:34:14 ]
- >>426
if((foo & Enum.Hoge) == Enum.Hoge) の方が良くないか?
- 428 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:08:58 ]
- 良いというか、>>426は間違い
Keysとか、こんなのもあるからな [Flags] enum Enum { None = 0, A = 1, B = 2, AB = A | B, } void Hoge() { var e = Enum.A; if((e & Enum.AB) != 0) Console.WriteLine("ABだぜ"); // NG }
- 429 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:14:32 ]
- そうだった
そういやそれでバグ出した事あったわ
- 430 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:38:24 ]
- ContextMenuStripに自作コントロール乗せるのが出来ないのですが、どうしたらいいのでしょうか?
msdn.microsoft.com/ja-jp/library/9k5etstz.aspx を参考にしたのですが 標準で提供されているコントロールの場合は表示できるのですが、独自コントロールの場合細い線だけが表示されます
- 431 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:57:32 ]
- 何だっけ・・・レイアウト方面も実装しないとサイズが
0 みたいになったような
- 432 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:38:05 ]
- TreeViewのパスってもしかしてスペース入ってると駄目なんすか?
- 433 名前:430 mailto:sage [2009/01/18(日) 16:56:52 ]
- MinimumSizeを指定することにより解決しました
- 434 名前:412 mailto:sage [2009/01/18(日) 18:54:18 ]
- >>422
なるほど。 usingを使えばリソースの解放に関しての記述は必要なくなりますが、 おっしゃるとおりエラーが発生したとき他にも処理がありますね。 ありがとうございました。
- 435 名前:デフォルトの名無しさん [2009/01/18(日) 22:07:38 ]
- InstallUtil.exeを使って作成したサービスをインストールしました。
サービスの管理コンソールより開始を選択するとこのエラーが発生しました。 ローカルコンピュータのService1サービスを開始できません。 エラー3:指定したパスが見つかりません。 切り分けたところ実行ファイルがネットワークドライブに配置されていることが問題のようなのですが、 なぜネットワークドライブだと動作しないのでしょうか? ちょっとスレ違いでしょうか? 動かない理由が.NET Frameworksのセキュリティ上の理由かもしれないと思いましたので こちらで質問させていただきました。
- 436 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:09:39 ]
- サービスの実行アカウントは? そのアカウントはネットワークドライブへのアクセス権限を持ってる?
- 437 名前:435 mailto:sage [2009/01/18(日) 22:17:38 ]
- アクセス権は問題ないと思います。
テスト的にeveryoneフルコントールを付与しましたが同じでしたので。 そこで.NET Frameworksのセキュリティを疑い出したわけです。
- 438 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:22:35 ]
- caspolがそうなってるんだもん
- 439 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:23:11 ]
- Local System Account は(基本的に)ネットワークリソースにアクセスできない。
つーか、サービスなら普通にローカルコンピュータ上においとけよ。
- 440 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:25:55 ]
- everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい。
あとは.NETのバージョンだな。3.5SP1か3.0SP2か2.0SP2なら、 ローカルイントラゾーンに限り起動できる。
- 441 名前:435 mailto:sage [2009/01/18(日) 22:37:30 ]
- >>439
もちろんそうなのですが、VSの作業ファイルがネットワークドライブに配置されていますので。 >>440 >>ローカルイントラゾーンに限り起動できる。 こちらは.NET Frameworksのセキュリティ設定でなんとかなりそうです。 >>everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい これ知りませんでした。 eveyoneってほんとに何でもと思ってました。 これが原因っぽいですね。 解決できてうれしいです。 今回はビルド後のコマンドでローカルにコピーすることにします。 ありがとうございました。
- 442 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:48:13 ]
- シンボリックリンクでローカルディスクにあるように見せかければ
ネットワーク上にあっても大丈夫だったりする
- 443 名前:435 [2009/01/19(月) 00:14:14 ]
- >>442
シンボリックリンクってWindowsでいうところのショートカットですよね? ショートカットをサービスに登録ってできましたっけ? ここで質問させてもらいながらWindowsサービス作ってるのですが、 デバッグできなくて困っています。 ビルド→InstallUtil.exeでサービスを実行→サービスコンソールからサービスの開始 →VS2005からアタッチするとよい、ということがヘルプに書いているのですが、 どうもブレークポイントで止まりません。 自分の予想ではサービスに登録した実行ファイルが「\bin\Release」に作成されたもの、 つまりリリースビルドであることが原因と思っています。 デバッグビルドで実行ファイルを作成するにはどうすればよいでしょうか? 「\bin\Debug」に作成されるのかと思ったのですが、アセンブリ名.vshost.exeというファイルがあるだけで見つかりません。
- 444 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:19:21 ]
- >>443
442が言っているのは、Vistaで搭載された本物のシンボリックリンクだと思う。
- 445 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:20:58 ]
- シンボリックリンクってVistaの新機能じゃなくてNTFSの機能だったと思ったけど。。
- 446 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:33:21 ]
- もう一度デバッグビルドし直せよ・・・
- 447 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:35:56 ]
- >>445
VistaのNTFSドライバではじめてシンボリックリンクを解釈するようになった、と言えばいいか。
- 448 名前:435 mailto:sage [2009/01/19(月) 00:38:29 ]
- >>446
デバッグビルドってどうやるんでしょうか?(汗 昔はツールバーらへんで都度切り替えてビルドしていた記憶があるのですが、 今使ってるVS2005ではなくなっているみたいなのですが。。 おかしいな、とは思ったのですが今回のように作成物がサービスでなければ F5キーでブレークポイントで止めれましたし、ビルド内容を変更するようなところも見あたらなかったので 特に意識していなかったのですが。。
- 449 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:40:09 ]
- プロジェクトのプロパティでも見てみろよ・・・
- 450 名前:435 mailto:sage [2009/01/19(月) 00:46:31 ]
- >>449
やっぱりそこですよね。 一番に見たのですがどれかわかりません。。 しいて言うなら「アンマネージドコードデバッグを有効にする」 というのがありますが、アンマネージド、なので関係ないように見えますし。。 低レベルな話で申し訳ないです。
- 451 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:49:19 ]
- プロジェクトのプロパティ、[ビルド]-[構成]
- 452 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:50:15 ]
- ツール→オプション→プロジェクトおよび〜→全般→ビルド構成の詳細を表示
- 453 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:56:32 ]
- >>450
あと、やっぱりツールバーにビルド構成のドロップダウンを追加しておいた方がいいよ。 これ2005からデフォではツールバーに表示されなくなったのが個人的には 大いに謎なんだけど。
- 454 名前:435 mailto:sage [2009/01/19(月) 01:04:00 ]
- >>451
すみません、見あたりません。。 >>452 おおお!! これです! ビルド構成の詳細を表示、にチェック入れたら メニュー「ビルド」配下に「構成マネージャー」が表示されるようになり、 ここで切り替えることができました。 これを使うとブレークポイントで止めることができました。 今まで知りませんでした。 ありがとうございます。 しかし、構成マネージャーってオプションでチェック入れないと表示されないんですね。 すごく重要に思えるんですが。 しかし構成マネージャーの規定値がReleaseビルドなので 今までずっとReleaseビルドしてたはずなのですが、 なんで今までサービスアプリケーション作成以外の場合この設定でブレークポイントで止めれてたのでしょうか?
- 455 名前:435 mailto:sage [2009/01/19(月) 01:07:45 ]
- >>453
すみません、書き込み時の時差で見逃しました。 同意です。 昔ツールバーに表示されてましたよね。 あれ? 今ツールバーに追加しようとしたのですが、 選択項目にないのでVS2005では追加できなくないですか?
- 456 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 01:50:09 ]
- できるよ。
- 457 名前:435 mailto:sage [2009/01/19(月) 02:17:32 ]
- >>456
あれ、ほんとですか ツールバー右クリック→ユーザー設定 →ツールバータブ の中にそれっぽいのはないので、ここではないですよね?
- 458 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:29:40 ]
- Directory.GetDirectoriesでとったディレクトリをForeachしてるんですが、
なぜかExistsがFalseになるフォルダがあります。 最後尾にスペース入ってるそうなるようなんですが、防止する方法ってあるんでしょうか?
- 459 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 10:54:37 ]
- バグっぽい仕様みたいだね。
ディレクトリなら末尾に \ を付加してやるといいみたい
- 460 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:39:11 ]
- Visual C# 2008 Express Edition の相談もここでよいのでしょうか?
- 461 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:44:19 ]
- それはどうかな
- 462 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:46:38 ]
- IDE自体の問題ならVSスレが立ってたはずだが
IDEで作成してるものの質問ならここかもな
- 463 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:49:10 ]
- で、質問はなにかね?
- 464 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:09:54 ]
- 460ではないが質問です。
C#で1つの長い文字列を複数行に分けて書くのってどうしたらいいんでしょう? C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になるけど、 同じことをC#でやったら怒られました。
- 465 名前:464 mailto:sage [2009/01/19(月) 18:12:48 ]
- ググったらあっさり見つかったorz
行末に+を書けば良かったのね。
- 466 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:53:00 ]
- >>465
string s = @"こんなことも かけちゃうの しってる かい?";
- 467 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:57:29 ]
- それとついでだ、これも覚えとけ。
@"" だと改行無視、\エスケープなしな全部 入るヒアドキュメントな感じになる。 string hoge = @"1 行目 2 行目"; string path = @"C:\Program Files\Hoge\hoge.exe"; string foo = @"ダブルクオート「""」はこのように。";
- 468 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:29:06 ]
- >>466
それだと複数行文字列になる
- 469 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:30:47 ]
- >C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になる
これはどうかと
- 470 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:09:25 ]
- Cには文字列の+演算子なんて無いから "abc" + "def" と書けなくて
文字列リテラルの連結は "abc" "def" みたいに書くからね。 C#にもその書き方を残しても良かったと思うが、+演算子を強要した方が 意図が明確でいいか。
- 471 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:10:55 ]
- どうかと、って何だ?当然のことだが…
- 472 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:11:44 ]
- 行ごとでなくてもいいな。
- 473 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:32:52 ]
- トライグラフに困って""で切ったり「したっけなw
- 474 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:48:39 ]
- >>468
ならないよ
- 475 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:48:42 ]
- >>467
> string hoge = @"1 行目 > 2 行目"; これだと「目」と「2」の間にある改行文字もhogeに含まれるから >>464のニーズには応えられないんじゃない?
- 476 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:11:58 ]
- 用途にもよるんじゃないかな。
- 477 名前:デフォルトの名無しさん [2009/01/21(水) 01:55:36 ]
- 次のコードの意味がわからなくて悩んでいます。
1:EventLogPermission e = new EventLogPermission(PermissionState.Unrestricted); 2:e.PermitOnly(); ヘルプにかかれていることを自分的に以下のように解釈しました。 1で後で利用するセキュリティ制御のためのインスタンスを作成します。 2で規定のアクセス権のコンストラクタの引数で指定されたもののみでしか アクセスできないように縛りをかけます。 今回のケースでは「PermissionState.Unrestricted」が指定されているので .NET Frameworksのセキュリティ設定でフルアクセスの場合、 さらにフルアクセスの縛りを追加する形になり、結局セキュリティレベルは変わらない、と解釈しました。 ですがこのコードの後にイベントのアイテムを読み取るコードを書くと アクセス許可でエラーが発生してしまいます。 意図した結果と違うので自分が勘違いしていると思うのですが どの辺がおかしいでしょうか。
- 478 名前:デフォルトの名無しさん [2009/01/21(水) 02:49:00 ]
- C#が.NET Frameworkでなければならない理由って何なの?
むしろBorlandDelphiVCLみたいな感じのほうがよかったんじゃないの? Linux版の.NET Frameworkが普及すればLinuxの利用者が増えて Windowsの売り上げが下がるよね。 おそらくWindowsはカーネルごと新しくなることが あるからそれを意識してるんだと思う。 つまりXPとVistaをMacやLinuxと同じように まったく別のOSと捉えているってことだよね。 正解でしょ?
- 479 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:11:57 ]
- ぜんぜん違うだろw
- 480 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:32:57 ]
- >>478
お前は何を言っているんだ
- 481 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:36:30 ]
- >>478
前後のつながりがまったくない
- 482 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:47:54 ]
- 違うにも甚だしい
- 483 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:36:25 ]
- >>477
その考えであってると思うけど、別に原因があるのでは。 再現性のあるコードアップしてくれたら調べるよ。
- 484 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:48:43 ]
- >>478
一行目から間違ってるだろw
- 485 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:51:15 ]
- むしろ生まれてきたこと自体間違い
- 486 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:50:14 ]
- 生まれてすみません
- 487 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:13:51 ]
- 俺もすいません
- 488 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:16:51 ]
- お父さん、お母さん、生んでくれてありがとう。
- 489 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:55:17 ]
- >>478
> カーネルごと新しくなること それは結構当たっていると思う。 ただし、XPとVistaではなく、x86とx64とIA-64とMobile/CE系各種のようなアーキテクチャの違い。
- 490 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:00:52 ]
- .NETはActivXやCOMの延長線上のものなんだっけか?
- 491 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:32:12 ]
- VS2010のMEF標準搭載で、やっとCOMが.NETで置き換わりそうな雰囲気になってきたな
- 492 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:36:30 ]
- MEFって何よ
- 493 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:00:56 ]
- Managed Extensibility Framework
マネージコードでプラグイン書けるようにするための新しい.NETのライブラリ VS2010にも使用される
- 494 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:18:37 ]
- これはうれしいよね
|

|