Avatar billede casperwollesen Nybegynder
20. februar 2002 - 15:32 Der er 4 kommentarer og
1 løsning

Problem ved debug/compiled exe fil

Hej!

Er der mulighed for i Visual Basic at få den til at eksekvere 2 forskellige koder alt efter om det er den compiled exe fil eller man sidder og kører koden i Visual Basic Environmentet?

Jeg laver nemlig en ny tråd i min applikation til at skrive noget log ned i en fil. Det virker også fint, men når jeg sidder og debugger i koden, går Visual Basic ned, da enviromentet ikke kan håndtere flere tråds applikationer. (Sig til hvis jeg har taget fejl)

Sådan som jeg kunne forestille mig koden var noget alla:

if isInVisualBasicEnvironment then
gør et eller andet
else
skriv til fil i ny tråd
end if

Jeg har nemlig ikke brug for at skrive til filen når jeg debugger. Lige nu kommenterer jeg funktion ud, men det er jo lidt besværligt og man skal holde styr på den nu er eller ikke.

Håber I forstår hvad jeg mener.

Casper W.
Avatar billede jesperthomsen Nybegynder
21. februar 2002 - 08:30 #1
Hejsa Casper

Du kan fuske en smule - debug.assert bliver kun tjekket i design mode; ikke i .exe-udgaven, så ved bevidst at lave en fejl i en linie med en debug.assert og tjekke på om der opstår fejl, kan du se om du kører i design-mode. Hvis koden fejler->design, hvis ikke->exe. Du kan IKKE bruge debug.print, da den evalueres i .exe-filen.

Public Function InIDE() As Boolean

    Static bRun As Boolean
    Static bIDE As Boolean

    If Not bRun Then
        bRun = True
        On Error Resume Next
        Err.Clear
        Debug.Assert 1 / 0
        If Err Then
            bIDE = True
        Else
            bIDE = False
        End If
        Err.Clear
        On Error GoTo 0
    End If

    InIDE = bIDE

End Function
Avatar billede casperwollesen Nybegynder
21. februar 2002 - 08:33 #2
Det er en mulighed, jeg lader lige spørgsmålet stå lidt åbent endnu, håber det er ok? Bare for at hører om der findes andre muligheder! Eller andre har smartere måder at gøre det på.

Casper W.
Avatar billede casperwollesen Nybegynder
21. februar 2002 - 09:16 #3
Hej jesperthomsen, tak for din indsats. Jeg fandt også dette svar, som jeg synes er lige så fint:

Public Property Get Debugging() As Boolean
  On Error GoTo DebuggingError

  'This line will only fail if you're running
  '  from the IDE.  This line does *NOT* get
  '  compiled into an .EXE
  Debug.Print 1 / 0  '"Division by zero" error
  Debugging = False

  Exit Property

DebuggingError:

  Debugging = True
End Property


When you want to check if you're running from the IDE or from an executable (.EXE), just perform a test similar to the following:
  If Debugging Then
    MsgBox "Running from the IDE"
  Else
    MsgBox "Running from Compile"
  End If

Koden er fra siden: http://www.redleif.com/vb/vbtips.html

Men tak for hjælpen/indsats,

Casper W.
Avatar billede jesperthomsen Nybegynder
21. februar 2002 - 09:20 #4
Det var så lidt. Jeg fandt mit svar i en nyhedsgruppe. Ifølge hajerne derinde fungerer metoden ikke debug.print - jeg har ikke afprøvet det, kun med Assert som fungerer fint. Men hvis det virker med print er den som du siger lige så god.
Avatar billede casperwollesen Nybegynder
21. februar 2002 - 09:22 #5
Har lige teste, begge eksempler virker.

Casper W.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester