How to write to a debug console in VB6?

前端 未结 4 1039
慢半拍i
慢半拍i 2021-02-13 13:44

I am new to VB. I want to test some old VB code, but I need the ability to print to the console to be able to test certain values that are set in the code. How to print to the c

4条回答
  •  忘了有多久
    2021-02-13 14:51

    This isn't expected to be the accepted answer because Debug.Print is the way to go for IDE testing.

    However just to show how to use the standard I/O streams easily in VB6:

    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
    

    Note that very little of the code there is required for an actual Console program in VB6. The bulk of it is about allocating a Console window when the program is not running in the Console Subsystem.

提交回复
热议问题