VB.NET質問スレ(Part44)

■ このスレッドは過去ログ倉庫に格納されています
1.(もんじゃ)
垢版 |
2018/05/26(土) 18:08:49.12ID:QSlAAqmb
前スレ

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/
VB.NET質問スレ(Part43)
https://mevius.5ch.net/test/read.cgi/tech/1465958469/
2020/03/11(水) 00:23:16.32ID:GqpGZ1Mw
MS公式のコメント「VBにはVBが得意なことをやらせていく。それはGUIアプリだ」らしいよ
つまりWinFormsと心中ってこと
2020/03/11(水) 00:48:30.22ID:c1ui4p9T
今のアプリ開発の主流ってwinformじゃないとしたら何なのかな?uwpとか?
2020/03/11(水) 09:11:45.72ID:EwkphdrI
Webだね
2020/03/13(金) 08:44:53.50ID:PtKOn5Hp
Visual Basic support planned for .NET 5.0
https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/

Going forward, we do not plan to evolve Visual Basic as a language.
Future features of .NET Core that require language changes may not be supported in Visual Basic.
Due to differences in the platform, there will be some differences between Visual Basic on .NET Framework and .NET Core.
2020/03/21(土) 17:03:50.80ID:VTVjP0EK
うーん VBで文字列うんたらに苦戦してた時
ハッシュ値で比較を行ってたな。こっちのほうが楽wwwてか?
VBer vbER vBeR VbEr VBer
2020/03/22(日) 11:47:18.20ID:7CEeDXD0
ToLower又はToUpper一択だろJK
2020/04/20(月) 11:25:10.38ID:ySL+EKEE
>>425
.NET CoreからVBは捨てられたって事か
2020/04/20(月) 11:27:06.29ID:ySL+EKEE
>>425
逆か
.NET Core5でサポートとして追加か
2020/04/20(月) 12:52:39.83ID:VsS0xV8o
>>429
違う
今後VB.NETの言語に新機能を追加することはないよ、
仮に今後.NETに言語へ手を入れないと利用できない新機能が入ったとしても、VB.NETは対応しないよ、という趣旨の記事
ちなみに .NET 5 (=Core vNext)でVB.NETはサポートされるが、Classic ASP.NETは廃止されるのでWeb開発は一切できない
2020/04/21(火) 23:30:04.84ID:bKJAedUq
ASP.NET触らなくて正解だったな。
2020/04/22(水) 13:11:15.32ID:7hKP3waC
Razor使わないならOKじゃん

953 名前:デフォルトの名無しさん[sage] 投稿日:2020/04/22(水) 10:51:55.72 ID:NZfVsFFq
>>952
それは正確じゃない。Razorが対応してないだけ。

954 名前:デフォルトの名無しさん[sage] 投稿日:2020/04/22(水) 12:49:27.63 ID:7hKP3waC
Razor使わないならVB.NETでASP.NET構築出来るって事ね

955 名前:デフォルトの名無しさん[sage] 投稿日:2020/04/22(水) 12:55:16.39 ID:NZfVsFFq
そう、.NET5でもそれは変わらない
2020/04/22(水) 14:22:47.26ID:7hKP3waC
Razor PagesでVB.NET使えば良い
2020/04/23(木) 13:41:34.28ID:CV1hjWbG
https://www.google.com/amp/s/forest.watch.impress.co.jp/docs/news/1240/998/amp.index.html

ASP.NET Core Web API
で使えばVB.NETで開発出来るって事か
2020/04/23(木) 13:44:38.15ID:CV1hjWbG
https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern-web-apps/

