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/
2017/02/21(火) 22:26:45.05ID:zN7/wz8g
>>508
私がコピペした部分じゃ足りないですか??
じゅうぶんだと思うんですが。
2017/02/22(水) 10:13:28.88ID:hB8WtiG5
そこで足りると思うんなら
ステップ実行でわかるだろうよ
2017/02/22(水) 11:03:24.94ID:di0eqEJ2
>>510
ステップ実行なんてのがあるなんて知りませんでした。
ありがとうやってみます。
2017/02/25(土) 08:49:36.06ID:Z1WBMYZL
dllのロードに関して質問がございます。

---------- ディレクトリ構成 -------------------------------------------------------
[1]C:\AppDir\Main.exe 実行ファイル
[2]C:\AppDir\Parts.dll 実行ファイルから参照設定される

[3]C:\AppDir\SubDir1\Function.dll [1]の実行ファイルからAssembly.LoadFromで呼ばれる
[4]C:\AppDir\SubDir1\Parts.dll [3]から参照設定される

[5]C:\AppDir\SubDir2\Function.dll [1]の実行ファイルからAssembly.LoadFromで呼ばれる
[6]C:\AppDir\SubDir2\Parts.dll [5]から参照設定される
--------------------------------------------------------------------------------

[3]のdllと[5]のdllを実行ファイルで選択した内容によって切り替えてロードするのですが、
[4]と[6]のdllを参照せずに、実行ファイル起動時に自動でロードされる[2]のParts.dllを読み込みに行きます。

機能追加やデータ構造の変更に伴うメソッドの修正で[2]と[4]と[6]の内容が一致していない場合に、
MissingMemberExceptionが発生してしまいます。

[2]のParts.dll に修正が発生した段階で、[4]と[6]をビルドし直して配布する必要があり、
出来れば[2]のParts.dll の修正と切り離して管理したいと考えております。

既に実行ファイル起動時に[2]がロードされている状態で、
[3]をロードする場合は[4]を、[5]をロードする場合は[6]を参照するような方法はございますでしょうか?
2017/02/25(土) 10:35:53.15ID:WSmv7/tX
俺はexe一個にしたい派なので。
2017/02/25(土) 12:23:39.45ID:S4wbN3RD
>>512
MEF使うとか
515512
垢版 |
2017/02/25(土) 21:04:10.95ID:Z1WBMYZL
>>514
ありがとうございます。
プラグインという発想はなかったので、
MEFについて知識が乏しいので調べて見ます。
2017/03/03(金) 18:45:03.41ID:7BBiAnh4
integerで50000つかえたっけ?
2017/03/03(金) 18:46:31.69ID:oIwShl3c
余裕のヨッチャン
2017/03/04(土) 17:05:37.98ID:jyXc82yN
シリアル通信で受信処理について教えてください
パケット構造が固定長で"STX" + 10BYTE + "ETX"の12バイト構造となっています
ReadByte()で1バイトずつ取得して配列に格納しているのですが、
連続受信中何かの拍子に配列がずれて1バイト目が"STX"や12バイト目が"ETX"とならない場合があります
こうなった場合、以降の受信も配列が崩れて処理ができなくなります
一般的にどのような対策をするのでしょうか
配列の1バイト目、12バイト目が"STX","ETX"でなければ何か処理をすればよいのだと思いますが・・・
2017/03/04(土) 17:28:05.56ID:4F1kG7wq
1バイト目とか12バイト目とか意識するのがまずいのでは?
STXが来たらバッファに詰めていくETXが来たらそれを取り出すで
問題ないと思う。
2017/03/04(土) 18:24:21.25ID:W250mNnr
>>518
単純なステートマシンで対処できるでしょw

っていうか、教えられなくてもそれぐらいのこと思いつくようでないと
実用的なプログラムなんて何も書けないよw
2017/03/04(土) 18:51:32.79ID:NAI/204b
何バイト目かを意識するのがまずいのもあると思うけど
そういうのってエラー検知して再送じゃないの?
2017/03/05(日) 03:05:35.57ID:L54Sdfag
>>519
それにしたってバッファは無限なわけじゃないし
ETXが来るかバッファをオーバーしたら、 だな
バッファオーバーのチェックはさぼらない癖つけとくほうがいいぞ

