Pytanie w sprawie console, vb6, debugging – Jak pisać do konsoli debugowania w VB6?

10

Jestem nowy w VB. Chcę przetestować stary kod VB, ale potrzebuję możliwości drukowania na konsoli, aby móc przetestować pewne wartości ustawione w kodzie. Jak drukować na konsoli z VB?

Twoja odpowiedź

4   odpowiedź
10

Nie należy się spodziewać, że będzie to akceptowana odpowiedź, ponieważ Debug.Print jest sposobem na testowanie IDE.

Aby jednak pokazać, jak łatwo używać standardowych strumieni we / wy w 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>

Zauważ, że bardzo mało kodu jest wymagane do rzeczywistego programu konsoli w VB6. Większość z nich dotyczy przydzielania okna konsoli, gdy program nie działa w podsystemie konsoli.

+1: Ładny. Tak więc, jak wtedy powiedziałem, łatwo, kiedy wiesz jak :) Binary Worrier
0

To nie jest coś, co Vb6 może łatwo zrobić (jestem pewien, że można to zrobić, ale dzwoniłbyś do natywnych API Win32 i nie jest wart bólu, jeśli używasz go tylko do debugowania)

Najlepszym rozwiązaniem (IMHO) jest zapisanie tych wartości w pliku dziennika.

Właściwie można to zrobić całkiem trywialnie z VB6 używając FSO. Oczywiście dotyczy to tylko ciebiemieć konsola, której rzadko używasz w programie VB6 - chyba że AllocConsole () lub działa jako EXE ponownie połączony z podsystemem konsoli. Ale zgadzam się, że nie jest to najlepsze narzędzie do debugowania. Bob77
Niewiele do tego. Zobacz obcą odpowiedź, którą zamieściłem. Bob77
@Bob: A więc może pod nagłówkiem „Łatwo, kiedy wiesz, jak”? :) Binary Worrier
3

Posługiwać sięOutputDebugString i przeglądaj wiadomości za pomocą doskonałego bezpłatnegoDebugView. Więcej informacji i kod wielokrotnego użytku Karla Petersonatutaj

20

Użyj debug.print. Ale na aplikacji VB6 nie ma konsoli, która będzie drukować w oknie debugowania.

Dzięki. Właśnie tego potrzebowałem. CodeBlue

Powiązane pytania