1 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:53:36 ] 前スレ VB.NET質問スレ(Part28) pc11.2ch.net/test/read.cgi/tech/1229695062/l50 テンプレは>>2 〜
267 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 07:45:07 ] OpenFileDialogをCancelしたときはExitSubしといた方が良いとおも
268 名前:NAS6 ◆kl1JWE6W72 [2009/03/08(日) 08:30:38 ] >>267 対応しました
269 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:34:05 ] DataViewにはRawのフィルターはあるけど とくていの列だけテーブルから持ってくるメンバが用意されてないようだが
270 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:32:50 ] >>265 だから、恐らく大昔のMS BASIC時代からの流れ。 この仕様を使ってif文を使わずに計算の結果を変えたり条件分岐につかったり したんじゃなかったかな。 もっとも、Trueは-1(0の1の補数)じゃなくて1だったような気もしたが。
271 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 16:13:27 ] >>270 >もっとも、Trueは-1(0の1の補数)じゃなくて1だったような気もしたが。 BASICは昔から-1、1はC言語でしょ VB.NETではTrueを1に変換することも出来るけどね(Convert.ToIntとか) それと、<,>,<=,>=などは+,-,*,/と同じ演算子だから、すべて演算した結果が 真か偽かで条件分岐してるだけなんだけど
272 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:42:41 ] >>271 おいおいcにはtrueって概念はないよw これ有名な話。cで決まってるのは偽が0に評価されるってことだけ。 Cのif文は、要するにJZ(Jump if Zero)だからね。 それと確かに昔のMS系のBASICの真値は1だった記憶がある。 まあどうでもいいか
273 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:05:20 ] vb.netもbrfalseだよ
274 名前:デフォルトの名無しさん [2009/03/10(火) 01:58:14 ] CreateObjectで起動したEXCELプロセスが、VBアプリ終了しても終わらないんですが、なぜかな?
275 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 04:11:45 ] Marshal.ReleaseComObject で検索をクリック!
276 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 06:56:08 ] >>272 trueは概念ではなく値。 そして現在のCには_Boolという型が存在する。 まったくcase-insensitiveな奴にはロクな奴がいないな。
277 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:29:15 ] A=true Cint(A)は? B=folse Cint(B)は?
278 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:38:55 ] >msdn.microsoft.com/ja-jp/library/ae382yt8.aspx MSはその仕様を「問題」と認識してるらしいよ
279 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:02:57 ] >>278 >「問題」と認識してるらしいよ 何処をどう読んだらそうなるわけ?
280 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:06:21 ] >ここでは、組み込みデータ型の演算で起きる一般的な問題についていくつか説明します。 これじゃね?
281 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:11:26 ] で、解答用紙はどこに提出すればいいのでしょう
282 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 17:57:08 ] 問題を起こす主体は「間抜け」、ということで宜しいか?
283 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:15:20 ] 自作の2つのアプリがあって、 1つの方でもう一方を起動すると 実行結果が返ってくるようにしたいのですが どんな方法で可能でしょうか?
284 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:17:37 ] バッチ処理的なもんならProcess使って標準出力でいいんじゃね
285 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:18:32 ] 標準入出力を使う 別プロセスにする必要がないなら もう一方のアプリをdllと同じように参照してその中のメソッドを直接呼ぶこともできる いちばんスマートなのは共通部分をdllにすること
286 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:55:41 ] レスありがとうございます。 DLLについて調べてみることにします。
287 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:14:23 ] >もう一方のアプリをdllと同じように参照してその中のメソッドを直接呼ぶこともできる これを試してみたのですが、 dllかcomではないとダメというエラーが出て参照設定できなかったのですが、 exeファイルでも参照設定する方法がありますか?
288 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:24:30 ] .NETのexeでないとだめ .NETのexeじゃないんだったら普通にプロセス起動して標準入出力通すしかない
289 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:40:57 ] VB.NET2003というものですがこれではダメでしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:49:57 ] 覚えてないけどVS2003ではexeは参照できないのかも 少なくとも2008ではできるし,VSでサポートされてなくても実際は可能なんだけどな
291 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:55:02 ] 2002、2003 の頃はダメだった希ガス
292 名前:デフォルトの名無しさん [2009/03/10(火) 21:00:32 ] レスありがとうございます。 そうですか。 それではプロセス起動して標準入出力、という方法を調べてみることにします。
293 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 21:11:26 ] たかがメソッド1つ2つ呼ぶだけだろうから リフレクションで動的にロードしてリフレクション通してメソッド呼べばいいんでない
294 名前:デフォルトの名無しさん [2009/03/10(火) 21:19:03 ] 先生方、質問です。 「 xxx.xx.xx/xxx.asp?id=123456 」 というリンクがあって、ここをクリックすると 123456.pdf というファイルのダウンロードが始まるページがあります。 VB2005を使って、 この 123456.pdf というファイルを自動でダウンロードさせたいのですが、 どうすればよいのでしょうか。 My.Computer.Network.DownloadFile() メソッドを使って、 直接、上記 URL をダウンロードしようとすると、 テキスト1行だけのファイルがダウンロードされるだけでした。 123456 の部分は、223456 であったり、様々であるため、 コード内で動的に指定して、複数のファイルを自動でダウンロードさせる 仕組みにしたいです。 よろしくご教授下さい。
295 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 21:24:09 ] >>294 WireShark とか、ieHttpHeader とか使って、やりとりを調べる。 そのやりとりと一緒のやり方を HttpWebRequest で作る。
296 名前:189 [2009/03/10(火) 22:26:38 ] ホームページをダウンロードして保存するプログラムを作りたいと思っています。 今会社のPCでも使用できるようなものにしたいんですが、 会社のPCでは外部にアクセスする際、社員番号とパスワードの入力が求められてしまいます。 そこで↓のページを参考にして認証の設定を考慮したPGを組んでみたんですが エラーになってアクセスできませんでした。考えられる原因と対策を教えてください。(漠然とした質問ですいません。) dobon.net/vb/dotnet/internet/usecredentials.html 会社の認証方式はLDAPでした
297 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:33:45 ] あぼーんがいると思ったら、キチガイさんが帰ってきましたか・・・
298 名前:デフォルトの名無しさん [2009/03/11(水) 01:21:10 ] 先生方、質問です。 「 xxx.xx.xx/xxx.asp?id=123456 」 というリンクがあって、ここをクリックすると 123456.pdf というファイルのダウンロードが始まるページがあります。 VB2005を使って、 この 123456.pdf というファイルを自動でダウンロードさせたいのですが、 どうすればよいのでしょうか。 My.Computer.Network.DownloadFile() メソッドを使って、 直接、上記 URL をダウンロードしようとすると、 テキスト1行だけのファイルがダウンロードされるだけでした。 123456 の部分は、223456 であったり、様々であるため、 コード内で動的に指定して、複数のファイルを自動でダウンロードさせる 仕組みにしたいです。 よろしくご教授下さい。 ※ただし、 「WireShark とか、ieHttpHeader とか使って、やりとりを調べる。 そのやりとりと一緒のやり方を HttpWebRequest で作る。」 以外で。なめんな。
299 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:23:03 ] >>298 死ね
300 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:29:18 ] 指定した時間に休止状態かスタンバイの状態から復帰させる方法を教えてください。
301 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:34:00 ] >>287-289 わろたw でも俺さっき>>295 見た直後に興味持ったんでieHttpHeaderを探して試してみたぞ これを使えば>>294 ができるなって思ったけど気に入らないの?
302 名前:デフォルトの名無しさん [2009/03/11(水) 01:34:44 ] >>298->>299 だったozr
303 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:38:47 ] 手取り足取り教えてもらえないと、納得できないんでしょ。
304 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 07:20:44 ] >>303 オマイは猫か!
305 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 08:16:13 ] 猫は過剰な干渉を嫌う
306 名前:デフォルトの名無しさん [2009/03/11(水) 08:49:38 ] Achilles使いこそ真
307 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:46:34 ] >>196 >考えられる原因と対策を教えてください。 原因:あなたが無能だからです。 対策:あなたが有能になることです。無理かもしれませんがw
308 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:02:05 ] >>307 質問スレまで来てつまらないレスすんなよ ウサ晴らしならチラシの裏にでも書いておけ
309 名前:デフォルトの名無しさん [2009/03/11(水) 22:32:07 ] 液晶画面の電源を切る方法を教えてぴょん
310 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:32:56 ] LDAP なら、NTLM か Kerberos で認証通せばいいんじゃね?
311 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:40:13 ] >>309 CIM_Display.SetPowerState() でいけそうじゃない?
312 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:43:08 ] 御知恵をお貸しください。 クリック等のイベントを、クリックされたコントロールの裏に透過するような処理を書きたいんですが、何か方法はないでしょうか? ディスプレイにメモ的な物を表示させておきたいのですが、ポインタが乗ったり、クリックしたりした時に、そのメモにイベントが渡ってしまって、思惑とちょっと違う動きになってしまって困っています。 ポインタが乗ったタイミングで透過100%にすれば誤動作はしないのですが、乗るたびにメモがチラチラと主張して目に優しくないです。
313 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:44:47 ] ん? あー、そういうこと・・・ ん? って感じ
314 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:41:09 ] ポインタを乗せてからちょっと経ってから透過させるとか、乗ってる間徐々に透過されていくとかにすればいいんじゃね?
315 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:23:55 ] なんでみんなテキストを扱う時も textwriterじゃなくstreamwriter使う?
316 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:39:52 ] 日本語でおk つかみんなって誰を指してんだよ
317 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:41:48 ] >>315 Public MustInherit Class TextWriter で、 Public Class StreamWriter Inherits TextWriter なわけだが。
318 名前:デフォルトの名無しさん [2009/03/12(木) 15:17:17 ] 帳票とかグラフとか印刷とか、皆さんはどうしていますか? Excelを利用している DrawとかDocumentとかで頑張っている その他、補助製品を利用している。 Crystal Reports ActiveReports VS-VIEW Reports.NET VB-Repor などなど・・・ 現在Excelを利用して書いているんですが、Excelが無いPCでの印刷や 印刷動作が重いなどを回避したいと思っています。 何か簡単で作成できて良い方法がある方は教えてください。 (購入も含めて)
319 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:51:56 ] 簡単な書式だったら、PrintDocument 使って自力で。 ちょっと入り組んでたり、バーコード/二次元コードを含むときは JIVE REPORT。
320 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:05:04 ] >>318 通常はアクティブレポートの付属でやってる レーダーとか足りないものは自作して使いまわしてる 流石にコンポーネント2つも買ってくれなかったのさ 貧乏だから・・・うちの会社
321 名前:デフォルトの名無しさん [2009/03/12(木) 21:35:38 ] ちんぽすげーかいい
322 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 22:01:04 ] 「3661」という数字を「1時間1分1秒」という文字列にしたいのですが良い方法を教えて
323 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 22:19:27 ] 小学生か
324 名前:デフォルトの名無しさん [2009/03/12(木) 22:39:24 ] >>322 dim t as integer t=3661 t/3600 & "時間" & (t mod 3600) /60 & "分" & (t mod 3600) mod 60 & "秒"
325 名前:322 mailto:sage [2009/03/12(木) 22:42:09 ] すごいすっきりしてていいね ありがとう
326 名前:デフォルトの名無しさん [2009/03/12(木) 22:48:52 ] このままじゃできないけどね
327 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 23:15:25 ] Button1_Click Timer1.Enabled=True Button2_Click タイマーをFalseにするまでButton2のイベントは起こらないのかしら
328 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:02:01 ] >>325 >>324 みたいなコードはむしろ「すっきりしてない」コードって言うんだよw 君みたいなセンスの人ってどこにでもいて困るんだが、勘違い甚だしいんだよ。 頼むから、「コードの行数」を最小化しようとするのではなく、 「コードを理解するのに必要な時間」を最小化することを心がけてくれ。 例えば、 dim totalTimeBySec as Interger = 3661 dim hour as Integer = totalTimeBySec \ 3600 dim minute as Integer = (totalTimeBySec mod 3600) \ 60 dim sec as Integer = (totalTimeBySec mod 60) dim result as String = String.Format("{0}時間{1}分{2}秒", hour, minute, sec} こんなふうにぱっと見て何やってるか分かるように書くんだよ。
329 名前:デフォルトの名無しさん [2009/03/13(金) 00:10:08 ] コメントかけばいいじゃね?
330 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:16:46 ] >>328 感動した。 コメントもさ、自分で書いたくせに時間が経って読み返すと 意味不明なことがあるんだよね…
331 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:18:20 ] >>329 それもVB脳的勘違いだな。 コンパイラはコメントを解釈してくれないよ?
332 名前:322 mailto:sage [2009/03/13(金) 00:21:28 ] これもいい!! すごいありがとう
333 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:24:35 ] 中国人かお前は
334 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 01:13:28 ] 普通にリア小だろ。
335 名前:デフォルトの名無しさん [2009/03/13(金) 08:05:17 ] >>331 コンパイラに理解させたいだけなら最初の方でもよくない? そもそもあの処理をみてわかりにくいと感じるってどんだけ初心者だよ
336 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:16:27 ] >>327 を解説するひとこそが貴重なプログラマなんだが
337 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:47:30 ] だって意味不明なんだもん>>327 3661秒を分かりやすく書くのならTimeSpan.FromSecondsがベストだよ
338 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:45:06 ] >>328 あの程度で「すっきりしてない」とか、どんだけ阿呆なの? で、自分で考えた結果がその糞汚いコード? >>337 ふつー、TimeSpan 使うわな。FromSeconds か コンストラクタかは好みで。
339 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:45:49 ] >>327 >タイマーをFalseにするまでButton2のイベントは起こらないのかしら マジレスするとんなわきゃねぇ つうか何が言いたいんだこいつ?
340 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:15:29 ] わかりやすさ、なんて人によって違うしね。
341 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:22:15 ] 既にあるものをわざわざ自分で作るのは迷惑行為
342 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:31:17 ] Dim m as Integer = b.MaxValue とした場合に出る "インスタンスを経由する共有メンバへのアクセスです。正規の式は評価されません。"という警告を回避したいです。 bはクラス変数で今の所Byte型にしているのですが、今後UShortやUIntegerなどに変えるかも知れないので。 = 255 や = [Byte].MaxValue とはしたくありません
343 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:46:53 ] 意味的に完全におかしいんだからしょうがない たまたま型が違っても名前が一緒なだけ MaxValueとかMinValueとかParseとかだけ集めたクラスを別に作っとけばいい
344 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:51:07 ] あーでもそこだけのためにクラス作るのもおかしいな 諦めて適当にConstなローカル変数に代入しといたら
345 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:23:35 ] クラス変数…? つかそれなら、**.MaxValue を戻す、Shared でないプロパティを追加すれば いいじゃないの。
346 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:44:16 ] b.GetType.GetField("MaxValue").GetValue(b) で型に応じた値が取得できそうなので、この方向でもうちょっと調べてみようと思います。 >343-345 ありがとうございました
347 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:49:43 ] ああやっと意味が解った >>346 のやり方だと一旦bの型にダウンキャストしてからaの型にキャストしないといけないので無意味
348 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:56:57 ] >>347 意味がわからん。リフレクションを使う、って文脈でなぜダウンキャスト?
349 名前:367 mailto:sage [2009/03/13(金) 17:17:09 ] b.GetType.GetField("MaxValue").GetValue(b)の戻り値がObject型だから aの型に変換する前にボックス化の解除が必要なんだけど, CType使えば自動でやってくれるな。すまん。 厳密にはいったんDirectCastでbの型にするのが正しい。
350 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 17:20:41 ] で、明示的に変換しないと、丸まったり桁落ちしたりするの? するなら問題だけど、そうでなければどうでもいい。VB だし。
351 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:47:53 ] いまさらだけど、>>342 みたいなことがしたい場面というのが思いつかない。 想像するにマジックナンバーを忌避する様な感覚で「bが特定の型であることを 前提としたコード」を回避してるとかなんだろうけど、だとしたら プログラミングに対する考え方が根本的に間違ってるとしか思えんな。
352 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:49:44 ] 俺も思いつかないが >342は拡張メソッドで解決できそうだな
353 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 20:03:30 ] 拡張メソッド使った場合はポリモーフィックな動作が出来ないね。 どうしてもってことなら、抽象的な「数値クラス」を自分で作るとかした方が いいのかも。 めんどくさいだけかもしれんが。
354 名前:デフォルトの名無しさん [2009/03/13(金) 20:17:27 ] ぶっちゃけそこまで動的な変更を意識しなけりゃいけないようなプログラムってあるの?
355 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 20:19:40 ] Module Hoge <Extension>Public Shared Function MaxValue(Of T)(ByVal type As T) As T Return Cache(Of T).MaxValue End Function Private Class Cache(Of T) Public Shared ReadOnly MaxValue As T Shared Sub New() MaxValue = DirectCast(GetType(T).GetField("MaxValue").GetValue(Nothing), T) End Sub End Class End Class //Dim a As Integer = b.MaxValue() 意味があるかは置いといてこんな感じかいね 毎回リフレクションするよりは遥かに速いはず
356 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 20:49:41 ] >>355 なんか違うような気もするが、ジェネリックの面白い使い方ではあるね。
357 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:29:25 ] >いまさらだけど、>>342 みたいなことがしたい場面というのが思いつかない。 場面と言うか、作ってる途中で仕様変更をした時、 修正しなきゃならない箇所を減らしておきたかっただけのことなんです。 例えば = [Byte].MaxValue としていた場合、 後でもしもbの型をByteからUShortに変えた時は = [Ushort].MaxValue に変更する必要が出てくるんですが、 そこの変更を忘れてバグを出すのも嫌だなと。 仕様を固めないままコード打ってること自体間違ってると言われればその通りなんですが
358 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 23:18:12 ] >>357 ByteをやめてやっぱりUShortに変えよう。 ってなるのはどういう時なの? 最初からIntegerとか大き目の型を使っておけばいいんじゃないの?
359 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 23:27:16 ] メモリを16Mから32Mに増設したときとかなら 気が大きくなってUShortにしようかなって思うかもしれん
360 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 23:51:34 ] >358 Byte,SByte,Short,UShortの存在価値ってないよな。
361 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 10:04:21 ] ほしゅ
362 名前:298 mailto:sage [2009/03/14(土) 11:43:43 ] お蔭様でうまくいきました。 http 解析しなくても、また HttpWebRequest を使わなくても 解決できました。 ヒント:WebRequest 有難うございました。
363 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 12:52:15 ] Halo Warld を表示するプログラム教えて
364 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:18:58 ] Console.WriteLine("Halo Warld")
365 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:14:24 ] >>362 http解析のくだりは置いとくとして、 WebRequest.Createでhttp:なにがしを指定したら、HttpWebRequestのインスタンスが帰ってくるのは理解してるのかね そもそもWebRequestは MustInherit だぞ
366 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:47:44 ] Apache+Monoに挑戦したがよくわからなかったので他に無料の.NET用Webサーバない?
367 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:48:23 ] IIS