VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2016/06/15(水) 11:41:09.50ID:bPj3FmGk
前スレ

VB.NET質問スレ(Part40)
http://toro.2ch.net/test/read.cgi/tech/1365857015/
VB.NET質問スレ(Part41)
http://peace.2ch.net/test/read.cgi/tech/1391334405/
VB.NET質問スレ(Part42)
http://echo.2ch.net/test/read.cgi/tech/1419148239/
2016/10/18(火) 07:36:59.86ID:12uxO2Uo
一日て
何させてるんだ
2016/10/18(火) 21:41:02.19ID:q8Y2lqKG
まぁ簡単に纏めると
「目くそ鼻くそを笑う」というやつだな
2016/10/19(水) 00:49:29.93ID:pTqLrw7j
仮にも派遣会社が何人もつれてくるのに、そのことごとくが1日で逃げたすということは
つれてくる人に問題があるんじゃなくて、つれてこられてるところに問題があると判断するのが妥当じゃね
2016/10/19(水) 20:47:28.18ID:w4QuZKCO
クソ設計なシステムが大杉な今日この頃

言語など問題じゃない
2016/10/19(水) 20:59:04.22ID:arYWyhLn
そりゃコードもろくに書かないような素人が机上の空論を何重にも積み重ねて作り上げた設計をもとに作るものがまともになるわけがないよね
2016/10/19(水) 21:00:45.97ID:4EiJpNnx
確かに言語の問題ではないかもしれないな
今javaの仕事場にいるが取り敢えず数千行に及ぶメソッドとかやめて欲しい
VBAですらこんなひどいのは見たことない。
ああ早く辞めたい。
2016/10/19(水) 21:04:05.09ID:u8VkfRi+
保守しないシステムなら、適当に作ればいいんやで
2016/10/19(水) 22:19:41.31ID:ZxcZNVlw
それをやりすぎて身動き取れなくなったのが日本のIT業界
世界から取り残される
2016/10/22(土) 01:03:30.18ID:FTu1fQ9L
適性ないやつは初日に追い返すほうがいい
数週間やった後だとお互いに無駄になってしまう
派遣側からみれば、客であるおまえらにむかって気に入らないから帰るとはなかなか言えない
2016/10/22(土) 11:57:55.47ID:T7KUESS5
派遣に限った話じゃないな
適正ない奴はクビにする
これを疎かにすると業界が腐っていく
重要な社会インフラを担う業界が腐れば国が腐るのは東電の件で分かっている筈だ
このまま放置すれば日本は後進国になる
2016/10/22(土) 12:40:43.34ID:mCTekUUM
>>329
お前クビ
2016/10/22(土) 12:48:50.54ID:qIeZBixA
vb関係ない話を延々と
2016/10/23(日) 02:57:27.26ID:1y658jXM
自分のことを棚上げして、他人のことを書いてる人ばっかり・・・
2016/10/23(日) 11:49:00.91ID:Bz0B2Q3g
VBで作ったアプリの見た目を変えるのはどうすればいいの?
2016/10/23(日) 12:10:00.53ID:LLV8Wwru
WinFormsなら簡単な方法はない
コントロールを全部オーナードローするよりはWPFやASP.NET MVCでGUIを作り直した方がマシ
2016/10/23(日) 20:05:42.68ID:VycPUQK1
strict offのVB.NETのプロジェクトでstrict onにした時にctype系の修正だけでも
一気にやってしまうことってできないでしょうか?
一個一個直すのが大変で。
336デフォルトの名無しさん
垢版 |
2016/10/23(日) 22:54:07.00ID:Pb3uCFNH
strict onにしてもキャストが多いままだったらあまり意味がないよ
素直にoffにしとけば?
2016/10/23(日) 23:12:43.14ID:VycPUQK1
意味ないのですか
じゃあoffのままでいいかな
2016/10/24(月) 00:00:16.72ID:b4iOClrl
無くはないでしょ
いかに糞コードかが視覚的にわかるだけでも反省のきっかけになる
2016/10/24(月) 00:14:16.06ID:Bv6qLW9F
パフォーマンスが良くなったりはしませんか?
2016/10/24(月) 06:00:21.39ID:w9tXiXLn
むしろ悪くなる
2016/10/24(月) 07:54:35.54ID:pChB0rwr
!?
悪くなるんですか
342デフォルトの名無しさん
垢版 |
2016/10/24(月) 08:04:52.19ID:jSed6172
な訳ねーだろだまされんなw
2016/10/24(月) 09:04:19.86ID:pChB0rwr
byrefの引数までctypeされちゃって動かなくなりました
2016/10/24(月) 09:20:41.69ID:++IEAJ3W
document completeイベントなどのイベントってCPU負荷が大きくなったときに
発生したりしなかったりという現象がおこる原因のひとつになりえますか?

