私はVBを初めて使用します。古いVBコードをテストしたいのですが、コードに設定されている特定の値をテストできるようにするには、コンソールに印刷する機能が必要です。VBからコンソールに印刷する方法?
Debug.printを使用します。ただし、VB6アプリケーションには、デバッグウィンドウに出力されるコンソールはありません。
Debug.PrintがIDEテストに進む方法であるため、これが受け入れられる答えになるとは期待されていません。
ただし、VB6で標準のI/Oストリームを簡単に使用する方法を示すために:
Option Explicit
'
'Reference to Microsoft Scripting Runtime.
'
Public SIn As Scripting.TextStream
Public SOut As Scripting.TextStream
'--- Only required for testing in IDE or Windows Subsystem ===
Private Declare Function AllocConsole Lib "kernel32" () As Long
Private Declare Function GetConsoleTitle Lib "kernel32" _
Alias "GetConsoleTitleA" ( _
ByVal lpConsoleTitle As String, _
ByVal nSize As Long) As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Allocated As Boolean
Private Sub Setup()
Dim Title As String
Title = Space$(260)
If GetConsoleTitle(Title, 260) = 0 Then
AllocConsole
Allocated = True
End If
End Sub
Private Sub TearDown()
If Allocated Then
SOut.Write "Press enter to continue..."
SIn.ReadLine
FreeConsole
End If
End Sub
'--- End testing ---------------------------------------------
Private Sub Main()
Setup 'Omit for Console Subsystem.
With New Scripting.FileSystemObject
Set SIn = .GetStandardStream(StdIn)
Set SOut = .GetStandardStream(StdOut)
End With
SOut.WriteLine "Any output you want"
SOut.WriteLine "Goes here"
TearDown 'Omit for Console Subsystem.
End Sub
VB6の実際のコンソールプログラムに必要なコードはごくわずかであることに注意してください。その大部分は、プログラムがコンソールサブシステムで実行されていないときにコンソールウィンドウを割り当てることに関するものです。
これはVb6で簡単に実行できることではありません(実行できると確信していますが、ネイティブのWin32 APIを呼び出すことになり、デバッグに使用するだけの場合は苦労する価値はありません)。
最善の策(IMHO)は、これらの値をログファイルに書き込むことです。