Angular、Visual Basic、.NET Coreを組み合わせて最新のWebアプリを開発
2020/04/23(木) 14:35:35.04ID:CV1hjWbG
あえて.NET CoreにしなくてもmonoでVB.NET開発する方がシンプルだな
2020/04/26(日) 14:43:33.28ID:ecUYIEQ+
Monoプロジェクトで実際LinuxでVB.NET使って開発してる様な所って有るのかね?
あまり話聞かないし、案件探しても出て来ないよ
2020/04/26(日) 22:39:36.60ID:N4kJSNdj
Linux触れて且つVBしか分かりませんなんて人は逆にレアだろうし…
2020/04/27(月) 08:10:06.01ID:7JzwHqQw
monoって分からんけどapi使ってたらダメなんだよね?
じゃあ意味ねーな
2020/04/27(月) 13:18:16.31ID:5OjyJ5Fz
>>438
Linux+C#もレアだよ
Linux+JavaやCならそれなりにいる
2020/04/27(月) 18:09:59.53ID:rW6Iy+vY
レアよりウェルダンが好き
2020/04/28(火) 11:13:17.93ID:8SPWdl3l
面白く無い
2020/04/29(水) 09:58:03.17ID:mDWjB1wT
最近見かけたんだけど
Dim aaa As (String, String)
こういうのって型は何になるの?
匿名クラスなの?配列?
2020/04/29(水) 11:44:19.82ID:EiYIraX1
ValueTuple(Of String, String)
2020/04/29(水) 11:57:07.06ID:mDWjB1wT
あぁ、ありがと。item1とかitem2とかあるからクラスかと思ったが構造体なのね。
2020/04/29(水) 13:25:09.17ID:3EOLvZrk
dictionaryかなと思ったが(of が無いしなあ…とも思ってた
447デフォルトの名無しさん
垢版 |
2020/05/01(金) 20:30:50.40ID:cip99ITm
プロジェクトにフォームが2つあるのですが、その両方から参照する構造体の定義は
どこに書くのが一般的なのですか?クラスだと「追加」→「新しい項目」でクラスを選択できて
独立したファイルでクラスの定義をかけるのですが、構造体はどういうやり方が一般的なのでしょうか?
448デフォルトの名無しさん
垢版 |
2020/05/01(金) 20:33:08.68ID:cip99ITm
ちなみに現在は2つのフォームのファイルの先頭で構造体を定義しています。やり方がスマートじゃない気がします。
2020/05/01(金) 20:37:46.03ID:5cKYuGCZ
スコープ広げるだけじゃ不満なんか?
2020/05/01(金) 20:44:20.47ID:yoq0hK+K
VB.NETでは構造体を使うこと自体が全く一般的ではない
C#では性質を十分に理解した上でパフォーマンス目的で構造体を使うことも稀にあるけど、
VB.NETでそんな最速を目指すようなものを作ることは無いだろう
クラスだけでいいよ
2020/05/01(金) 21:05:13.13ID:00XG9ArW
api呼ぶのに構造体なんていくらでも使うしそうでなくても構造体の配列とか普通に使うし
あと共用出来るメソッドはなるべくモジュールに書いてコントロールからはそれを呼び出すだけにしてる
452448
垢版 |
2020/05/01(金) 21:25:29.62ID:cip99ITm
皆さん、ありがとうございます。>>449 さんのおっしゃるとおり、スコープを広げれば良さそうですね。
>>451さんの言うようにモジュールに書くのもいい感じですね。
>>450さん、VBではあまり構造体は使わないのですね。私の読んでる基礎入門書だから一通りの説明ということで載ってるのでしょうか。

皆さん、ありがとうございました。とりあえず、モジュールを追加してその中でpublic宣言して構造体を書いておきます。
453空に憧れて
垢版 |
2020/05/01(金) 21:50:11.93ID:uWXr5/uR
こういうの見つけたけど・・・
https://www.nicovideo.jp/watch/sm35028808
454デフォルトの名無しさん
垢版 |
2020/05/01(金) 22:14:01.29ID:jPGYGLkU
>>452
クラスと同じように1構造体に対して同じ名前のファイルを割り当てるのが基本だと思うよw

もちろん雑用的な小さな構造体やクラスやEnumや例外をまとめて一つのファイルに
書くこともある。

後でその方が分かりやす思ったらその時そう直せばいいだけ。
とりあえず構造体と同じ名前の専用のファイルを作った方がいいでしょ。
455デフォルトの名無しさん
垢版 |
2020/05/02(土) 00:30:37.50ID:IPzoHZpp
>>450
馬鹿なのか?
2020/05/02(土) 05:38:07.67ID:KJskOYTt
Ruby では、普通の開発者は、Class を使う

わざわざ、Struct(Class Generator)を使うのは、
Rails などのフレームワークを作っている人だけ

ほぼ同じなのに、素人がわざわざ、Struct を使う理由もないし、
初心者用のテキストにも載っていない
2020/05/02(土) 11:51:52.07ID:TijFnmRA
RubyのStructとは別物なのでこのRubyキチガイは無視していいが、それはともかくVB.NETでは構造体は特別に理由がない限り使うべきではないというのは確か
APIくらいだね
それ以外でVB.NETで構造体が使われるのは、大抵は生え抜きVBerの癖だったりクラスはなんか難しそうなイメージによるもの
2020/05/02(土) 12:20:36.35ID:C/cU2Pk2
なんで宣言した上にNewしないといけないのかって感じで
クラスに嫌悪感持ってる老人がいるよな
459デフォルトの名無しさん
垢版 |
2020/05/02(土) 12:23:36.53ID:IPzoHZpp
外部機器とのインターフェースとか他のDLLとか使ったことのない馬鹿が必死になって構造体を否定する
馬鹿が使わないからといって全員が使わないわけではない
2020/05/02(土) 14:50:21.99ID:yrIdzbPa
>>457
何で使うべきじゃないの?
全く分からないんだが
461デフォルトの名無しさん
垢版 |
2020/05/02(土) 15:01:27.49ID:k5W2smL8
ちょっと前C#スレの方で話題になった話だけど、プロパティーの型としては構造体の方が便利。

値型からわざわざイミュータブルにしなくても、ゲッター経由でメンバーを変更する
不適切な使い方を避けられるからね
2020/05/02(土) 15:45:14.98ID:lt4kIJ5o
VB.NETで構造体を使うべきでないなら、C#でも使うべきではないし
C#で構造体にすべき場面なら、VB.NETも構造体にすべき

VB.NETならとかいう前提をつけて構造体を使うなとかいうのは意味不明

まあ、初心者が違いが分からず悩んだら、たいていの場合はクラスで良いけどな
2020/05/02(土) 15:49:51.90ID:lt4kIJ5o
>>461
それはプロパティがイミュータブルであってほしいときに限らなくね?

すべてのプロパティはイミュータブルであるべきだって主張ならしらん
464デフォルトの名無しさん
垢版 |
2020/05/02(土) 16:45:23.55ID:xKYh4A8p
こういうレスみてると、絶対にプログラマになりたいとおもわないな。
構造体つかうな!とか ストレス以外の何物でもない。
2020/05/02(土) 17:04:30.50ID:9Lg3EemN
まあVB.NETでやたら構造体を多用する奴はだいたい単に慣れてるからなのは事実
クラスがCOMだった時代で頭が止まってるんだよ
466デフォルトの名無しさん
垢版 |
2020/05/02(土) 17:09:29.84ID:k5W2smL8
>>463
何を言ってるのか意味がわからないよw

プロパティーの型がミュータブルな参照型だと
hoge.Piyo.X = 5
みたいに書けてしまう問題があると言ってるんだけどw

Piyoの型が値型ならこういう書き方は許されない
2020/05/02(土) 18:38:59.19ID:lt4kIJ5o
>>466
だから、それを許したくないときの話だろうと言っている
すくなくとも文法上問題はないし、正常に動作する(それが狙った通りかどうかは知らんが)

それをやるべきではない/許すべきではないという主張は別の話だと
468デフォルトの名無しさん
垢版 |
2020/05/02(土) 19:22:25.42ID:FZg5GNY0
>>467
もう何も言わないけど
hoge.Piyo.X = 5
なぜこれが許されることが問題なのか全然理解してないでしょw
こういうのはプログラミング始めて数か月の段階で理解すべき内容なんだけど
469デフォルトの名無しさん
垢版 |
2020/05/02(土) 20:50:45.16ID:IPzoHZpp
>>468
馬鹿はそろそろ消えろ
構造体が必要な場面があるだろうが
470デフォルトの名無しさん
垢版 |
2020/05/02(土) 20:56:07.76ID:FZg5GNY0
>>469
この子も酷いねw
だからそう言ってるんですがw
2020/05/02(土) 22:08:43.50ID:SnBbYQQq
>>470
お前が一番馬鹿消えろ
2020/05/03(日) 09:15:07.29ID:hVYH2JxT
>>469
勘違いは止めよう。
構造体が必要な場面の1つを>>468は言ってる。
2020/05/03(日) 13:09:51.85ID:jHKSsTzt
必要じゃなくて、有用な
2020/05/03(日) 13:43:41.44ID:kXYwWgoI
>>473
必須なのがあるだろうが
2020/05/03(日) 16:49:52.65ID:XzUWWqsm
んで結局構造体を使うな君は何で使うなって言ってるの?
C#やC++だったら使ってよくてVBだからダメとかそんな理由??
2020/05/03(日) 17:39:01.80ID:4AL78RwH
だから特別な理由なしに使うなって話でしょ
実際VBerは歴史的な理由から比較的そうなりやすい
477デフォルトの名無しさん
垢版 |
2020/05/03(日) 18:11:09.31ID:Nh63+SyM
自分が使わないからと他人に押し付ける頭の悪いのがいるな。こういう頭の悪いやつはクラスの設計も独りよがりになりがち。
2020/05/03(日) 18:48:23.30ID:+XnqjSE6
つーかpointだって構造体なんだが
そっかー、使うな君はpoint使わないのかー
2020/05/03(日) 19:42:25.18ID:+mGec9Yp
意味不明だな
自分で定義するときにクラスとどちらを選ぶかの話だろ?
Pointが構造体なのは、それが単一の値を意味しているしサイズも小さいしアンマネージコードとの相互運用に使うし
パフォーマンスが求められる場面で大量にインスタンスを作るような使い方が想定されるからだ
そうやって説明できるなら構造体を使えばいい
2020/05/03(日) 19:50:06.83ID:jHKSsTzt
結論
適切に使い分けろ
わからんかったらクラスでOK
2020/05/03(日) 20:33:43.70ID:7AFUUPUE
ポインターの話はそこまでだ!
2020/05/04(月) 17:11:14.33ID:zDJH0Fae
ポインターよりボインだー
483デフォルトの名無しさん
垢版 |
2020/05/23(土) 20:06:08.36ID:95GpHqv3
WCFを利用したフォームアプリを作成したいのですが、疑問があります(初歩的ですみません)

今回フォームがログイン、メニュー・・・といった感じで複数画面あります。
ログイン画面作成時にWCFとログイン画面のフォームを作った場合、メニュー作成するときWCFは新規に作成する必要があるのでしょうか?
2020/05/25(月) 00:53:51.16ID:75tsCqjl
WCFはフレームワークであってWCFを作るという表現は意味不明
サービスのことならどっちでもいい
ちなみにWCFは.NETの次のバージョンでは廃止されるから、お前に選択権があるならやめるべき
485デフォルトの名無しさん
垢版 |
2020/05/29(金) 17:09:45.32ID:5vHDJzPq
For iABC = 1 to 5
For i1 = 1 to 5
For XXYYZZ = 1 to 5
For 適当 = 1 to 5
みたいに毎回重複しない変数を用意しないとだから
指定回数ループする変数いらないヤツないの?
2020/05/29(金) 17:50:02.55ID:9O0dREg7
>>485
REXXだと正にそのものズバリの
Do 99
End
てのがあったんだけどねw
まあ普通ループカウンタの無いループの必要性ってあまり無いわな
2020/05/29(金) 18:58:38.48ID:5vHDJzPq
ふむ
2020/05/30(土) 18:44:40.27ID:umBvqxFr
LinqでRangeでForEachとか考えたけど、LinqのForEachってListしかだめなのかよ

Enumerable.Range(1, 5).ToList.ForEach(Sub() Debug.Print("Do!"))
素直にループ変数用意して回すほうがましだな
i,j,kぐらいで足らんようなら構造見直すべきだ
2020/05/30(土) 20:02:00.03ID:u5EvYy7J
おk
2020/05/31(日) 11:53:52.38ID:WVMdZLNI
.net coreだとvbはオワコンなのか
491デフォルトの名無しさん
垢版 |
2020/06/03(水) 14:46:36.88ID:lsOJv1ox
Windows FormのボタンをButton配列で動的に設定している処理があったのですが
静的と動的はどのように使い分けているのでしょうか
ボタンの数が多かったのと関係しているのでしょうか
2020/06/03(水) 15:07:50.89ID:def00RCS
>>491
「Button配列で動的に設定している処理」が何やっているか読めよ
人によって組み方は変わるからここで聞いたって的外れな憶測しかできんよ
2020/06/03(水) 15:50:36.18ID:4wtvyY9A
デザイナでポンポン配置するのが面倒じゃなければ性的
こんな数配置してらんねーと思ったら動的
2020/06/03(水) 16:35:27.00ID:0BifsHqi
プログラミングしながらおっ勃ててるとかどんだけ変態なんだろう…
495デフォルトの名無しさん
垢版 |
2020/06/03(水) 21:13:59.52ID:bZHkJmU/
毎回婦裸具をオッ立ててます
2020/06/07(日) 10:21:30.67ID:OTu6GsJm
>>490
一応サポートされる
が、C#メイン
2020/06/12(金) 01:23:39.99ID:IFr8Enpr
しかし、自作アプリからプリンターに印刷するってこんなに難しいのか?
狙った場所に印刷が出来なくて・・・どうしよう・・
498デフォルトの名無しさん
垢版 |
2020/06/12(金) 01:38:26.30ID:4psGVQqc
>>497
そんな難しくないと思うよw

もう何年もやってないから適当だけど、たぶんプリンタ固有の余白分ズレてるだけ。
GDI+の原点は用紙の左上ではなく、印刷可能領域の左上になってる。
この問題の対処法はググれば簡単に見つかるはず
2020/06/15(月) 00:22:01.70ID:F2ztfrtI
>>498
ありがとう。
印刷可能領域の左上なのね。
500デフォルトの名無しさん
垢版 |
2020/06/15(月) 01:19:49.90ID:rIWPArQR
Sub Main(args As String())で引数を渡さないで実行してもエラーにならない理由わかる方いませんか
2020/06/15(月) 01:44:39.21ID:BwepjBUz
むしろなぜエラーになるのか?
どんなエラーになると思ってるんだ
2020/06/25(木) 20:30:11.66ID:0L1EfJ/H
voidって言いたいのかな
2020/07/06(月) 19:38:36.21ID:fgkMQ2Bx
デザイン時に設定したプロパティの値(例ではTextBox1.Text)を実行時に取得する方法ってありませんか?
今はLoad時に変数に保存していますが、もっとスマートな方法は無いものかと…

Public Class Form1
   Dim defaulttext As String

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      defaulttext = TextBox1.Text
   End Sub
End Class
2020/07/07(火) 09:49:09.58ID:S3jLpbFZ
標準にはないね
汎用性を考えだすとIDisposableな型のプロパティとかどうするかって話になるし
505デフォルトの名無しさん
垢版 |
2020/07/07(火) 12:25:34.75ID:pZRFuct6
>>503
それでいいじゃん。
そもそも発想が変だと思うよ。
たぶんデザイナをブラックボックスだと考えてるからそうなるんだと思うけど。
デザイナは単にコントロールのプロパティーを設定するコードを自動生成してるだけw
それがInitializeComponent

まあ、プロパティーをデザイナで直接設定する代わりに
スコープをアプリケーションにしたアプリケーション設定にバインドすればたぶんやりたいことは実現できる。
https://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html
2020/07/07(火) 14:13:03.22ID:wq2UphxJ
そもそもデザイナの設定なんで、実行時どころかコンパイル時で決定してるのに
それをなぜ実行時にコントロールから取得する必要があるのか
507デフォルトの名無しさん
垢版 |
2020/07/07(火) 18:21:35.43ID:sasngkCi
>>506
実行時に取得したくないからなんかないかってしつもんだぞ
508503
垢版 |
2020/07/07(火) 20:39:38.96ID:sfvoUyQU
皆さんありがとうございます。
例えば、テキストボックスの内容を初期値に戻すリセットボタンを付ける時など
デザイン時に設定した値を変数を使わずに簡単に呼び出せたらと前々から思っていました。
リソースを使うのがセオリーと思いますが、小規模なプログラムだとデザイナで設定する方が手軽なので…

TextBox1.Text = (New Form1).TextBox1.Text
↑のように新たなインスタンスを作ることも思いつきましたが効率が悪そうなので
>>503のコードのままにしようと思います。
509デフォルトの名無しさん
垢版 |
2020/07/07(火) 21:34:03.12ID:pZRFuct6
不特定のコントロールの不特定のプロパティーについて同様のことがしたいわけじゃなく、
特定のコントロールの特定のプロパティーで十分なら継承してResetTextみたいな
メソッドを追加しちゃうとすっきりするとは思う。
2020/07/07(火) 22:26:57.54ID:v9/yiQ7v
textboxならtextとtagに同じ値入れときゃいいんじゃね?
俺は内部からセットした時とユーザー入力区別するために使ってるけど
2020/07/08(水) 15:52:04.01ID:VvU4Rgja
tagってデザイン時に設定できたっけ?

結局起動後のユーザーコードでごちゃごちゃやるなら
用途に応じたコントロールに拡張すればってなるんじゃね
2020/07/08(水) 16:02:56.91ID:WXMpgQLP
デザイン時にも設定できるけどデザイン時に設定する仕様だと
絶対どこかで「TextとTag両方同じ値を設定」を忘れるから悪手
2020/07/08(水) 16:25:53.40ID:027Ge3m+
リセットボタンのClickイベントで、TextBoxに初期値をセットするコード書いて、
フォームのLoadイベントにも上記リセットClickを割当て(もしくはリセットClickを呼ぶコード書く)
同じことに実現できる気がしないこともない
2020/07/08(水) 19:32:20.68ID:VvU4Rgja
>>513
イベントハンドラから、違うイベントハンドラを直で呼ぶのは作法がよろしくない
初期化するプロシジャ書いて、リセットボタンのClickイベントとフォームのLoadイベントから呼べ
2020/07/08(水) 20:30:06.21ID:R3hJGdkL
>>512
Loadでコントロール全部舐めてTagにセットしてくって手はある
(コンテナが面倒くさいけど)
2020/07/12(日) 15:29:18.48ID:eH2rQS7C
Go To キャンペーンてなに?
2020/07/12(日) 15:31:59.68ID:lYrXBW+z
Gotoは使うなと爺ちゃんが言ってた
2020/07/13(月) 17:47:03.41ID:09itA6vs
強盗
2020/07/13(月) 17:59:31.89ID:aaJV9hNQ
∀B.ET「強盗ではありません。ごーつーです。」
2020/07/14(火) 16:33:50.53ID:lxjN9fvu
>>514
それはMSのガイドラインかなんかで定められてるん?
521デフォルトの名無しさん
垢版 |
2020/09/10(木) 11:00:21.02ID:1IS0tpD0
アホみたいな質問ですが投下させてください。

VBによって作られたソフトの改造業務をやることになったのですが
Propertyについての理解がネット記事を読んでも理解できません。

<宣言サンプル>
Public Structure ABC

Public Property SAMPLE(ByVal LONG as long) as boolean
Get
Return CBool(LONG And 0x0010)
End Get
Set(ByVal value as boolean)
'なにもしない
   End Set
End Property

End Structure

<実装サンプル>
For i=1 To 5
Strings = IIF(ABC.SAMPLE(i),"OK",NG")
Next

一部処理を省略していますが、
特定条件下で入るSAMPLEパラメータを基にして
条件分岐してるみたいですが
GETとSETの違いが全く理解できず
実装サンプルの構文の意味が理解できません。

初心者で申し訳ありませんが何卒ご教示お願いしまs
2020/09/10(木) 16:49:27.51ID:fVezAmUD
SET 設定する
GET 取得する
日本語だろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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