14

我是 VB 的新手。我想测试一些旧的 VB 代码,但我需要能够打印到控制台才能测试代码中设置的某些值。如何从 VB 打印到控制台?

4

4 回答 4

24

使用 debug.print。但是 VB6 应用程序上没有控制台,可以打印到调试窗口。

于 2012-05-09T13:43:30.217 回答
12

预计这不会是公认的答案,因为 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 中的实际控制台程序只需要很少的代码。其中大部分是关于当程序不在控制台子系统中运行时分配控制台窗口。

于 2012-05-10T17:39:09.380 回答
4

使用优秀的免费DebugViewOutputDebugString使用和查看消息。调试可执行文件或从 IDE。Karl Peterson 的更多信息和可重用代码在这里

于 2012-05-09T15:04:57.223 回答
0

这不是 Vb6 可以轻松做到的(我确信可以做到,但您将调用本机 Win32 API,如果您只是将其用于调试,则不值得痛苦)

您最好的选择(恕我直言)是将这些值写入日志文件。

于 2012-05-09T13:44:12.353 回答