soltioxの日記: 躓きの石 又は vb系言語との折り合いの付け方 3
vba とか vbs といった言語群で書かれたコードを弄るとき、
「if文やfor文の書き方も分からんのか、ボケ!」だの
「等号を二つも並べんな、タコ!」だの、
「馬鹿め! switch文は死んだわ」だのといった
エラーメッセージに心が折れそうになる事がある。
アンチョコを工夫してみたりとかしてたんだけど、
動作するスニペットを作っておいて、参照すればいいんじゃね?
という天啓を得たので、書いてみた。
rem *********************************************
rem
rem *********************************************
rem 変数は定義すれ
Option Explicit
rem 変数・定数定義
dim intVal
const ZERO = 0
intVal = ZERO
dim strMsg, strTitle
dim aryNum(9)
rem aryNum(0) .. aryNum(9)
strTitle = "vbs if 文"
if intVal = 0 then
strMsg = "等値判定子は等号がいっこ"
else
strMsg = "不等判定子は<>"
end if
msgbox strMsg, vbOKOnly, strTitle
strTitle = "vbs select case 文"
select case intVal
case 0
strMsg = "switch じゃないので注意"
case 1
strMsg = "break しなくても以降の case はパスする"
case else
strMsg = "default じゃないので注意"
end select
msgbox strMsg, vbOKOnly, strTitle
strTitle = "vbs for 文"
for intVal = 0 to 4 step 2
strMsg = intVal / 2 + 1 & "回目のループ"
msgbox strMsg, vbOKOnly, strTitle
exit for
next
strTitle = "vbs do ループ 1"
do while intVal > 0
strMsg = "while の前に do 必須" & vbCrLf
strMsg = "今の値は " & intVal
msgbox strMsg, vbOKOnly, strTitle
exit do
loop
strTitle = "vbs do ループ 2"
do
intVal = intVal + 1
strMsg = "while の前に loop 必須" & vbCrLf
strMsg = "今の値は " & intVal
msgbox strMsg, vbOKOnly, strTitle
loop while intVal < 2
strTitle = "vbs 鉄の掟"
strMsg = "剰余は'mod'、階乗は'^'、論理演算は'And','Or','Not'"
msgbox strMsg, vbOKOnly, strTitle
rem vbs file write
dim strFileName, FileSystemObj, FileStreamOut
const OVERWRITE = TRUE
const KEEPORIG = FALSE
strFileName = "c:\temp\temp.txt"
set FileSystemObj = CreateObject("Scripting.FileSystemObject")
on error Resume next
set FileStreamOut = FileSystemObj.CreateTextFile(strFileName, KEEPORIG)
if Err.Number <> 0 then
if MsgBox("既存ファイル上書?", vbOKCancel) = vbOK then
Set FileStreamOut = FileSystemObj.CreateTextFile(strFileName, OVERWRITE)
else
WScript.Quit
end if
Err.Clear
end if
on error GoTo 0
FileStreamOut.WriteLine( "date : " & date )
FileStreamOut.WriteLine( "now : " & now )
FileStreamOut.Close
strTitle = "vbs file read"
dim FileStreamIn
const FORREADING = 1
set FileStreamIn = FileSystemObj.OpenTextFile(strFileName, FORREADING)
strMsg = FileStreamIn.ReadLine()
do while FileStreamIn.AtEndOfLine <> True
strMsg = strMsg & vbCrLf & FileStreamIn.ReadLine()
loop
FileStreamIn.Close
msgbox strMsg, vbOKOnly, strTitle
rem *********************************************
rem
rem *********************************************
エディタのスニペットに喰わして、
あと、texterみたいなスニペットツールに設定して、
ついでに、テキストファイルに書き出して、携帯電話に仕込む。
コメントの好み (スコア:1)
好みの問題ですが、vb関係では、インラインコメントは rem より ' の方が好きですな。いや、どっちでもいいことですけど。
LIVE-GON(リベゴン)
Re:コメントの好み (スコア:1)
あ、いやいや、私も使うんですけどね、"'"は。
ただ、構文強調機能がないエディタで見た時とかに、
見落としたりするので、"rem"を使うように心がけてます。
飾り文字とかは、初めっからコメントだと思って読むのですが、
コメントアウトしたステートメントを、生きてると誤解したりとか。
// 使ってないステートメントを残存させるな、
// という至極もっともな指摘は回避の方向で。
それと、どうせスニペットだから、
ちょっとぐらい冗長なコードでもいいかな、みたいな。
Re:コメントの好み (スコア:1)
いや別にくいさがるとかそういう話ではなくて第三者にも参考になるかと思って書いているだけですが(笑)
英語のREMの方が見落としが発生しやすい――自分では読んでて脳内強調表示されない――ので、エディタが使えない環境では ''' という三連星を使っています。ちなみに。
LIVE-GON(リベゴン)