Frage an debugging, console, vb6 – Wie schreibe ich auf eine Debug-Konsole in VB6?

10

Ich bin neu bei VB. Ich möchte alten VB-Code testen, benötige jedoch die Möglichkeit, über die Konsole zu drucken, um bestimmte im Code festgelegte Werte testen zu können. Wie drucke ich von VB auf die Konsole?

Deine Antwort

4   die antwort
20

Verwenden Sie debug.print. Es gibt jedoch keine Konsole in einer VB6-Anwendung, die im Debug-Fenster gedruckt wird.

Vielen Dank. Das habe ich gebraucht. CodeBlue
10

Es wird nicht erwartet, dass dies die akzeptierte Antwort ist, da Debug.Print der Weg für IDE-Tests ist.

Nur um zu zeigen, wie die Standard-I / O-Streams in VB6 einfach verwendet werden können:

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

Beachten Sie, dass für ein aktuelles Konsolenprogramm in VB6 nur sehr wenig Code erforderlich ist. Die Hauptaufgabe besteht darin, ein Konsolenfenster zuzuweisen, wenn das Programm nicht im Konsolensubsystem ausgeführt wird.

+1: Schön. Also, wie ich schon sagte, einfach wenn du weißt wie :) Binary Worrier
3

BenutzenOutputDebugString und sehen Sie die Nachrichten mit dem ausgezeichneten freien anDebugView. Weitere Informationen und wiederverwendbarer Code von Karl PetersonHier

0

Dies kann Vb6 nicht einfach tun (ich bin sicher, es kann getan werden, aber Sie würden native Win32-APIs aufrufen und es lohnt sich nicht, wenn Sie es nur zum Debuggen verwenden).

Ihre beste Wahl (IMHO) ist es, diese Werte in eine Protokolldatei zu schreiben.

Nicht viel dazu. Siehe die fremde Antwort, die ich gepostet habe. Bob77
@Bob: Kommt also unter die Überschrift "Einfach wenn du weißt wie" vielleicht? :) Binary Worrier
Tatsächlich kann es mit dem FSO ganz trivial von VB6 aus gemacht werden. Natürlich gilt es nur bei Ihnenhaben Eine Konsole, die Sie selten in einem VB6-Programm ausführen - es sei denn, Sie AllocConsole () oder Sie führen eine für das Konsolensubsystem neu verknüpfte EXE-Datei aus. Aber ich bin damit einverstanden, dass es nicht das beste Tool zum Debuggen ist. Bob77

Verwandte Fragen