win10 i7-2600k メモリ:16GBで
タスクマネージャーでしばらく見ていると平均でCPU負荷が60-70%以上あり、
時々95%を超えていたりします。

うまく動かないときがあるのであるので、document completeイベントを拾ってる箇所に
デバックログを取ってみると、出ているときと出ていないときがあり、なかなか原因が
特定できません。

navigatingイベント、navigatedイベントまでは出て、document completeイベントが出ていない
という状態です。
2016/10/24(月) 12:36:07.42ID:83bvzfHf
>>341
悪くなるよ
無意味なボックス化アンボックス化や変換が発生する
2016/10/24(月) 12:38:57.71ID:csInVVUs
>>345
それはキャストや変換を明示的に行おうが暗黙だろうが同じこと。
明示的にキャストや変換したらコストが高くなるとかそんなわけないでしょw
2016/10/24(月) 12:41:53.82ID:b4iOClrl
>>345
Strict Offが無駄な変換やボックス化をしてないとでも?
前後の型が分かってれば高速に変換できるケースは多いぞ
2016/10/24(月) 12:47:19.62ID:b4iOClrl
>>346
たぶん345は値の読出元と変換後の代入先の型がObjectならアンボックス化やボックス化が発生しないと思ってるんだろ
実際には、値の型で分岐→アンボックス→変換→ボックスという極めて非効率な操作になる
2016/10/24(月) 12:47:40.07ID:83bvzfHf
>>346
objectからobjectへの代入にキャストを挟むと遅くなりますよ
350デフォルトの名無しさん
垢版 |
2016/10/24(月) 19:43:19.47ID:e8s5GSpS
それぞれがギリギリのラインで知ってる事を言いあってるだけだから会話としては成り立ってない
2016/10/24(月) 20:33:38.21ID:YenCzEnx
とりあえずCtypeよりはDirectCast使おうよ。
暗黙の変換を行うつもりは無いんでしょ?
2016/10/25(火) 19:52:34.47ID:/tmEVYbK
Ctypeでも状況によってはDirectCastと同じコード吐くらしいけどな
VB.NETのコンパイラさんは結構がんばってるぜ
2016/10/26(水) 00:46:20.68ID:+x2Xcmzl
そんなにキャストって使う?
tryparseすら使わんのだが
使うとしたらDirectCast(sender, コントロールの型)
くらいだわ
354デフォルトの名無しさん
垢版 |
2016/10/26(水) 01:38:21.10ID:LebVIXiL
キャストの話題でなぜ突然tryparseすらという言葉が出てくるのか謎なのだが
vbだと文字列を数値として評価するような事もキャストって言うの?
2016/10/26(水) 01:56:35.02ID:KQmoHA4r
テキストボックスやSPREADに表示用の値をよく代入するから
キャストは頻繁に行う
また、カンマ区切りの数字を取得するのはキャストとはまた微妙に違うがけっこう面倒臭い
2016/10/26(水) 02:02:30.25ID:McM6fVIv
toStringじゃなくて?
2016/10/26(水) 02:17:47.08ID:Hu8g6Oi9
>>354
C系言語もその辺はいい加減だと思うよ。
例えば
int x = (int)3.14;
は普通に考えれば変換だけど構文はキャストそのものだし普通にキャストと呼ぶでしょ?
358デフォルトの名無しさん
垢版 |
2016/10/26(水) 06:48:15.05ID:LebVIXiL
>>357
キャストって型変換の事だが
むしろそれがキャスト
2016/10/26(水) 08:26:59.08ID:KQmoHA4r
>>356
toStringが定義されてたらいいけど
どういう振る舞いをするのか確認するのも面倒なので
CTYPEやCINTあたりを使ってるよ
DirectCastのほうがミスを減らすためにもいいんだろうなぁ・・・
2016/10/26(水) 08:35:34.34ID:KQmoHA4r
ちょっと真面目な質問したいんだけど
DirectXのDLLってどこいったの?
参照の追加をしようと思ったら見当たらない
2016/10/26(水) 09:17:41.37ID:Zw4eFAd1
もうなくなったよ
SlimDXとかSharpDXとか使おう
ゲーム制作ならもうUnityで
2016/10/26(水) 09:42:18.55ID:EekeRq3r
>>358
本来のキャストはCで言えばポインタ変換だけ
363デフォルトの名無しさん
垢版 |
2016/10/26(水) 12:33:23.43ID:wESs4v7p
>>362
それも誤解
directcast見てそう思ったのだろうけど
型変換は全てキャストだし逆に型変換でないものはキャストではない
本来とかそういう問題でもない
2016/10/26(水) 12:56:23.78ID:EekeRq3r
>>363
言っちゃ悪いけど、それお宅がキャストと変換の区別がついてないだけね。

