Pergunta sobre console, debugging, vb6 – Como gravar em um console de depuração no VB6?

10

Eu sou novo no VB. Eu quero testar algum código VB antigo, mas eu preciso da capacidade de imprimir para o console para poder testar determinados valores que estão definidos no código. Como imprimir para o console do VB?

Sua resposta

4   a resposta
20

que será impresso na janela de depuração.

Obrigado. Isso é o que eu precisava. CodeBlue
0

isso pode ser feito, mas você estaria chamando APIs nativas do Win32 e não vale a pena se você estiver apenas usando para depuração)

Sua melhor aposta (IMHO) é gravar esses valores em um arquivo de log.

Não muito para isso. Veja a resposta estranha que eu postei. Bob77
@Bob: Então, vem sob o título de "Fácil quando você sabe como" talvez? :) Binary Worrier
Na verdade, isso pode ser feito trivialmente a partir do VB6 usando o FSO. Claro que só se aplica quando vocêter um console, que você raramente faz em um programa VB6 - a menos que você AllocConsole () ou esteja sendo executado como um EXE revinculado para o subsistema do console. Mas eu concordo que não é a melhor ferramenta para depuração. Bob77
10

porque o Debug.Print é o caminho a seguir para o teste IDE.

No entanto, apenas para mostrar como usar os fluxos de E / S padrão facilmente no VB6:

<code>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
</code>

Observe que muito pouco do código é necessário para um programa de console real no VB6. A maior parte é sobre a alocação de uma janela do console quando o programa não está em execução no subsistema do console.

+1: bom. Então, como eu disse então, é fácil quando você sabe :) Binary Worrier
3

OutputDebugString e ver as mensagens com o excelente livreDebugView. Mais informações e código reutilizável de Karl PetersonAqui

Perguntas relacionadas