Newsgroup: it.comp.lang.visual-basic
Titolo: Sapere se ho sono in debug o in .exe

Ciao a tutti,
vorrei sapere se è possibile fare una cosa del genere:
IF sono in progettazione then
    continua
else
    Gestione utenti
endif
Cioè posso sapere se ho lanciato l'exe compilato oppure ho fatto F5 a
livello di progetto?
Mi servirebbe per saltare un controllo tutte le volte, che mi andrebbe a
chiudere il programma.
Grazie :)


Function IsInIDE() as Boolean
    IsInIDE=False
    On error resume next
    debug.print 1/0
    if err.number <> 0 then IsInIDE=True
End Function
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

 ha scritto nel messaggio
news:hnVoe.44931$795.1...@twister1.libero.it...

Public Function InDesign() As Boolean
Static CallCount    As Integer
Static Res          As Boolean
    CallCount = CallCount + 1
    Select Case CallCount
    Case 1  ' È la prima volta
        Debug.Assert InDesign()
    Case 2  ' La seconda volta: significa che è stata eseguita
            ' l'istruzione Debug.Assert
        Res = True
    End Select
    ' Se Debug.Assert è stata chiamata, si ritorna True in modo
    ' da impedire il trap
    InDesign = Res
    ' Resettata per le future ulteriori chiamate
    CallCount = 0
End Function
Bye
Raf

 livello di progetto?
1) In un modulo:
Private Declare Function GetModuleFileName Lib "kernel32" _
   Alias "GetModuleFileNameA" ( _
   ByVal hModule As Long, _
   ByVal lpFileName As String, _
   ByVal nSize As Long) As Long
Public Function isStandAlone() As Boolean
   Dim lBuf As Long, sBuf As String, lRis As Long
   Dim NomeApp As String
   lBuf = 261
   sBuf = String(lBuf, 0)
   lRis = GetModuleFileName(App.hInstance, sBuf, lBuf)
   NomeApp = Left(sBuf, lRis)
   isStandAlone = (UCase(Right(NomeApp, 7)) <> "VB6.EXE")
End Function
2) Dove vuoi:
If isStandAlone Then
   'Eseguibile compilato
Else
   'Eseguito da VB con F5
End If
L'unico caso in cui questo modo non funziona è se crei un eseguibile che
si chiama VB6.exe (ma direi che è alquanto marginale come problema).

 livello di progetto?
Un noto, vecchio trucco:
Function InIDE() As Boolean
    On Error Resume Next
    'La divisione per 0 genera sempre un Overflow, ma al momento della
    'compilazione tutte le istruzioni Debug.X vengono omesse
    Debug.Print 1 / 0
    If Err Then InIDE = True
    On Error GoTo 0
End Function
Generalmente comunque e' piu' pulito e piu' efficente usare le costanti di 
compilazione condizionale per questo tipo di debug
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown 

 Grazie :)
Dai un'occhiata alla compilazione condizionale.

 Public Function InDesign() As Boolean
Grazie a tutti, ho utilizzato questa e funziona alla perfezione.
Ho preferito evitare di generare errori volutamente :)
Ora posso lanciare i programmi senza dover sempre commentare la riga e
scommentarla poi :)

 #End If
Certo funziona, ma così devi ricordardi di reimpostare la costante di
compilazione condizionale ogni volta che crei l'exe e/o che lavori nell'IDE

 ha scritto nel messaggio news:hnVoe.44931$795.1...@twister1.libero.it...

io sarei piu' propenso a usare una costante condizionale tipo:


 compilazione condizionale ogni volta che crei l'exe e/o che lavori nell'IDE
infatti non ho detto che era la maniera piu' comoda e veloce, ma che ne ero
propenso........ cioe' penso che sia la maniera piu' pulita
ai posteri l'ardua..........

 ai posteri l'ardua..........
Sono d'accordo con te. O al massimo, passare qualche parametro dalla linea
di comando.
-- 
Ciao,
 Fabrizio
=== 
http://www.negusweb.it
 ===