計算機にとっては文字列の"123"をintの123にするのも、doubleの3.14をintの3にするのも
同じ「変換」だが、Cでは後者だけがキャストの扱いになっていて混乱している。
2016/10/26(水) 13:35:43.91ID:G6/jtze7
Cの議論は他でお願いします
366デフォルトの名無しさん
垢版 |
2016/10/26(水) 19:32:18.87ID:LebVIXiL
>>364
vbしか知らないのに無理してcで例えなくてもいいよw
ちなみに
キャストは型変換であり、変換ではない
文字列→数値の場合文字列の表わす値を数値として評価しているのであり、変換ですらない
二重に間違ってるよお前
2016/10/26(水) 19:56:05.00ID:Kd62j3g9
>>366
お前さんのやってることは変換を評価と言い換えただけ。
そういうのを言葉遊びという。馬鹿じゃないの。

(1) ポインタ変換
(2) double→intの変換
(3) 文字列→intの変換

(1)と(2)の間の差異は(2)と(3)の間の差異より大きい。

(1)は呼び名こそ「変換」となっているが、実際は単にコンパイル時にどの型として扱うかを変更しているだけで
実行時のメモリー上のデータは何も変わってないからだ。

本来のキャストとはこの(1)だけを指す。
368デフォルトの名無しさん
垢版 |
2016/10/26(水) 20:07:53.96ID:LebVIXiL
>>367
いやだから型変換だってばw
せっかく教えて貰ってんだから素直に聞けばいいだろw
そのオレオレ理論を意固地に貫いてもお前に何のメリットもないよ
2016/10/26(水) 21:02:06.42ID:X0t3H/iP
おまいら根拠にしてるソースURLなり書籍名なりplz

