X



VB.NET質問スレ(Part44)
■ このスレッドは過去ログ倉庫に格納されています
0432デフォルトの名無しさん
垢版 |
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でもそれは変わらない
0437デフォルトの名無しさん
垢版 |
2020/04/26(日) 14:43:33.28ID:ecUYIEQ+
Monoプロジェクトで実際LinuxでVB.NET使って開発してる様な所って有るのかね?
あまり話聞かないし、案件探しても出て来ないよ
0443デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:58:03.17ID:mDWjB1wT
最近見かけたんだけど
Dim aaa As (String, String)
こういうのって型は何になるの?
匿名クラスなの?配列?
0445デフォルトの名無しさん
垢版 |
2020/04/29(水) 11:57:07.06ID:mDWjB1wT
あぁ、ありがと。item1とかitem2とかあるからクラスかと思ったが構造体なのね。
0447デフォルトの名無しさん
垢版 |
2020/05/01(金) 20:30:50.40ID:cip99ITm
プロジェクトにフォームが2つあるのですが、その両方から参照する構造体の定義は
どこに書くのが一般的なのですか?クラスだと「追加」→「新しい項目」でクラスを選択できて
独立したファイルでクラスの定義をかけるのですが、構造体はどういうやり方が一般的なのでしょうか?
0448デフォルトの名無しさん
垢版 |
2020/05/01(金) 20:33:08.68ID:cip99ITm
ちなみに現在は2つのフォームのファイルの先頭で構造体を定義しています。やり方がスマートじゃない気がします。
0450デフォルトの名無しさん
垢版 |
2020/05/01(金) 20:44:20.47ID:yoq0hK+K
VB.NETでは構造体を使うこと自体が全く一般的ではない
C#では性質を十分に理解した上でパフォーマンス目的で構造体を使うことも稀にあるけど、
VB.NETでそんな最速を目指すようなものを作ることは無いだろう
クラスだけでいいよ
0451デフォルトの名無しさん
垢版 |
2020/05/01(金) 21:05:13.13ID:00XG9ArW
api呼ぶのに構造体なんていくらでも使うしそうでなくても構造体の配列とか普通に使うし
あと共用出来るメソッドはなるべくモジュールに書いてコントロールからはそれを呼び出すだけにしてる
0452448
垢版 |
2020/05/01(金) 21:25:29.62ID:cip99ITm
皆さん、ありがとうございます。>>449 さんのおっしゃるとおり、スコープを広げれば良さそうですね。
>>451さんの言うようにモジュールに書くのもいい感じですね。
>>450さん、VBではあまり構造体は使わないのですね。私の読んでる基礎入門書だから一通りの説明ということで載ってるのでしょうか。

皆さん、ありがとうございました。とりあえず、モジュールを追加してその中でpublic宣言して構造体を書いておきます。
0454デフォルトの名無しさん
垢版 |
2020/05/01(金) 22:14:01.29ID:jPGYGLkU
>>452
クラスと同じように1構造体に対して同じ名前のファイルを割り当てるのが基本だと思うよw

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

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

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

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

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

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

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

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

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

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

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

今回フォームがログイン、メニュー・・・といった感じで複数画面あります。
ログイン画面作成時にWCFとログイン画面のフォームを作った場合、メニュー作成するときWCFは新規に作成する必要があるのでしょうか?
0484デフォルトの名無しさん
垢版 |
2020/05/25(月) 00:53:51.16ID:75tsCqjl
WCFはフレームワークであってWCFを作るという表現は意味不明
サービスのことならどっちでもいい
ちなみにWCFは.NETの次のバージョンでは廃止されるから、お前に選択権があるならやめるべき
0485デフォルトの名無しさん
垢版 |
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
みたいに毎回重複しない変数を用意しないとだから
指定回数ループする変数いらないヤツないの?
0486デフォルトの名無しさん
垢版 |
2020/05/29(金) 17:50:02.55ID:9O0dREg7
>>485
REXXだと正にそのものズバリの
Do 99
End
てのがあったんだけどねw
まあ普通ループカウンタの無いループの必要性ってあまり無いわな
0488デフォルトの名無しさん
垢版 |
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ぐらいで足らんようなら構造見直すべきだ
0491デフォルトの名無しさん
垢版 |
2020/06/03(水) 14:46:36.88ID:lsOJv1ox
Windows FormのボタンをButton配列で動的に設定している処理があったのですが
静的と動的はどのように使い分けているのでしょうか
ボタンの数が多かったのと関係しているのでしょうか
0492デフォルトの名無しさん
垢版 |
2020/06/03(水) 15:07:50.89ID:def00RCS
>>491
「Button配列で動的に設定している処理」が何やっているか読めよ
人によって組み方は変わるからここで聞いたって的外れな憶測しかできんよ
0493デフォルトの名無しさん
垢版 |
2020/06/03(水) 15:50:36.18ID:4wtvyY9A
デザイナでポンポン配置するのが面倒じゃなければ性的
こんな数配置してらんねーと思ったら動的
0495デフォルトの名無しさん
垢版 |
2020/06/03(水) 21:13:59.52ID:bZHkJmU/
毎回婦裸具をオッ立ててます
0497デフォルトの名無しさん
垢版 |
2020/06/12(金) 01:23:39.99ID:IFr8Enpr
しかし、自作アプリからプリンターに印刷するってこんなに難しいのか?
狙った場所に印刷が出来なくて・・・どうしよう・・
0498デフォルトの名無しさん
垢版 |
2020/06/12(金) 01:38:26.30ID:4psGVQqc
>>497
そんな難しくないと思うよw

