まえがき
もうだいぶ乗り遅れた感ありますけど誰もVB6でやってなさそうなので。ただ単にVB6で書いてみるだけでは面白くもないのでVB6でもコンソールアプリが作れるのも絡めて書いてみます。
開発環境
- VB6 : SP6
- MicrosoftScriptingRuntimeの参照設定が必要
実装
Yubaba.bas
Option Explicit
Private Enum StandardStreamTypes
StdIn = 0
StdOut = 1
StdErr = 2
End Enum
Public Sub Main()
Dim fs As FileSystemObject
Dim outss As TextStream
Dim inss As TextStream
Dim index As Integer
Dim originalName As String
Dim newName As String
Set fs = CreateObject("FileSystemObject")
Set outss = fs.GetStandardStream(StdOut)
Set inss = fs.GetStandardStream(StdIn)
Call outss.WriteLine("契約書だよ。そこに名前を書きな。")
originalName = inss.ReadLine()
Call Outss.WriteLine("フン。" & originalName & "というのかい。贅沢な名だねぇ。")
Randomize
index = Int((Len(originalName) * Rnd()) + 1)
newName = Mid$(originalName, index, 1)
Call outss.WriteLine("今からお前の名前は" & newName & "だ。いいかい、" & newName & "だよ。分かったら返事をするんだ、" & newName & "!!")
End Sub
コンソールアプリに仕立て上げるには
上記コードをYubaba.vbpとかで保存していつも通りコンパイルするとYubaba.exeが生成されますが、このままではコンソールアプリとして機能しません。いまごろVB6でコンソールアプリを書くという酔狂な人もいないとは思いますがちょっと前にHow to Create a VB6 Console Programという2005年の記事に辿り着いたのでそれを使わせていただくと
> "C:\Program Files\Microsoft Visual Studio\vb98\LINK.EXE" /EDIT /SUBSYSTEM:CONSOLE Yubaba.exe
と、Re-linkしてやるとコンソールアプリになります(LINK.EXEのフルパスはお使いの環境により異なる場合もあります)
ちなみに名前を尋ねられて何も入力しないで[Enter]でも落ちたりはしなかったです。メッセージが「今からお前の名前はだ。いいかい、だよ。分かったら返事をするんだ、!!」みたいになります(というのを再確認したいが手元に開発環境なし・・・)