出せずに慣例だの常識だので曖昧に誤魔化して逃げる俺様定義絶対合ってる匿名マンなんてただの荒らしでしかない。
スルーして過疎スレに戻ろうず
2016/10/26(水) 21:59:35.35ID:QysY5RXf
>>367
クソワロタwww
2016/10/26(水) 23:28:49.10ID:KQmoHA4r
ポインタ変換って何なんだ?
ググっても全くヒットしないんだがコンパイラ業界では隠れた隠語なのか?
2016/10/27(木) 00:26:42.82ID:i508Z9Hm
しつこいな
373デフォルトの名無しさん
垢版 |
2016/10/28(金) 00:19:57.23ID:8f+wXH5p
マジレスすると
キャスト(cast)は変換や型変換のことじゃないよ
英単語としてのcastの意味のそのまんまの「配役、役の割り当て」って意味だよ
2016/10/28(金) 00:30:05.75ID:5ko2vSX6
>>373
真面目に言ってそうで怖いなw
さすがVBer
2016/10/28(金) 12:39:29.03ID:4C9WQUMb
なんでVBの拡張メソッドはModuleなんだ
グローバルメソッドとしても使えちゃって気持ち悪いんだが
2016/10/28(金) 12:51:16.32ID:GTOY14JQ
VBはそういうの気にしない人向けの言語なので
377デフォルトの名無しさん
垢版 |
2016/10/28(金) 20:11:10.63ID:wjrX//6G
たかだか記法の問題をいちいち気にする方がどうかしてる
2016/10/28(金) 20:42:45.43ID:ch5b/kiY
>>377
たかが記法の問題?本当にそう思う?
名前空間汚染の問題と単なる記法の問題の区別がつかないのがVBerらしいね
379デフォルトの名無しさん
垢版 |
2016/10/28(金) 21:17:37.68ID:wjrX//6G
>>378
グローバルな識別子=汚染
ではないのだよ
「汚染」てのはライブラリが定義する意図しないグローバルな識別子が問題になるから
悪意を込めて使う言葉で自分で定義したりそれを望む場合には汚染て言葉は使わんよw
字面だけでなくちゃんと言葉の意味を覚えてから使おうね
2016/10/28(金) 21:24:21.37ID:1gzGBtQ8
>>379
プログラム作ってるのがお前だけならな…
2016/10/28(金) 21:34:22.91ID:8wjGwqyI
>>379
同意ですね
2016/10/28(金) 22:00:09.91ID:684gpVHK
VBerって言いたいだけやろ
2016/10/28(金) 22:55:03.12ID:ch5b/kiY
>>379
VBerは揚げ足取りしかできないのか
仮に汚染という言葉が不適切だったとしても単なる記法だけの違いではないのは確かだろ?
別に俺はモジュールは名前空間を汚染するから如何なる場合でも使うなと言っているわけじゃなく、
それが問題になるケースはあるから単なる記法の問題ではないと言っているだけだ
実際>>375は気持ち悪いと言っているのだから少なくとも>>375にとっては「汚染」だろう
2016/10/29(土) 00:37:53.79ID:vKDUHJSk
汚染の定義と使用法はどうでもいいんだが
グローバルメソッドの定義を教えてくれ

拡張メソッドが通常のメソッドとして呼び出せることが問題だっていうならわかるが
C#の拡張メソッドだって、利用可能な名前空間内に存在する必要があるわけで
モジュールうんぬんは意味がわからん
2016/10/29(土) 00:57:42.29ID:9Fs7N4rN
VBのモジュル内のメソッドはグローバル
クラス内の静的メソッドみたいにクラス内の名前空間内に存在しているわけではない。

まあ、ラムダ式といい、もう2008以降はVB使わない方がいいよっていうメッセージでしょ。
少なくとも俺はそう受け取って2005まででVBは見限った
2016/10/29(土) 01:22:39.12ID:vKDUHJSk
>VBのモジュル内のメソッドはグローバル
そのグローバルの意味が分からんのだが?
VBだとデフォルトでプロジェクト名の名前空間内に属してるはずだが
その名前空間を超えると?
2016/10/29(土) 02:08:01.24ID:9Fs7N4rN
正直長年VB使ってた中で一度もモジュールなんて使ったことなかったけど、
一応モジュールも名前空間の中(ルート名前空間に限らず)に定義できるんだな。