>>521
>>518はエラー検知が出来なくて困ってるわけだが
2017/03/05(日) 03:20:26.95ID:f1XixyjT
>>522
え?1バイト目がSTXじゃなくても検知できないの?
BCCのチェックだけの話じゃないよ
2017/03/05(日) 09:04:24.11ID:ZV0AIXGV
まぁSTX〜ETXまで精々数百バイトだろうし、大げさに騒ぐほどじゃないな
ETXの後ろにBCCあるタイプだとして

俺がよく使うのは System.Collections.ObjectModel.Collection(Of Byte) なバッファ用意しといて

1.ReadByteの内容がSTXだったら バッファ.Clear した上で ReadByteの内容(STX)をAdd
2.STX以外だったら
   2-1.バッファの最後尾が ETX だったら、今きたのはチェックサムと思って ACK/NCK 返しつつメイン処理へ受け渡し
   2-2 バッファの最後尾が ETX じゃなかったら、ケツに Add
2017/03/05(日) 09:06:20.08ID:ZV0AIXGV
×    2.STX以外だったら

○    2.STX以外で、かつバッファの先頭は STX だったら
○    3.STX以外で、かつバッファの先頭は STX 以外だったらゴミデータとしてスルー
2017/03/05(日) 09:16:08.94ID:4Mp9Np6+
>>524
なんでCollection?
Collectionはコレクションクラスを自作するときに使うもので、普通、一般的に使われる動的配列の実装はList(Of T)だよ
2017/03/05(日) 12:15:05.55ID:ZV0AIXGV
軽そうなイメージ
2017/03/05(日) 12:45:52.11ID:u6nsQtE2
なんかアホな議論してるけど、上にも書いたが必要なのは質問者が
ステートマシンという超簡単な概念を一つ覚えて使う、それだけ。
2017/03/05(日) 13:16:04.21ID:4Mp9Np6+
>>527
List(Of T)の方が速いし軽い
というかCollection(Of T)は実装を全部List(Of T)に丸投げしてる
継承してメソッドをオーバーライドすることで要素の追加削除時に独自の処理を入れられるように
いくつか拡張ポイントを追加してあるだけ
継承しないなら何の意味もない、むしろ誤解を招くだけだから使わない方がいい
List(Of T)は後で独自の処理を入れたくなったときに実装変えられないからクラス外に公開するべきではないというのもあるけど、
それを考慮するならCollection(Of T)ではなく IList(Of T) を使ったほうがいいし
2017/03/05(日) 13:27:50.14ID:Q4pvsIt3
VBerにとって、VBが輝いていた時代を共に駆け抜けた旧友を想起させる特別な名前、それがCollection
気持ちは分かるが.NETのCollectionは彼とは何の関係もない別人なんだ
もういい加減過去に拘るのはやめて前へ進もう
2017/03/05(日) 14:12:32.50ID:Xaz4+HsB
ステートマシンとかいう概念を知らなくても普通は思いつくけどね
2017/03/05(日) 14:21:01.11ID:dGez6Bo2
質問者がデータは10バイトの固定長だって言ってるんだから
Listを使う必要もなければ、STXだのETXだの本来不要なゴミを取っておく必要もない

