文字列の文字数を取得するには、StringクラスのLengthプロパティ(Integer型)を使用。
Lengthプロパティは半角と全角を区別せずに1文字と数える。
Dim s As String = "ABCDE"
MessageBox.show(s.Length.ToString() & "文字です")
部分文字列を取り出すには
Dim 変数 As Char = 文字列.Chars(インデックス)
Dim 変数 As String = 文字列.Substring(開始位置,文字数)
Dim s As String = "ABCDEF"
TextBox1.Text = s.Chars(1).ToString()
TextBox1.Text = s.Substring(1,4)
TextBox1.Text = s.Substring(3)
部分文字列を削除/挿入するには
Dim 変数 As String = 文字列.Remove(削除位置,削除文字数)
Dim 変数 As String = 文字列.Remove(削除位置)
Dim 変数 As String = 文字列.Remove(挿入位置,挿入文字数)
Dim s As String = "ABCDEF"
TextBox1.Text = s.Remove(0,3)
TextBox1.Text = s.Remove(2)
TextBox1.Text = s.Insert(1,"ZX")
文字列を検索するには
Dim 変数 As Integer = 文字列.IndexOf(検索文字列)
Dim 変数 As Integer = 文字列.IndexOf(検索文字列,検索開始位置)
Dim s As String = TextBox1.Text
Dim i As Integer = s.IndexOf("検索")
ListBox1.Item.Clear()
Do While i < > - 1
ListBox1.Item.Add( ( i + 1 ).ToString() & " 文字目 ")
i = s.IndexOf("検索", i + 1)
Loop
備忘録
2013年5月13日月曜日
←←←VBからACCESSのマクロを動かす
Imports System.Data.OleDb
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop.Access
Private Sub Button1_Click...
Dim myPath As String = My.Application.Info.DirectoryPath & "¥***.accdb"
Dim AccObj As Object = CreateObject("Access.Application")
With AccObj
.OpenCurrentDatabase(myPath)
.DoCmd.RunMacro("マクロ")
.Quit()
End With
AccObj = Nothing
End Sub
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop.Access
Private Sub Button1_Click...
Dim myPath As String = My.Application.Info.DirectoryPath & "¥***.accdb"
Dim AccObj As Object = CreateObject("Access.Application")
With AccObj
.OpenCurrentDatabase(myPath)
.DoCmd.RunMacro("マクロ")
.Quit()
End With
AccObj = Nothing
End Sub
2011年11月12日土曜日
2011年9月16日金曜日
→→→抽象クラスより難しい「インタフェース」
インタフェースは、抽象クラスと同じように、機能の大枠を定めるもの
Module Module
Sub Main()
Dim c As New Class1()
c.Output()
End Sub
End Module
Interface Interface1
Sub Output()
End Interface
Class Class1
Implements Interface1
Public Sub Output()
Implements Interface1.Output
Dim s As String = "こんにちは"
Console.WriteLine(S)
End Sub
End Class
Interface1インタフェースを実装したClass1
Implementsキーワードを使い、Interface1の実装であることを示す
インタフェースは、抽象クラスよりも厳しい制約を課すものと言える。
抽象クラスClass1の中に記述していた文字列変数sの宣言はInterface1に書くことはできない。
インタフェースはメンバー変数を持てない。
Class1のメンバー変数として文字列sを記述することもできない。
インタフェースを実装するクラスは、メンバー変数を勝手に追加することができない
Module Module
Sub Main()
Dim c As New Class1()
c.Output()
End Sub
End Module
Interface Interface1
Sub Output()
End Interface
Class Class1
Implements Interface1
Public Sub Output()
Implements Interface1.Output
Dim s As String = "こんにちは"
Console.WriteLine(S)
End Sub
End Class
Interface1インタフェースを実装したClass1
Implementsキーワードを使い、Interface1の実装であることを示す
インタフェースは、抽象クラスよりも厳しい制約を課すものと言える。
抽象クラスClass1の中に記述していた文字列変数sの宣言はInterface1に書くことはできない。
インタフェースはメンバー変数を持てない。
Class1のメンバー変数として文字列sを記述することもできない。
インタフェースを実装するクラスは、メンバー変数を勝手に追加することができない
→→→そのまま使えない「抽象クラス」
そのまま使えない、必ず子クラスを作って追加実装をしなければいけない「抽象クラス(abstract class)」というものがある。
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
End Sub
End Module
MustInherit Class Class1
Protected S As String = "こんにちは"
Public MustOverride Sub Output()
End Class
Class Class2
Inherits Class1
Public Overrides Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class1クラスは抽象クラス。MustInherit(継承しなければいけない)と記述しているし、OutputメソッドはMustOverride(オーバーライドしなければいけない)と書かれた抽象メソッドで、中身の記述がない。
Class2クラスではOutputメソッドをオーバーライドして処理を記述している。Class1ではOutputメソッドの外側を記述し、Class2で内側を記述しているようなもの。
Class2の段階まで持っていけばインスタンス化して利用できる。
Class1は直接はインスタンス化して利用できない。Class2をClass1に書き換えるとエラー。
抽象クラスは「何をするか」の大枠だけを決めておいて「どのようにするか」を子クラスにまかせる仕組み
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
End Sub
End Module
MustInherit Class Class1
Protected S As String = "こんにちは"
Public MustOverride Sub Output()
End Class
Class Class2
Inherits Class1
Public Overrides Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class1クラスは抽象クラス。MustInherit(継承しなければいけない)と記述しているし、OutputメソッドはMustOverride(オーバーライドしなければいけない)と書かれた抽象メソッドで、中身の記述がない。
Class2クラスではOutputメソッドをオーバーライドして処理を記述している。Class1ではOutputメソッドの外側を記述し、Class2で内側を記述しているようなもの。
Class2の段階まで持っていけばインスタンス化して利用できる。
Class1は直接はインスタンス化して利用できない。Class2をClass1に書き換えるとエラー。
抽象クラスは「何をするか」の大枠だけを決めておいて「どのようにするか」を子クラスにまかせる仕組み
→→→メソッドのオーバーライド
メソッドのオーバーライド(override)という機能。簡単に言えば子クラスで親クラスのメソッドを「上書き」する機能。
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
End Sub
End Module
Class Class1
Protected S As String = "こんにちは"
Public Overridable Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class Class2
Inherits Class1
Public Overrides Sub Output()
Console.Write(S)
Console.WriteLine(S)
End Sub
End Class
Class2のインスタンスcを作り、そのOutputメソッドを呼び出す。Class2クラスのOutputメソッドが呼び出される。ここでは「こんにちは こんにちは」と表示される
Class2の親であるClass1にもOutputメソッドがあるがOverridableと書いてオーバーライドを許可している。Class2クラスではOverridesと書いてオーバーライドすることを示している。
Class2の外部からClass1のOutputを呼び出すことはできない。
でも、Class2の内部からであれば、
MyBase.Output()
と記述することによって、親クラスのOutputメソッドを呼び出せる。
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
End Sub
End Module
Class Class1
Protected S As String = "こんにちは"
Public Overridable Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class Class2
Inherits Class1
Public Overrides Sub Output()
Console.Write(S)
Console.WriteLine(S)
End Sub
End Class
Class2のインスタンスcを作り、そのOutputメソッドを呼び出す。Class2クラスのOutputメソッドが呼び出される。ここでは「こんにちは こんにちは」と表示される
Class2の親であるClass1にもOutputメソッドがあるがOverridableと書いてオーバーライドを許可している。Class2クラスではOverridesと書いてオーバーライドすることを示している。
Class2の外部からClass1のOutputを呼び出すことはできない。
でも、Class2の内部からであれば、
MyBase.Output()
と記述することによって、親クラスのOutputメソッドを呼び出せる。
2011年9月15日木曜日
→→→継承
クラスには「継承(inheritance)」という機能がある。
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
c.Output2()
End Sub
End Module
Class Class1
Protected S As String = "こんにちは"
Public Overridable Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class Class2
Inherits Class1
Public Sub Output2()
Console.Write(S)
Console.WriteLine(S)
End Sub
End Class
Class2クラスのインスタンスcを作り、そのOutputメソッド、Output2メソッドを呼ぶ。
でも、Class2クラスを見ると、Outputメソッドはない。
また、Output2メソッドの中で参照しているSもない。
それらはClass1から継承されている。
継承を行う場合には、Inheritsキーワードを使って継承元を指定する
Module Module1
Sub Main()
Dim c As New Class2()
c.Output()
c.Output2()
End Sub
End Module
Class Class1
Protected S As String = "こんにちは"
Public Overridable Sub Output()
Console.WriteLine(S)
End Sub
End Class
Class Class2
Inherits Class1
Public Sub Output2()
Console.Write(S)
Console.WriteLine(S)
End Sub
End Class
Class2クラスのインスタンスcを作り、そのOutputメソッド、Output2メソッドを呼ぶ。
でも、Class2クラスを見ると、Outputメソッドはない。
また、Output2メソッドの中で参照しているSもない。
それらはClass1から継承されている。
継承を行う場合には、Inheritsキーワードを使って継承元を指定する
登録:
投稿 (Atom)