それはいいけど、モジュール自身が名前空間を構成しないから、
そのメンバーはモジュールが存在する名前空間を参照しただけで丸見えになっちゃうわけで
普通に考えれば拡張メソッドはC#と同様に静的クラス(VBにはないけど)に定義する方がよかったね
2016/10/29(土) 07:10:41.84ID:ddj4bzvw
>>384
モジュールはそれを含む名前空間をImportしただけ(or 同じ名前空間にあるだけ)で
モジュールのメンバが全てトップレベルのスコープにインポートされるだろ
拡張メソッドは オブジェクト.メソッド名 の形式でしか呼び出せないから、
トップレベルで参照可能な名前が増えるわけではなく影響は小さい
C#は最近のバージョンで using static が入ってクラスのstaticメンバをトップレベルにインポートできるようになったが
名前空間単位ではなく対象のクラス名を直接指定しなきゃいけないからやはりモジュールに比べれば影響は小さい
2016/10/29(土) 08:03:59.22ID:UEy06zu0
先頭にusingが列挙してあるC#のソースの見づらさと言ったら
しかも書いた人によってか、usingの羅列が違うという
2016/10/29(土) 08:14:31.49ID:ddj4bzvw
VC#には 未使用のusingの削除・整理 という機能があってだな
それでも見づらいようなロクに責務分割できてない長大なコードなら
usingが無かろうが見づらいから安心しろ
2016/10/29(土) 09:08:07.61ID:ov/h/7tc
そういや参照の自動削除機能がなくなったな
あれ便利だったのに
2016/10/29(土) 10:30:39.20ID:dpmyBZLi
Moduleがないとリプレースしたときにお客様がModuleがClassに変わってるんですけど使いにくいんですけどってご立腹なさるのでModuleは必要
2016/10/29(土) 11:44:59.26ID:cpi9mNqo
>>389
そこは(普通のプログラマが普通にプログラミングしてれば)VB使っても同じになるはずなんだけどw
むしろあんたはどういうコード書いてるのかとw
2016/10/29(土) 19:48:16.97ID:wsj9Hrl0
>>389
羅列が違うって何?
2016/10/29(土) 20:01:25.49ID:3eGSrWP/
>>394
using の順番
2016/10/29(土) 20:16:52.74ID:ddj4bzvw
>>393
ところがVBには、プロジェクトの設定で指定した名前空間を全てのソースで暗黙的にImportするというゴミのような機能がある
2016/10/29(土) 21:11:12.71ID:wsj9Hrl0
>>395
そんなもん自動で揃えられるだろ
2016/10/29(土) 22:52:27.70ID:UEy06zu0
>>396
そのほうが自然じゃないのか
プロジェクト内のソースごとにまちまちなほうが違和感を感じるが
2016/10/29(土) 22:59:38.63ID:wsj9Hrl0
>>398
ゴミキタ━━━━(゚∀゚)━━━━!!
2016/10/29(土) 23:03:06.39ID:i+DlxK4w
コードをプロジェクトの外に持ち出したら何が書いてあったかわからなくなるというほかは
デメリットが思いつかない
2016/10/30(日) 00:15:39.58ID:oo8ByUW6
>>399
おれ、いつも System.Linq だけ有効にして、残りは切って使ってるので
一括して名前空間の設定が出来て便利

usingのほうが不便
2016/10/30(日) 00:21:18.07ID:payAbzEM
>>401
他は全部明示的にImportしてるってこと?
お前完全にusing派だろw
2016/10/30(日) 00:27:55.69ID:ALtsNIP3
>>396
ああ、そういやそんな機能あったね

BCLのほとんど必須の名前空間だけならありかなとも思うけど、
コード上に明示されないのはやっぱり気持ち悪いな

VBはあの有難迷惑のルート名前空間も鬱陶しいね
2016/10/31(月) 16:51:00.87ID:jCI7ny/t
ディクショナリーのキー取得時に dicHoge.Keys(intIndex) の様に書くと
VisualStudioでは問題無いのに、ideone上でエラーになってしまいます。
何か他に書き方があるのでしょうか?
2016/10/31(月) 17:17:30.13ID:OqD2s4Cc
うわ何これキモい
暗黙にElementAtOrDefaultに変換するのか

