2012-05-09 52 views

Odpowiedz

19

Użyj debug.print. Ale w aplikacji VB6 nie ma konsoli, która zostanie wydrukowana w oknie debugowania.

+0

Dzięki. Tego właśnie potrzebowałem. – CodeBlue

0

Nie jest to coś, co Vb6 może z łatwością zrobić (jestem pewien, że można to zrobić, ale nazywałbyś natywne interfejsy API Win32 i nie jest to warte bólu, jeśli używasz go tylko do debugowania)

Twój najlepszy zakład (IMHO) polega na zapisaniu tych wartości w pliku dziennika.

+0

W rzeczywistości można to zrobić całkiem trywialnie z VB6 za pomocą FSO. Oczywiście ma to zastosowanie tylko wtedy, gdy * masz * konsolę, co rzadko robisz w programie VB6 - chyba że masz AllocConsole() lub działasz jako EXE zsynchronizowany z podsystemem konsoli. Ale zgadzam się, że to nie jest najlepsze narzędzie do debugowania. – Bob77

+0

@ Bob: Więc jest pod nagłówkiem "Łatwo, kiedy wiesz, jak" może? :) –

+0

Nie za dużo. Zobacz nieistotną odpowiedź, którą napisałem. – Bob77

3

Użyj OutputDebugString i przeglądaj wiadomości z doskonałym bezpłatnym DebugView. Więcej informacji i kod wielokrotnego użytku od Karl Peterson here

9

Nie oczekuje się, że będzie to zaakceptowana odpowiedź, ponieważ Debug.Print jest sposobem na testowanie IDE.

Jednak żeby pokazać, jak korzystać ze standardowego wejścia/wyjścia strumieni łatwo w VB6:

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 

Należy zauważyć, że bardzo mało kodu nie jest wymagane w przypadku rzeczywistego programu Console w VB6. Większość dotyczy alokacji okna konsoli, gdy program nie jest uruchomiony w podsystemie konsoli.

+2

+1: Niezły. Więc, tak jak wtedy mówiłem, łatwo, kiedy wiesz jak :) –

Powiązane problemy