Visual Basic

Visual Basic で可変長引数

最後のパラメータ名の前に、キーワード ByVal ParamArray を指定する。 http://msdn.microsoft.com/ja-jp/library/9z7h91e4(VS.80).aspx UBound 関数:使用できる添字の最大値を返す。 Module Module1 Public Sub TestFunction(ByVal Arg1 As String, ByVal …

拡張メソッド

Ruby の特異メソッドのような拡張メソッドが Visual Basic 2008 から使えるようになったようです。 Module StringExtenstions <System.Runtime.CompilerServices.Extension()> _ Public Sub Extension(ByVal str As String) Console.WriteLine(str & "拡張メソッド!!") End Sub End Module Module Module1 </system.runtime.compilerservices.extension()>…

リスト文字列を1文字ずつパース 再帰じゃないよ編

再帰によるパースは大きいテキストでこけるので再帰しないバージョン。 Imports System Imports System.Collections.Generic ' Ruby の Fixnum っぽいクラス Public Class Fixnum Private num_ As Integer Public Sub New(ByVal n As Integer) Me.num_ = n E…

DateTime を使う。

d.Date.ToString のように文字列に変換して切り出せばどうにでも。 Module Module1 Sub Main() Dim d As DateTime d = DateTime.Now System.Console.WriteLine(d.Date) '=> 2009/07/28 0:00:00 System.Console.WriteLine(d.Date.GetType) '=> System.DateTim…

TextBox に文字列を追加する。

TextBox の文字列を改行コードを境に分割し、リストに収納。 文字列をリストに追加したのち、改行コードを加え、TextBoxへコピー。 Public Class MemoControl Private ListObj As List(Of String) Public Sub New() Me.ListObj = New List(Of String) End Su…

'HttpUtility' は 'Web' のメンバではありません。

URLをエンコードするのに System.Web.HttpUtility.UrlEncode を使おうとすると「'HttpUtility' は 'Web' のメンバではありません。」のエラー。 Dim client As New WebClient client.QueryString("db") = "dbname" client.QueryString("tp") = "typeName" cl…

リスト文字列を1文字ずつパース VB編

Ruby で書いた「リスト文字列を1文字ずつパース」をVBで書きました。 これは実際に仕事に使おうと思うのだけれども、本物のリストでやった方がこの先面白そうです。 Imports System Imports System.Collections.Generic Public Class ListString Private str…

WebClient で Basic 認証サイトにアクセス

Imports System Imports System.Text Imports System.Net ' http://www.atmarkit.co.jp/fdotnet/dotnettips/799base64/base64.html Public Class Base64String Private enc As Encoding Public Sub New(ByVal encStr As String) enc = Encoding.GetEncoding(…

XML 設定ファイルを読み込んで Dictionary に設定する。

Visual Basic の Dictionary は Hash のようなものです。Smalltalk に Dictionary というのがりますので Smalltalk 由来かも知れません。 XML ファイル <configure> <item> <key>hoge</key> <value>http://www.example.com</value> </item> <item> <key>Googel</key> <value>http://www.google.com</value> </item> </configure> Imports System Imports System.…

VB で 関数プログラミングっぽいことをする。

VB で 関数プログラミングっぽいことをするのに便利なように Head や Tail をくっつけてみました。 Imports System Imports System.Collections.Generic Public Class ListObject Private Lstr As New List(Of Object) Sub New() Me.Lstr = New List(Of Obje…

オブジェクトの型を調べる

Module Module1 Sub Main() System.Console.WriteLine((123).GetType) ' => System.Int32 System.Console.WriteLine((123.456).GetType) ' => System.Double System.Console.WriteLine((123).ToString.GetType) ' => System.String System.Console.WriteLine…

クラスを作ってみる

Public Class ListString Private str As String = "" Sub New(ByVal Name As String) Me.str = Name End Sub Public Property Name() As String Get Return str End Get Set(ByVal value As String) str = value End Set End Property Public Function Head…

VBScript の Eval を使う

ScriptControlによるeval(AccessにあってVBに無いもの)より。 Module Module1 Function VBSEval(ByVal vbsExp As String) Dim sc As Object sc = CreateObject("ScriptControl") sc.Language = "VBScript" VBSEval = sc.Eval(vbsExp) sc = Nothing End Func…