HOME >> 山崎はるかのメモ >> プログラミング講習(1)

山崎はるかのメモ  (VB.net 編)

社内講習で多い質問・あの機能 どこいったの?

 はるさんの プログラミング講習 ?題


このページは、スタッフ講習中に寄せられた質問の中で、特に多いものをまとめたものです。
VB6.0から VB.netに移行する瞬間に 多くの人が直面する疑問です。


〔 IDE(開発環境)を開いて 最初の10分に 自分の目で たしかめておくこと 〕  ※これを その手でたしかめてから かかろうね。

入力するメソッドの 小文字・大文字は VB.net が 自動で置き換えてくれる。
F5 でも走る (さすがBASICだな)
クラスビューを見ると、Form1 もクラスのひとつであることがわかる。
ソリューション構成で、デバッグとリリースを切り替える。

これらは 最初に理解しておくと 後々の進度が ずいぶん変わってくる種類の知識。
だから、ちゃんと 自分の手で・自分の目で、そうであることを確かめておこう。

学習するときに、かるく読んどいたほうがいい本ってある?
これを読んでおくと かなりよい。
「世界でいちばん簡単なVisualBasicのe本」 \1,470

できるようになってきた人に、便利な本は?
それならこれ
「VB.NET基礎学習Bible」 \3,024

 辞書のように使えて、逆引き風にも読める なかなかの良書。
たぶん、VB.net を使ってる間は、ずっと持ち続けるぐらいだと思うよ。


〔 社内講習・初日に 多い質問 〕  ※まぁ これに戸惑うのは ムリもないと思う。

App.Path は どこにいった?
Application.StartupPath
になってる。
近似 ExecutablePath


vbCrLf はどうなった?
そのままでも使える。
・・・が、 ControlChars.CrLf を使うようになった人もいる。
うちの会社では どっちでもいい。C#との混在でも "\r\n" に置換(リプレース)するだけだし。

なお、マイクロソフト公式解説書・Visual Basic.NET 実践講座では 、vbCrLf を用いている。


DoEventsは どこにいった?
Application.DoEvents()
になった。


GetTickCountは どこにいった?
Environment.TickCount
になってる。
ただ、ウェイトに使いたいなら、

'一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000)

として Thread.Sleep を使ってみるのもよい。※ブロッキング(終わるまで返ってこない) なので注意ね


MDBデータのパスは どこに記載がある? (VB6.0ではプロパティにあった)
フォーム上の デザイナーソースの中に記載されてる。
以下は EXE と同じ位置に MDBを配置する場合の 書き換え方。

'
'OleDbConnection1
'
Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
"ocking Mode=0;Data Source=""" + Application.StartupPath + "\db1.mdb" + """;Jet OLEDB:Engine Type" & _
"=4;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=F" & _
"alse;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet O" & _
"LEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don" & _
"'t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;U" & _
"ser ID=Admin;Jet OLEDB:Global Bulk Transactions=1"



画面サイズの変化に コントロールサイズを連動させてるソースがあるけど、どうやってるの?
Anchor プロパティを使えば 一発でできる。


〔 社内講習 2日目に 多い質問 〕

文字列操作

関数 VB6.0 VB.net
InStr関数 a = InStr(dstr,"よう!") a = dstr.IndexOf("よう!")
Mid関数 a = Mid(dstr,1,b) a = dstr.Substring(0, b)
StrConv dstr = StrConv(dstr, vbUpperCase) dstr = dstr.ToUpper


InStrの Case(Upperなど)がなくなっているが その代替技

a = htstr.ToUpper.IndexOf("<B>")
↑htstrを すべて大文字版として さがす

CLng は どうなった? ( 文字列→数値の変換)

 そのままでも 使えるけど(.netでは CIntになるが)
なるべくなら  Integer.Parse を使用する。

なお不正文字が含まれてても 例外がスロされない(エラーにならない) Val も使用できる

Dim a As Integer
a = Integer.Parse("15")
a = Val("abcd15")

2進数・16進数→数値の変換
 ConvertクラスのToInt32メソッドを使用する。

Dim a As Integer
a = Convert.ToInt32("11111111", 2)
a = Convert.ToInt32("ff", 16)

※ a は、両方とも255

数値→2進数・16進数の変換
 ConvertクラスのToStringメソッドを使用する。

Dim dstr As String
dstr = Convert.ToString(255, 2)
dstr = Convert.ToString(255, 16)

Form.Show は どうなった? (別のFormを開く方法。
 クラスをインスタンス化して 制御する。 → 参考
まさに オブジェクトっぽいところだね。

Dim a As New Form2

 'モーダル(親子)表示
a.ShowDialog(Me)

 'モードレス(独立)
a.Show()

※ Dim a As New Form2 は、


Dim a As Form
a = New Form2

と 同じ意味だ。 a.Dispose() で破棄できる。


Diamond Apricot - SHIODEME-SPT

■メモエリアに戻る