Pregunta sobre console, vb6, debugging – ¿Cómo escribir en una consola de depuración en VB6?

10

Soy nuevo en VB. Quiero probar algunos códigos antiguos de VB, pero necesito la capacidad de imprimir en la consola para poder probar ciertos valores que están establecidos en el código. ¿Cómo imprimir en la consola desde VB?

Tu respuesta

4   la respuesta
20

Utilice debug.print. Pero no hay una consola en una aplicación VB6, que se imprimirá en la ventana de depuración.

Gracias. Eso es lo que necesitaba. CodeBlue
0

Esto no es algo que Vb6 pueda hacer fácilmente (estoy seguro de que se puede hacer, pero estarías llamando API Win32 nativas y no vale la pena si solo lo estás utilizando para la depuración)

Su mejor apuesta (IMHO) es escribir esos valores en un archivo de registro.

En realidad, se puede hacer de forma bastante trivial desde VB6 usando el FSO. Por supuesto que solo se aplica cuandotener una consola, que rara vez se hace en un programa VB6, a menos que sea AllocConsole () o se esté ejecutando como un EXE vinculado para el Subsistema de consola. Pero estoy de acuerdo en que no es la mejor herramienta para la depuración. Bob77
@Bob: Entonces, aparece en el encabezado de "Fácil cuando sabes cómo", tal vez. :) Binary Worrier
No mucho para eso. Ver la respuesta extraña que publiqué. Bob77
3

UtilizarOutputDebugString y ver los mensajes con la excelente gratis.DebugView. Más información y código reutilizable de Karl Peterson.aquí

10

No se espera que esta sea la respuesta aceptada porque Debug.Print es el camino a seguir para las pruebas IDE.

Sin embargo, solo para mostrar cómo utilizar las secuencias de E / S estándar fácilmente en 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>

Tenga en cuenta que se requiere muy poco del código para un programa de consola real en VB6. La mayor parte se trata de asignar una ventana de la Consola cuando el programa no se está ejecutando en el Subsistema de la Consola.

+1: Una bonita. Así que, como dije entonces, fácil cuando sabes cómo :) Binary Worrier

Preguntas relacionadas