なんかしょうもない話してるよな本当
2017/03/05(日) 14:31:06.98ID:x9pPtpWR
MSAMでCOMポートからチマチマデータを取ってた世代には(ry
2017/03/05(日) 16:01:29.71ID:u/xcfN5N
VBと過ごした青春
なんか嫌だなそれ
2017/03/09(木) 20:01:49.55ID:ouxZaahl
簡易的にずれてたらETX来るまで1バイトずつ取り込んで読み捨てすればいいんじゃね?
2017/03/10(金) 17:23:20.12ID:tq5lUfKn
タプルっていう存在を今、初めて知ったんだけど。
複数の値を返すのはいいけど・・・
こんなんじゃなーいって思ったのは俺だけかな?
2017/03/10(金) 18:38:21.20ID:wvkqDHaL
>>536
具体的に
2017/03/10(金) 19:46:18.91ID:PPM6ZnbB
デコンストラクタでタプルも扱いやすくなる
2017/03/13(月) 21:14:52.90ID:4mOoeOmZ
Visual Basicの今後
https://www.infoq.com/jp/news/2017/03/vb-strategy
2017/03/14(火) 00:27:16.98ID:pXYRmO5x
Microsoftも見限った感あるし流石にもうそろそろ消滅の流れじゃないか
541デフォルトの名無しさん
垢版 |
2017/03/14(火) 19:24:57.60ID:O/GpwfFn
C#に移りなよ
ってかもうみんな両用してるか
2017/03/18(土) 20:44:47.06ID:ybox44GA
バッファがの処理が追い付かないときの為のフロー制御だよな
2017/03/18(土) 21:33:24.54ID:TQTGmQah
C++ならともかく、VB.NETとC#の違いなんて、東北弁と九州弁の違いでしかない
2017/03/22(水) 21:49:26.12ID:Lj+MxEQk
今日見た関数が戻り値の型がBooleanで条件によってはTrueを返す、という関数でした
ただその条件分岐に引っかからなかった場合どこにもFalseを返すとは書いてませんでした
自分で試してみたところその場合はFalseになったのですが、これは言語仕様
がそうなっているということですか?
可読性はともかく特に使っても問題ないでしょうか?
2017/03/22(水) 21:58:23.84ID:A/QsCQKR
バカなの?
https://msdn.microsoft.com/ja-jp/library/wts33hb3.aspx
2017/03/22(水) 22:09:21.64ID:Lj+MxEQk
>>545
これは最初に読んだんですが既定値とやらと戻り値の関係がいまいちわかりませんでした
ただそう言われるなら問題なさそうですね
ありがとうございます
2017/04/05(水) 19:56:28.05ID:xPaGCN9C
保守
2017/04/06(木) 19:31:30.11ID:rlwdMpi7
転職の為にC#覚えたらVB.NET使う会社だったでござる
2017/04/06(木) 20:36:44.15ID:wEtvCq9a
>>548
おつです
2017/04/12(水) 22:53:43.53ID:ozjVA+Qe
VB2010で質問です

いくつかのフォームで構成されるフォームアプリケーションを作ろうとしているのですが、プログラムの性質上
複数のフォームにおいて共通した処理を行うことがしばしばあります
そこでそれらの処理に使う変数や関数を特定のフォームかクラスに記述して、各フォームから呼び出して
使おうかと思ったのですが、かなり計算が多いプログラムなだけに呼び出しのオーバーヘッドが気になっています。
そこで知りたいのですが

1. 共通する変数や関数をどこかのフォームやクラスで宣言して、他のフォームから呼び出す
2. 各フォームで同じ名前の変数や関数を宣言してそのフォーム内で使う

上記2つのどちらが性能的には有利なのでしょうか?
もし個々のフォーム内でそれぞれ定義する方が高速なのであれば、コードが重複して無駄ができるのは承知の上で
2の方法を使うのもありかなと思っているのですが・・・
1の方が高速あるいは両者に速度差がないのであれば、コードが読みやすくなるので1のやり方にしたいと思ってます

あまりオブジェクト指向もよく理解できてないのですが教えて貰えると有難いです
2017/04/13(木) 00:40:28.65ID:aK+zC0HQ
呼び出しのオーバーヘッドなんか事実上ゼロだよゼロ
ラベルの文字列を書き換える処理とかに比べりゃ地球全体の中の一粒の砂レベルで全く完全に無視できる
2017/04/13(木) 08:07:04.82ID:ai7IR4kG
>>551
どうもです
ベクトルの加減算や回転といった処理を数百回行い、それを1秒あたり1万〜十数万回
ループで繰り返すという処理だったので、呼び出しにある程度オーバーヘッドがあると
性能に影響してくるかなと思ったもので・・・

オーバーヘッドが無視できるレベルなのであれば1でいってみようと思います
2017/04/13(木) 08:49:18.21ID:aK+zC0HQ
無視できるというか、メソッド呼び出しやフィールドへのアクセスにおいて
クラスを跨るかどうかはオーバーヘッドの大小には直接影響しない
2017/04/13(木) 11:17:50.97ID:bkaO+5D1
.NETである時点で相当のオーバーヘッドだからな
2017/04/13(木) 11:46:33.00ID:ai7IR4kG
了解です
気にするだけ無駄なので分かりやすいコードで書くのがいいってことですね

>>554
計算部分をCでDLL書いてそっちに追い出すのも考えてはいますが
データの受け渡しがかなり面倒そうなのでとりあえずはVBで書いてみます
2017/04/13(木) 23:28:05.42ID:JnRQ5+VJ
それなら全部Cで作れば良いのに
2017/04/15(土) 22:46:29.93ID:2Thsns1M
>>556
Cはコマンドプロンプトで動くコンソールアプリなら作ったことがあるんですが、
フォームを使うとなるとユーザーインターフェースの作り方がさっぱりなもので・・・
2017/04/16(日) 07:19:56.00ID:hzBiobtH
>>557
俺も、XView(Solaris2.3)とか、PresentationManager(MS-OS/2V1.21)ならC言語で組んだことあるけど、
Windowsなんて、Access以外で画面作ったことね〜ですだ・・・(;_;)
2017/04/16(日) 07:31:07.72ID:B2UN2zG+
>>557
んじゃ、C++Builderは?
2017/04/17(月) 22:29:23.78ID:juGlbUEK
すいません教えてください。
テキストボックスに9:00と入れてstring型の変数に格納した後ラベルコントロールで表示すると
9になっちゃいます。そのまま9:00と表示するにはどうすればいいですか?
2017/04/17(月) 22:42:29.91ID:lURW6TDB
普通にやればそんなことならんから
普通じゃないことやってるんだろう
2017/04/18(火) 23:09:40.28ID:Aq2OSGis
ちょいと教えてくださいな

ADODB.RecordsetをLoopで更新処理
をADO.NETに変換したいんですが

DataSet.Tables.Count=1
なレコードセットなら
直接
Adapter.Fill(DataTable)
Adapter.Update(DataTable)
しちゃって良いもんなの?

DataSet経由しないとダメ?
2017/04/19(水) 03:21:39.02ID:zfm1mmD/
DataSetじゃないと駄目ならなんでDataTableを引数に取るオーバーロードが
用意されてるのかって話になってしまう
2017/04/21(金) 13:40:32.09ID:z81gUwo8
UIデザインに拘りたくて色々やってるけど、自分の思い通りのデザインにするのに四苦八苦
かと言ってマイクロソフトのダサいデザインは美意識が許さない。
何か良いサイトか本あれば教えてください。
2017/04/22(土) 01:07:35.15ID:qUZ+Jwsq
>>564
とか言ってるやつのデザインは
独自性が強すぎて逆に使いづらかったりする。
566デフォルトの名無しさん
垢版 |
2017/04/22(土) 12:28:09.67ID:3MzzfSUe
どうせUIのデザインと言うより昔流行ったスキンで見た目を派手にするみたいなのがやりたいんだろ
2017/04/22(土) 17:10:56.22ID:okIJiGGM
みんなMicrosoftのスタートボタンは必要って言ってるんだから
そのまま使えばいい。
アップルの真似してなくしたり隠したりするのはオカシイ。
2017/04/22(土) 22:46:24.91ID:Buq8ht/b
WPFなら見た目は自由自在だよ!
569デフォルトの名無しさん
垢版 |
2017/05/08(月) 23:56:45.12ID:thSKMKN/
でも出来ることそんな変わらないんでしょ?
2017/05/16(火) 23:44:33.08ID:B3nxbABI
すいません教えてください
現在就職活動中でプログラマーを目指しているんですが、希望している会社が使用している主な開発言語が
VB.NETらしいのですが、将来的な需要はどうなんでしょうか?雲行き怪しいですか?
2017/05/17(水) 00:17:10.36ID:Id1y7eqA
>>570
やめとけ
VB.NET自体の将来はともかく、君がエンジニアとして成長する上で良い環境とは言えない
2017/05/17(水) 00:24:15.90ID:twHUlOTr
将来的な需要のある言語なんて誰もわからないし、
この業界は進化(変化)が激しいから、最初に何やろうがあんまり関係ない
2017/05/17(水) 00:33:30.94ID:nkA0vPpB
言語の差異なんて無いも同じ
2017/05/17(水) 00:49:58.60ID:8AQDyWzi
>>571
最初にvbを触るのはまずいのでしょうか?
2017/05/17(水) 00:52:28.59ID:aIm9uZNt
最初に.NETから学ぶって割とめんどくさそう
いや、逆に素直に受け入れられるのか?
2017/05/17(水) 08:42:43.96ID:s+0/QlSg
>>574
頭悪くなるよ
言語がどうこうじゃなく、環境が
2017/05/17(水) 12:15:26.26ID:omyPvYqj
>>570
希望する企業に就職する事 < 他の言語を使う、なら他社へ
10年20年後に仕事で使う言語が幾つ残っているのか
そもそもPGという仕事が残っているのか
2017/05/17(水) 16:57:22.28ID:8AQDyWzi
>>576
VBを使う環境がなぜ頭が悪くなることに繋がるのか
かなり気になるので教えてください
2017/05/17(水) 17:04:37.53ID:8AQDyWzi
>>577
その企業は地元で自社内開発をしている会社で教育体制も整っている会社なので
自分としてはすごくポイントが高いんですが、使う言語がVBだけというのが不安で踏み切れずにいます 
将来を考えるのであれば都内の客先常駐系で経験を積んでいく方が良いのでしょうか・・
2017/05/17(水) 17:29:07.25ID:7qQt36O1
VB使ったら頭悪くなるとかありえんけど、まあ、
企業が何であえてC#じゃなくてVB使ってるのかは気になるところではあるね。

何にしろ、冷たいようだけど自分の人生は自分で考えるしかないよw
誰にとっても地雷の会社はあっても誰にとってもよい会社なんてないし。
2017/05/17(水) 17:37:37.24ID:7qQt36O1
ちなみに、俺の前の会社もVB使ってたけど、
.NET以前はVB6使ってたから.NET移行時にVBの方が容易だろうってことで決めたようだったね。

さすがに2008になってあまりにC#と差がついちゃったんでC#に変えてもらったけど
2017/05/17(水) 17:43:17.70ID:TNF12pwP
VB使っているところはVB6からの流れが大部分だと思うよ
おそらく学習コストと意欲の問題で単純に移行する気がないだけ
今はVBもC#も隔たりがなくなってきたからどっちでもいいと思うけど
新たに始めるならC#のほうが優位だよね
2017/05/17(水) 17:52:12.92ID:OyAwlGYD
言語なんて一つ極めれば他の言語は応用でかなり対応可能
現在のVBとC#なら方言の違いみあいなものだから、この二択なら悩むことない
そもそも仕事以外でスキル向上すればいいだけだし
584デフォルトの名無しさん
垢版 |
2017/05/17(水) 20:19:44.74ID:G7cUCqPy
>>583
極めてない人がそういう事言っても全然説得力ないですけど
2017/05/17(水) 21:54:55.30ID:nkA0vPpB
でも言語なんて微々たるものだよ。ほんと。
2017/05/17(水) 22:19:06.68ID:8AQDyWzi
>>583
自分初学者であまり詳しくないのですがプログラミング言語というのは
細かい部分はそれぞれの言語で違うけど大部分はどの言語も共通して似たようなものだから
一つを極めてしまえば、他の言語を新たに学ぶときもさほど苦労はしない、という解釈でいいですか?
2017/05/18(木) 00:47:49.89ID:d+oDyp66
スッキリわかる Java入門 第2版、2014
この本を3回読めば、C# も出来るようになる

たのしいRuby 第5版、2016
この本を3回読めば、Python, JavaScript, Groovy も出来るようになる

この2冊が、言語の基本
2017/05/18(木) 06:40:38.38ID:wJMhN+ja
>>586
そう
大抵の人は新しい環境にもすぐ対応するよ
下地なしでは短期間で習得難しいけど下地あればなんとかなる
2017/05/18(木) 08:20:41.04ID:XKGRIOOr
>>585
そうだね、フレームワークだよね
2017/05/18(木) 08:48:18.90ID:ewg+OcMq
客先常駐で技術を磨ける人材なら独学でも勉強できるでしょうね
2017/05/18(木) 13:45:59.05ID:MLJ8qicI
VBとC#でどっちを勉強するか迷ってVBAにも流用出来そうだからと結局VBに
WPF始めた途端、C#に止む無く移行
英語ペラペラならVBでも行けると思うが、出来ないならC#だな〜
参考になるサイトや文献の量が違いすぎる
2017/05/18(木) 16:01:42.18ID:oyKD852L
両方やってるけど、方言レベルの違いで、VBもC#も大差ないと思うが
2017/05/18(木) 16:32:58.22ID:W1XXuHc6
C#とVB.NETがアメリカ英語とイギリス英語ならVBAはラテン語ぐらいの印象
2017/05/18(木) 16:36:10.78ID:M49g2Wb7
VBAはVB6系だから別物と考えるべき
2017/05/18(木) 16:51:57.80ID:oyKD852L
変数宣言はVBのほうが個人的にはシックリくるかな
型が先ってのが、どうも嫌。

あと、宣言して即座にnewするとき、VBのほうがキレイだと思う

全体的にC#のほうがコード量(横も縦も)が増える感じが。
2017/05/18(木) 17:09:43.50ID:3vEckYLB
C#もvarができてからnew代入の記述は楽になったと思うが
2017/05/18(木) 17:17:20.68ID:M49g2Wb7
コード量はC#のほうが少なくない?
VBのラムダ式はもうちょいシンプルにならないのかね
2017/05/18(木) 17:31:42.82ID:oyKD852L
ああ、俺はVBのときはWITHを頻繁に使うから、かなり短くなってるのか
for() はC#のほうが好きだが
2017/05/18(木) 18:48:43.60ID:XKGRIOOr
>>592
リファレンスの量と質が比べ物にならない
2017/05/18(木) 19:15:11.40ID:fpMTuU/5
ラムダ式にFunction()とかふざけてんのかねホントに
VBとPHPくらいだろそんなの
2017/05/18(木) 20:07:13.03ID:ewg+OcMq
あのFunctionは辛いわ
アロー式で書かせて欲しい
リファレンスは何で書かれててもあんまり気にならないかな
どっちみちやること変わらないし
2017/05/18(木) 20:50:17.90ID:nv0hNXKv
.NET Core対応もC#に比べて周回遅れだけどな
2017/05/18(木) 22:25:51.82ID:anTKPcsr
2008の段階でVBに失望してC#に乗り換えた人は多いと思う
俺もその一人
2017/05/18(木) 22:37:32.52ID:TOOzSAi+
>>598
今時C#でforなんて滅多に使わないだろ
2017/05/18(木) 23:13:32.29ID:anTKPcsr
>>604
なわけないでしょw
コレクションを列挙するだけがループじゃないよww
2017/05/18(木) 23:24:37.27ID:mhJy8/8/
LINQ使えばループの8割はなくせる
2017/05/19(金) 07:11:56.81ID:7jd4CUxw
ループは悪なの?
LINQが高速ならいいけど必ずしもそうじゃないし
2017/05/19(金) 07:37:40.76ID:1J7G/w2H
そういうことはDataTable遊びをやめてから言いなさい
2017/05/19(金) 07:43:19.13ID:mm1qRo/S
>>607
ループが悪なのではなく、LINQが選択肢にすら上がらないプログラマーが悪なのです
速度にこだわりたいならforでいい
が、それだと極端な話ForEachも使うなという話になってくる
かのドナルド・クヌース氏の言うように「早まった最適化は諸悪の根源だ」と考えるべき
チューニングはボトルネックが判明してからでも遅くはないさ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況