4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VB6(Console)で湯婆婆を実装してみる

Last updated at Posted at 2020-11-24

まえがき

もうだいぶ乗り遅れた感ありますけど誰も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]でも落ちたりはしなかったです。メッセージが「今からお前の名前はだ。いいかい、だよ。分かったら返事をするんだ、!!」みたいになります(というのを再確認したいが手元に開発環境なし・・・)

4
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?