2012-05-09 5 views

risposta

19

Utilizzare debug.print. Ma non c'è una console su un'applicazione VB6, che stamperà nella finestra di debug.

+0

Grazie. Questo è quello di cui avevo bisogno. – CodeBlue

0

Questo non è qualcosa che il Vb6 può fare facilmente (sono sicuro che si possa fare, ma chiameresti API Win32 native e non vale la pena se lo stai usando solo per il debug)

La tua migliore scommessa (IMHO) è quella di scrivere quei valori in un file di registro.

+0

In realtà può essere fatto abbastanza banalmente da VB6 usando l'FSO. Ovviamente si applica solo quando si * ha * una console, cosa che si fa raramente in un programma VB6, a meno che non si sia AllocConsole() o si esegua come un EXE ricollegato per il sottosistema della console. Ma sono d'accordo che non è lo strumento migliore per il debug. – Bob77

+0

@Bob: Quindi, si presenta sotto la voce "Facile quando sai come" forse? :) –

+0

Non c'è molto da fare. Vedi la risposta estranea che ho postato. – Bob77

3

Utilizzare OutputDebugString e visualizzare i messaggi con l'eccellente DebugView gratuito. Ulteriori informazioni e codice riutilizzabile di Karl Peterson here

9

Questa risposta non dovrebbe essere accettata perché Debug.Print è la soluzione ideale per il test IDE.

Tuttavia solo per mostrare come utilizzare l'I/O standard flussi facilmente in 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 

Nota che ben poco del codice si richiede per un programma vero e proprio Console in VB6. La maggior parte si tratta di allocare una finestra della console quando il programma non è in esecuzione nel sottosistema della console.

+2

+1: bello. Quindi, proprio come ho detto allora, facile quando sai come :) –