もう何年もやってないから適当だけど、たぶんプリンタ固有の余白分ズレてるだけ。
GDI+の原点は用紙の左上ではなく、印刷可能領域の左上になってる。
この問題の対処法はググれば簡単に見つかるはず
0500デフォルトの名無しさん
垢版 |
2020/06/15(月) 01:19:49.90ID:rIWPArQR
Sub Main(args As String())で引数を渡さないで実行してもエラーにならない理由わかる方いませんか
0503デフォルトの名無しさん
垢版 |
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
0504デフォルトの名無しさん
垢版 |
2020/07/07(火) 09:49:09.58ID:S3jLpbFZ
標準にはないね
汎用性を考えだすとIDisposableな型のプロパティとかどうするかって話になるし
0505デフォルトの名無しさん
垢版 |
2020/07/07(火) 12:25:34.75ID:pZRFuct6
>>503
それでいいじゃん。
そもそも発想が変だと思うよ。
たぶんデザイナをブラックボックスだと考えてるからそうなるんだと思うけど。
デザイナは単にコントロールのプロパティーを設定するコードを自動生成してるだけw
それがInitializeComponent

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

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

結局起動後のユーザーコードでごちゃごちゃやるなら
用途に応じたコントロールに拡張すればってなるんじゃね
0512デフォルトの名無しさん
垢版 |
2020/07/08(水) 16:02:56.91ID:WXMpgQLP
デザイン時にも設定できるけどデザイン時に設定する仕様だと
絶対どこかで「TextとTag両方同じ値を設定」を忘れるから悪手
0513デフォルトの名無しさん
垢版 |
2020/07/08(水) 16:25:53.40ID:027Ge3m+
リセットボタンのClickイベントで、TextBoxに初期値をセットするコード書いて、
フォームのLoadイベントにも上記リセットClickを割当て(もしくはリセットClickを呼ぶコード書く)
同じことに実現できる気がしないこともない
0514デフォルトの名無しさん
垢版 |
2020/07/08(水) 19:32:20.68ID:VvU4Rgja
>>513
イベントハンドラから、違うイベントハンドラを直で呼ぶのは作法がよろしくない
初期化するプロシジャ書いて、リセットボタンのClickイベントとフォームのLoadイベントから呼べ
0521デフォルトの名無しさん
垢版 |
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
0523デフォルトの名無しさん
垢版 |
2020/09/10(木) 17:07:50.68ID:HD/UycmT
作りが悪い気がするけど、なにもしてないんだから
Set側無視してたんなる関数だと思っていいんじゃね
0525デフォルトの名無しさん
垢版 |
2020/09/13(日) 00:23:00.92ID:TFaD5/iw
ASP.NET+SQLServer2019でWebアプリ作ったんだけど、デバッグでDB接続はうまくいくのに、発行してIISから参照するとDB接続が失敗して困ってる。
0526デフォルトの名無しさん
垢版 |
2020/09/13(日) 14:54:38.22ID:xeL9byBp
参照先が正しく設定できてないときは、確かプロジェクトフォルダ内ファイルを参照
することが多い。したがってデバック時にエラーが出ない。
そういう時は、参照先をすべてチェックするといい。
0527525
垢版 |
2020/09/14(月) 17:07:20.83ID:ayzmQ3GL
ちょっと詳しい人に聞いたら、SQLServer側の問題だった。
あと、凝ったことやろうとするとJavascriptも使えないとダメだな。
0528デフォルトの名無しさん
垢版 |
2020/09/16(水) 10:53:00.65ID:57F1eHvg
素人質問で申し訳ありませんが再度書込させていただきます。
VB2008にて、
「ボタンを押した時、既にEXCELが起動していたら終了する」処理をやらせたいのですが、
EXCELが起動していない時に実行するとエラーになってしまいます。
ネットとかで試してみたりしたのですが、うまくいきません。
EXCELが起動しているかどうかのプロパティなど、わかる方いたらご教示ください。

サンプル
<宣言>
Public ExAppli As Excel.Application 'Excel Object
Public ExBook As Excel.Workbook 'Excel Workbook Object
Public ExSheet As Excel.Worksheet 'Excel Worksheet Object
  Const FilePath As String ="C:\STRAGE\"

<構文@>
Public Function ExcelOpen(ByVal FilePath As String) As Boolean
ExAppli = CreateObject("Excel.Application") 'EXCEL Objectの作成
ExAppli.Visible = False 'アプリケーションの非表示
ExBook = ExAppli.Workbooks.Open(FilePath) 'ファイルを開く
ExAppli.Visible = True 'アプリケーションを表示
End Function

<構文A>
Public Function ExcelClose() As Boolean
'EXCEL起動のチェックがしたい
If Cbool(ExAppli.Active) = True Then
ExAppli.Quit() 'EXCEL終了
Else
'エラーメッセージ
End If
End Function
0532デフォルトの名無しさん
垢版 |
2020/10/07(水) 21:30:27.59ID:ZJ/MXczd
MSChartのグラフ部分を拡大縮小できるように拡張メタファイルを直接生成する関数やライブラリってありますでしょうか?
■ このスレッドは過去ログ倉庫に格納されています

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