教科書的には
Dictionaryは順番を持たないコレクションだからインデックスでアクセスするのは変
2016/10/31(月) 17:35:37.71ID:SAEZOlIl
別にキーで要素を検索できることと要素が順序を持つことは何も矛盾しないと思うけどねw
2016/10/31(月) 17:40:32.47ID:OqD2s4Cc
うん、確かにそれはなにも矛盾してないね
2016/11/02(水) 06:49:35.74ID:/u8gEGW5
DelegateなメソッドをInvokeで呼ぶときに引数って渡せないのでしょうか?
2016/11/02(水) 06:57:27.71ID:2fBE4wO9
渡せる
2016/11/02(水) 06:58:55.82ID:/u8gEGW5
>>409
助かりました。
2016/11/02(水) 08:50:07.47ID:t5KdzDu6
VB久しぶりに触る機会があったけどc#よりちょびっとインテリセンスが馬鹿じゃないか?って感じた
412デフォルトの名無しさん
垢版 |
2016/11/03(木) 14:55:47.96ID:8QV9xAcD
>>411
気のせいだよ。
それより末尾に";"つける癖から早く卒業しましょう。
2016/11/03(木) 15:08:37.98ID:I4v6hDq5
すぐ上の話題で答え出てるじゃん
ソースのトップレベルに出現する可能性のある識別子の数がC#に比べて遥かに多いからだよ
モジュールと既定のインポートのせい
2016/11/07(月) 19:08:16.41ID:CxfskhGH
誰かいる? 質問良いですか?
今RichTextBox派生のカスタムコントロール作ってて、
ちょっと詰まってる所があるから詳しい人教えてほしい
2016/11/08(火) 00:51:44.51ID:ysYQgtdr
質問いいですか?と聞いておきながら質問しないアホ発見
2016/11/08(火) 01:46:02.67ID:/yxQhcwh
すごいこと質問していい?
2016/11/08(火) 02:11:19.46ID:crOcTVn5
誰も居ないのかと思った。質問して良いなら質問させてもらいます

当方、数か月前からVB.NETを始めた初心者なので、
コードが意味不明とか手法が悪いとかあれば、それも含めて指摘頂けるとありがたいです

RichTextBoxにOnPaintで文字を描写しようとして試行錯誤してるんですが、
WndProcでIMEを監視して、変換が確定するまでの間OnPaintが動作しないようにする事で、
都度TextChangedで日本語の文字入力の確定はされないようにできたんだけど、
今度はIMEに入力中の文字が真っ白で表示されない

なので、入力中の文字を表示するのに、
ImmGetCompositionStringで取得した文字をDrawStringで書いてみようかなと思っているのですが
取得が上手くできません
2016/11/08(火) 02:13:54.72ID:crOcTVn5
WndProc内で、

Select Case m.Msg
Case WM_IME_STARTCOMPOSITION
ForIME = True

Case WM_IME_ENDCOMPOSITION
ForIME = False

Case WM_IME_COMPOSITION
If (CUInt(m.LParam) And CUInt(GCS_COMPSTR)) > 0 Then
Dim intLength As Integer
Dim Imc As IntPtr = ImmGetContext(Handle)

intLength = ImmGetCompositionString(Imc, GCS_COMPSTR, Nothing, 0)
Dim IMEstr As StringBuilder = New StringBuilder(intLength)

ImmGetCompositionString(Imc, GCS_COMPSTR, IMEstr, IMEstr.Capacity)

ImmReleaseContext(Handle, Imc)
End If
End Select

こんなかんじで書いてみているのですが、
intLength = ImmGetCompositionString(Imc, GCS_COMPSTR, Nothing, 0)
↑この部分でDLL 'imm32.dll' の 'ImmGetCompositionString' というエントリ ポイントが見つかりません。というエラーが出てしまいます。
2016/11/08(火) 02:15:58.84ID:crOcTVn5
ImmGetCompositionStringは、
Private Declare Function ImmGetCompositionString Lib "imm32.dll" (ByVal hIMC As Integer, ByVal dwIndex As Integer, ByVal lpBuf As StringBuilder, ByVal dwBufLen As Integer) As Integer
と宣言しています。
2016/11/08(火) 02:21:59.90ID:KFsAZFmi
>>419
テキトーに答えるけどとりあえずハンドルはIntPtrでないとダメでしょう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。