1 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:44:56 ] 前スレ VB.NET質問スレ(Part30) pc12.2ch.net/test/read.cgi/tech/1242522019/l50 テンプレは>>2 〜
496 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 17:38:28 ] 演算子オーバーロードはジェネリックには使えないよー
497 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 18:14:03 ] Of T ってどんなイミが
498 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 18:46:21 ] >>496 2008で実験してみたが ジェネリックに使えなくはないけど、型ごとにオーバーロードしないとだめっぽい Public Shared Operator +(ByVal a As Vector4D(Of Integer), ByVal b As Vector4D(Of T)) As Vector4D(Of Integer)を定義 Public Shared Operator +(ByVal a As Vector4D(Of Double), ByVal b As Vector4D(Of T)) As Vector4D(Of Double)を定義 ...以下延々と必要な型に対して定義していく 使う方は楽かもしれんが、定義する方はジェネリックの利点がなくなるなぁ
499 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 18:58:13 ] 使う方にもデメリットがあるよ オーバーロードされていない型のVector4Dをまともに使うことができなくなる Vector4Dの外部から演算子オーバーロードを定義はできないから
500 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:42:46 ] そもそもベクトルをジェネリックにする意義がよくわかりません。 どういう意図なんだろ。よーわからん。
501 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 20:16:14 ] そこは疑問もつとこじゃないだろ。 あと今回問題なのは、Vector4Dの実装側で、 Tに対して算術演算が出来ないことなんだから、 演算子のオーバーロードは何の役にも立たん。
502 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 20:28:44 ] >>501 時々君みたいなこという人がいるけど、 そもそも必要性が疑わしいものの実現可能性を考えてなんの意味があるの? ベクトルをジェリックにして何の意味があるんだよ。 意味ないでしょ。
503 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 20:51:47 ] System.Linq.ExpressionとかDynamicMethodとか使えばできなくはないよ 算術演算を行うメソッドを動的に生成してしまえばいい
504 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:03:29 ] float,double,decimal,固定小数点数型辺りで使い回したいとか?
505 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:06:19 ] C++ではたいていベクトルはテンプレートになってるけど 実際doubleやfloat以外に使われてるのを見たことがない
506 名前:493 mailto:sage [2009/10/09(金) 22:23:58 ] 皆さん、レスありがとうございます。最初に DynamicMethod を勉強して >>503 を試してみることにしました。 >>494 もう少し具体的に書いていただけると助かります。 >>504 主な目的はその通りです。
507 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:28:27 ] DynamicMethodは無謀すぎる インラインアセンブラみたいなことするんだぞ 自分は.NETオタだと自負できるようになってから出直せ
508 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:56:46 ] 命令口調クンって馬鹿だな、まで読んだ。
509 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:05:40 ] やっぱりそもそもの発想がおかしいと思うけどねえ。 パフォーマンスが重要でないなら一番「大きな」型だけで演算を定義して あとの型はその型との相互の変換だけ考えればいいし、パフォーマンスが重要なら・・・ そもそも演算誤差の扱いっていう泥臭い問題の存在を忘れてないか
510 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:43:06 ] テンプレートみたいな何でもできるものをイメージしてたら、 Vectorをジェネリックに定義するのは何もおかしくない。 別に数値要素だけでしか使わないものではない。
511 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:07:29 ] ジェネリックデリゲート使って演算定義から取り出すやり方も出来ないことはないぜ。 そこまでする価値があるかは別問題として。 DynamicMethodよりは楽だけど。
512 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:08:17 ] あとどっちにしてもパフォーマンスは若干悪くなるな。
513 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 18:48:11 ] >>511 Int32等のCLI組み込み型については演算子がオーバーロードされてるわけじゃないから無理 DynamicMethodを使わないのであれば, Int32とInt32の足し算,Int32とByteの足し算,…みたいにすべてのケースに対する演算処理を 定義しておくしかない
514 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:50:23 ] ExpressionTreeを使えばこういう事も可能だが ttp://ufcpp.net/study/csharp/sm_genericop.html
515 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:52:22 ] それDynamicMethodで実装されてるんだけどな
516 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:52:44 ] サイトのソースデータをString変数に入れたら&という文字が&に置き換わっているのですが これを一括して元に戻すにはどのような方法で戻したら良いでしょうか? 他にも置き換わっているものがあると思うので&に限定したReplaceではない方法が あれば教えていただきたいです。
517 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:54:09 ] ↑ なんか消えてしまったみたいです。 &が& になってしまいます。(本当は半角)
518 名前:493 mailto:sage [2009/10/11(日) 00:55:17 ] DynamicMethod を使う方法と並行して、>>514 を試しています。 ufcpp.net/study/csharp/source/Operator.cs より、C# のコード public static readonly Func<T, T, T> Add = Lambda(Expression.Add); を VB にすると Public Shared Add As New Func(Of T, T, T)(AddressOf まではわかったのですが、この右に何をつければよいでしょうか?
519 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:57:25 ] >>517 HtmlEncode/HtmlDecode
520 名前:493 mailto:sage [2009/10/11(日) 00:58:02 ] >>516 HTMLの実体参照ですね。頻出のものは & ←→ & > ←→ > < ←→ < ですが www.ne.jp/asahi/minazuki/bakera/html/reference/charref などで一覧を見ることができます。
521 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 01:03:25 ] >>519-520 ありがとうございます。 おかげさまで無事対処できそうです。
522 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 02:24:22 ] 特殊な文字があるutf-8のwebページのソースをファイルに保存したいのですが WebClientでutf-8を指定してダウンロードしてStreamWriterで、書き込み時にutf-8を指定して 書き込んでいるのですが、保存されたテキストを見るとその文字が?になってしまっています。 teraPadというエンコードを指定できるテキストエディタでutf-8を指定して確認しているのですが 元の文字は消えてしまっているようです。 WebClientでダウンロードした直後にString変数に入れて、デバッグを一時停止して カーソルを当てるとその特殊文字は正常に表示できているのですが、 そのままConsole.WriteLineに出力すると?になってしまっています。 ブラウザのソース表示から直接TeraPadでソースを開いても?になってしまいます。 これはどのようにして保存したら正しく保存できるでしょうか? ちなみに文字は〜という文字の波を上下に反転したような形の文字です。 よろしくおねがいします。
523 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 04:19:54 ] 文字の確認はバイナリエディタでやった方が良い DownloadFileすればプログラム上でエンコーディング悩む必要もないけど?
524 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 05:27:02 ] コンソールとかエディタが使ってるフォントがその文字表示できないってオチじゃないだろうな
525 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 10:25:50 ] >>522 全角チルダの上下反転表示とくれば、 FullWidthTilda(U+FF5E) と WaveDash(U+301C) の変換問題だな。 TeraPadは内部コードがShift_JISらしいので、 WaveDashが化けてしまっているんじゃないかな。 一度、WikipediaのUnicodeの所を読んでみると良いよ。
526 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:02:18 ] >>518 Public Shared ReadOnly Add As Func(Of T, T, T) = Lambda(AddressOf Expression.Add) Public Shared Function Lambda(ByVal op As Binary) Return Expression.Lambda(Of Func(Of T, T))(op.Invoke(x)).Compile() End Function 試してないけどだいたいあってるはず Imports Binary = Func(Of ParameterExpression, ParameterExpression, BinaryExpression) を忘れずに
527 名前:526 mailto:sage [2009/10/11(日) 11:05:56 ] 訂正 Return Expression.Lambda(Of Func(Of T, T, T))(op.Invoke(x)).Compile()
528 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:43:33 ] 内部SJISのエディタでutf8開くなんて無謀すぎだ。
529 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:54:46 ] どちらかというと、今時内部SJISのエディタの存在自体が無謀な気もw
530 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 14:29:59 ] >>522 chcp 65001 hoge.exe >file
531 名前:522 [2009/10/11(日) 22:12:39 ] レスありがとうございます。 素直にメモ帳で開いたら正しく表示できました。 正しく保存できているのにteraPadで表示しようとあれこれやっていたんですね; 助かりました。
532 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 04:13:45 ] comboboxで選択された内容を配列に格納すんのってどうやんの? 簡単におせーて
533 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 08:08:19 ] SelectedItem
534 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 10:50:40 ] >>532 一つしか選択できないのに何故ゆえに配列?
535 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:01:01 ] なにゆえゆえ?
536 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 17:45:30 ] >>534 細けーこたぁいいんだ >>533 こいつをどうにかすればいいんだな?
537 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:00:52 ] いやまず君自身の頭の悪さをどうにかしないとダメだよ
538 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:56:07 ] 無茶ゆうな
539 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:37:04 ] 掲示板とかのメッセージみたいなツリー構造のデータをファイルに保存するのに良い方法があったら教えて
540 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:41:01 ] 2ちゃんみたいに、フラットにしちゃうのが楽。
541 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 21:11:49 ] >>539 JSON
542 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 21:23:05 ] >>539 尻洗いズ
543 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 21:24:34 ] >>537 オレもそう思う。
544 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 23:25:45 ] 羽山博いきてる?
545 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 14:41:09 ] すいません、 コンボボックスのドロップダウンをEnableをFalseにせずに 出ないようにしたいんですが、これってvb.netじゃできないもんでしょうか?
546 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 19:20:06 ] For I = 1 To 1000 System.Threading.Thread.Sleep(1) Application.DoEvent Next これで約1秒待機しているのですが以前は大体1秒、2秒だったのですが 最近はすごい長くなってきました。 10000でも10秒位だったのですが、1分近くかかるようになりました。 これはどういう部分に原因がありそうでしょうか? そういえばパソコンの動作も鈍い感じがします。 CPUやメモリには全然余裕がある状態でも同じです。
547 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:00:29 ] そういうコードを書かない、でいいじゃないか
548 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:27:24 ] >>546 お前はあほか
549 名前:526 mailto:sage [2009/10/13(火) 20:28:24 ] UIスレッドでSleepはご法度
550 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:49:55 ] >>547 どう書けばいいですか?
551 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:51:33 ] タイマを使う
552 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:52:52 ] 待機が必要になるような処理をUIスレッドでやらない
553 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:53:40 ] API剥き出しw
554 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:10:41 ] 必死な馬鹿が一人紛れてるな
555 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:52:55 ] 作り方はともかく、Sleepは最小の待機時間しか保証しないからな。 その何倍も経過した後で戻ってきても何の不思議も無い。 Do-LoopとStopwatchクラスで1秒経過するまで待てばそれなりに動かせるけど、 設計自体見直したほうがいいだろうな。
556 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:57:18 ] DoEventsで時間食ってるんだろ
557 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:39:55 ] 今無職なのでVBで食っていこうかなって思ってます。オスッ
558 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:43:08 ] ぼくも無職ですがVB覚えたい 昨日駅前のパソコンスクールに言って 「VBありますか?」 って聞いたら無いって言われました やはり独学しかないのか
559 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 12:33:00 ] スクールなんぞ金の無駄でしかない。
560 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:34:42 ] じゃ、本で独学がいちばん?
561 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 20:18:58 ] わざわざ始めるならJavaにしとけよ
562 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:59:49 ] >>546 キミのその糞なコーディングにパソコンが嫌気がさして来たからだと思う。
563 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:54:10 ] メディアプレイヤを起動してみるんだ
564 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 09:28:09 ] >>562 終わった話に後から煽るだけ、ってのやめれ。 頭悪そうにしか見えない。
565 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 09:56:30 ] >>560 今からなら C# いいよ
566 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:47:26 ] JavaとC#を同時にやるのがいいと思う VBはC#ができれば自動的にできるからあえてやる必要はない
567 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:56:44 ] なにゆえ同時に
568 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:12:58 ] Dim Arr As New ArrayList Dim R As New Regex("hoge.+?") Dim M As MatchCollection M = R.Maches(hogeString) 上のような正規表現のMachesでマッチした結果を ArrayListに入れたいのですが どのように書いたら良いでしょうか?
569 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:07:41 ] >>568 あっどれんぢ
570 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 10:08:57 ] じゃあC#解説のおすすめのサイトと本教えてよ
571 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:21:47 ] ■@IT:連載 改訂版 C#入門 www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html 入門とは書いてあるけど、これ全部理解できればまず困る事はないと思う このサイトには他にもカテゴリが山ほどあって 目的の情報を探すのが大変かもしれないけど 凄く役に立つサイトですよ もっと簡単そうなサイト?あったら俺も知りたい^^
572 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:11:26 ] VBってそういう言語面からきちんと解説してるサイトや書籍が少ないよな 変数,演算子,制御構造終わったらあとはコピペ用Tipsばっか
573 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:17:09 ] 動けばいいから
574 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 19:21:06 ] >>569 すみません具体的にどう書いたら良いですか? Arr = AddRange(〜〜〜) ここがわかりません。
575 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:02:47 ] お前のコンパイラはエラーが発生すると爆発でもするのか?少しは試せよ。
576 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:23:28 ] 色々試しすぎて爆発したから質問してみた
577 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:50:04 ] すこしはググれよ
578 名前:デフォルトの名無しさん [2009/10/16(金) 22:02:27 ] もうググり杉って出た はやく教えて
579 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:10:39 ] ヘルプ嫁
580 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:27:02 ] もういい聞かない もったいぶりすぎ質問スレじゃなかったのかよ
581 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:53:48 ] >>580 質問スレだが回答スレではない。
582 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:55:37 ] >>574 × Arr = AddRange(〜〜〜) ○ Arr.AddRange(〜〜〜)
583 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 03:27:23 ] 800*600のjpgを640*480にしてpngなどで保存するにはどんなコードを書けば
584 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:48:35 ] BitmapクラスとGraphics.FromImage
585 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:56:31 ] VBでChar.IsDigit("66t"),Char.IsDigit("3E5")がTrueになりますが、普通に10進数の数字だけで判断することはできませんか?
586 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:08:59 ] 普通に10進数の数字だけで判断してるけどな、Char.IsDigit なぜそれでTrueを返すかはヘルプ見ろ Int32.TryParseとかで変換しちまえばいいんじゃね
587 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:12:05 ] それで実現できました。ありがとうございました。
588 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:18:21 ] テキストボックスを、選択・コピーできるテキスト表示領域として使おうとしています。 したいこと @キャレット非表示 A方向キーでのキャレット移動無効化 BSHIFTでの選択無効化 @はAPIのHideCaretで出来たのですが、他がさっぱりわかりません。 TextBoxBaseの該当メソッドをオーバーロードすればいいのでしょうか? そうだとして、そのメソッドはどれでしょうか?
589 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:45:22 ] キャレットを非表示にしてどうやって選択すんの?
590 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:07:31 ] >>589 表示されて無いだけで選択は出来ます。 つまり、マウスだけで選択できる状態にしたいのです。
591 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:12:22 ] Shift キーと方向キーを殺せばいいんじゃね?
592 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:16:32 ] おすすめの 有料追加コントロール 無料追加コントロール 紹介して
593 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 19:29:54 ] >>591 方向キーでスクロールをしているので、それが出来ないんですよね……
594 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 19:58:11 ] なーんかユーザビリティを毀損するとしか思えない妙な俺様仕様に こだわる人って時々いるけど、正直理解できんな。 明らかに便利で合理的な仕様であれば実現に向けて努力するのもわかりもするんだが。
595 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 19:59:28 ] >>593 殺した上でスクロールスりゃいいだろハゲ そんな Windows の流儀にそわない動きしたいなら、少しは自分で工夫しろよ。
596 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 20:10:34 ] WebBlawserもどきを作りたいって言ったほうがよかったかな。