Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mode compilé ou debug

11 réponses
Avatar
Jean-Nicolas BERGER
Bonjour,
Est-il possible en VB6 de déterminer si l'on est en environnement de
développement (dans l'IDE Visual Basic) ou bien si l'exécution se fait en
mode compilé (EXE lancé directement) ?
Toute piste serait la bienvenue.
Merci d'avance.
JN

10 réponses

1 2
Avatar
LE TROLL
Salut,

Pas tout compris!

Est-ce que tu veux dire, en mode interpréter ou exécuter
???

Si c'est ça, tu le vois tout de suite que tu es en mode
exécuter, car tu dois d'abord lui demander de compiler
l'exe, puis ensuite de l'appeler; dans les autres cas tu es
en interprété...
-----------

"Jean-Nicolas BERGER"
a écrit dans le
message de news:
Bonjour,
Est-il possible en VB6 de déterminer si l'on est en
environnement de développement (dans l'IDE Visual Basic)
ou bien si l'exécution se fait en mode compilé (EXE lancé
directement) ?
Toute piste serait la bienvenue.
Merci d'avance.
JN



Avatar
Guy DETIENNE
Salut ;O)

Il existe différentes façons de connaître cela via code :

Je te propose cette fonction qui te retourne False ou True :

Public Function fIsIDE() As Boolean
On Error GoTo IDEInUse

Debug.Print 1 0 'division by zero error
fIsIDE = False
Exit Function

IDEInUse:
fIsIDE = True
End Function

'Pour tester
Msgbox "Le programme s'exécute-t-il en mode IDE : " & fIsIDE

Guy

"Jean-Nicolas BERGER" a écrit dans
le message de news:
Bonjour,
Est-il possible en VB6 de déterminer si l'on est en environnement de
développement (dans l'IDE Visual Basic) ou bien si l'exécution se fait en
mode compilé (EXE lancé directement) ?
Toute piste serait la bienvenue.
Merci d'avance.
JN




Avatar
Guy DETIENNE
Salut ;O)

La question est claire non ?

Il est parfois utile de savoir si le code est exécuté dans l'environnement
IDE (interpreté) ou si le programme est exécuté en mode compilé. Ceci afin,
par exemple, de ne pas exécuter certaines lignes de code quand on debug le
programme.

Un exemple parmi d'autres :
J'ai une application qui crée une entrée (un log) dans une DB lorsque que je
me connecte et me déconnecte. Lorsque je débug mon programme, il m'arrive
de l'exécuter plus de 100 fois sur la journée. N'ayant pas envie de créer
ces logs inutiles, je vérifie donc si je suis en IDE ou pas.

'Si pas en mode IDE
If Not fIsIDE Then
'Le code qui ou appel de fonction que crée un log dans la DB
End If

Pour la fonction fIsIDE voir mon post précédent dans le même file.
Crois-moi, cela est très pratique !

Guy


"LE TROLL" <le a écrit dans le message de
news:
Salut,

Pas tout compris!

Est-ce que tu veux dire, en mode interpréter ou exécuter
???

Si c'est ça, tu le vois tout de suite que tu es en mode
exécuter, car tu dois d'abord lui demander de compiler
l'exe, puis ensuite de l'appeler; dans les autres cas tu es
en interprété...
-----------

"Jean-Nicolas BERGER"
a écrit dans le
message de news:
> Bonjour,
> Est-il possible en VB6 de déterminer si l'on est en
> environnement de développement (dans l'IDE Visual Basic)
> ou bien si l'exécution se fait en mode compilé (EXE lancé
> directement) ?
> Toute piste serait la bienvenue.
> Merci d'avance.
> JN
>




Avatar
Jean-Nicolas BERGER
Ouah! L'astuce de la mort qui tue!
Utiliser le fait que Debug.Print n'est exécuté qu'en mode IDE, et trapper
l'erreur, j'avoue qu'il y a de l'idée.
Chapeau bas, et merci beaucoup pour cette réponse si rapide.
JN.


"Guy DETIENNE" a écrit dans le message de news:

Salut ;O)

Il existe différentes façons de connaître cela via code :

Je te propose cette fonction qui te retourne False ou True :

Public Function fIsIDE() As Boolean
On Error GoTo IDEInUse

Debug.Print 1 0 'division by zero error
fIsIDE = False
Exit Function

IDEInUse:
fIsIDE = True
End Function

'Pour tester
Msgbox "Le programme s'exécute-t-il en mode IDE : " & fIsIDE

Guy

"Jean-Nicolas BERGER" a écrit
dans
le message de news:
Bonjour,
Est-il possible en VB6 de déterminer si l'on est en environnement de
développement (dans l'IDE Visual Basic) ou bien si l'exécution se fait en
mode compilé (EXE lancé directement) ?
Toute piste serait la bienvenue.
Merci d'avance.
JN








Avatar
LE TROLL
Mais, mais, sauf si j'ai un trou là, quand tu
exécutes en mode compilé, faut appeler l'exe créé
préalablement, alors que quand tu fais de l'interprété, ben
effectivement tu restes dans l'éditeur... Je veux dire par
là qu'on sait normalement ce qu'on fait, on ne confond pas
"appeler son exe", et faire interpréter l'éditeur, ça ne
s'appelle pas de la même façon en plus, où y a un truc que
je ne capte pas...
Je m'explique, pour interpréter, faut cliquer sur la flèche
droite de l'éditeur dans la barre...
Pour exécuter, faut aller dans l'explorateur et cliquer sur
l'exe...
Y a quand même un différence entre les deux, on ne confond
pas, à moins qu'il y ait d'autres façons d'appeler un exe
depuis l'éditeur ???
----------------

"Guy DETIENNE" a écrit dans le message
de news:
Salut ;O)

La question est claire non ?

Il est parfois utile de savoir si le code est exécuté dans
l'environnement
IDE (interpreté) ou si le programme est exécuté en mode
compilé. Ceci afin,
par exemple, de ne pas exécuter certaines lignes de code
quand on debug le
programme.

Un exemple parmi d'autres :
J'ai une application qui crée une entrée (un log) dans une
DB lorsque que je
me connecte et me déconnecte. Lorsque je débug mon
programme, il m'arrive
de l'exécuter plus de 100 fois sur la journée. N'ayant
pas envie de créer
ces logs inutiles, je vérifie donc si je suis en IDE ou
pas.

'Si pas en mode IDE
If Not fIsIDE Then
'Le code qui ou appel de fonction que crée un log dans la
DB
End If

Pour la fonction fIsIDE voir mon post précédent dans le
même file.
Crois-moi, cela est très pratique !

Guy


"LE TROLL" <le a écrit dans le message de
news:
Salut,

Pas tout compris!

Est-ce que tu veux dire, en mode interpréter ou
exécuter
???

Si c'est ça, tu le vois tout de suite que tu es en
mode
exécuter, car tu dois d'abord lui demander de compiler
l'exe, puis ensuite de l'appeler; dans les autres cas tu
es
en interprété...
-----------

"Jean-Nicolas BERGER"
a écrit dans le
message de news:
> Bonjour,
> Est-il possible en VB6 de déterminer si l'on est en
> environnement de développement (dans l'IDE Visual
> Basic)
> ou bien si l'exécution se fait en mode compilé (EXE
> lancé
> directement) ?
> Toute piste serait la bienvenue.
> Merci d'avance.
> JN
>








Avatar
Guy DETIENNE
Re ;O)

Franchement je ne peux pas t'expliquer mieux que dans mon post précédent...
Il n'est pas question de confondre l'exe et l'éditeur... Bien entendu que
chacun sait si l'on est dans l'IDE ou en mode compilé.

Mais dans le code qui s'exécute, que ce soit en IDE ou en EXE, il est
parfois intéressant de ne pas exécuter certains bouts de code en IDE
parcequ'il pourrait perturber le bon déroulement de debugage lorsque l'on
code... ou vice versa.

L'exemple du log dans une DB est typique en ce qui me concerne. Si on est
dans l'IDE, donc dans l'éditeur, je n'ai pas envie que le code qui crée un
log soit exécuté (c'est inutile et ca pollue ma DB). Donc je teste ma
fonction 'fIsIDE'. Si celle-ci me retourne TRUE, alors je suis en IDE et
donc je n'exécute pas le code.

Si tu ne captes toujours pas, laisse tomber, c'est que cette notion
t'échappe, et que de toute façon tu n'en as pas besoin.

Guy


"LE TROLL" <le a écrit dans le message de
news:%
Mais, mais, sauf si j'ai un trou là, quand tu
exécutes en mode compilé, faut appeler l'exe créé
préalablement, alors que quand tu fais de l'interprété, ben
effectivement tu restes dans l'éditeur... Je veux dire par
là qu'on sait normalement ce qu'on fait, on ne confond pas
"appeler son exe", et faire interpréter l'éditeur, ça ne
s'appelle pas de la même façon en plus, où y a un truc que
je ne capte pas...
Je m'explique, pour interpréter, faut cliquer sur la flèche
droite de l'éditeur dans la barre...
Pour exécuter, faut aller dans l'explorateur et cliquer sur
l'exe...
Y a quand même un différence entre les deux, on ne confond
pas, à moins qu'il y ait d'autres façons d'appeler un exe
depuis l'éditeur ???
----------------

"Guy DETIENNE" a écrit dans le message
de news:
> Salut ;O)
>
> La question est claire non ?
>
> Il est parfois utile de savoir si le code est exécuté dans
> l'environnement
> IDE (interpreté) ou si le programme est exécuté en mode
> compilé. Ceci afin,
> par exemple, de ne pas exécuter certaines lignes de code
> quand on debug le
> programme.
>
> Un exemple parmi d'autres :
> J'ai une application qui crée une entrée (un log) dans une
> DB lorsque que je
> me connecte et me déconnecte. Lorsque je débug mon
> programme, il m'arrive
> de l'exécuter plus de 100 fois sur la journée. N'ayant
> pas envie de créer
> ces logs inutiles, je vérifie donc si je suis en IDE ou
> pas.
>
> 'Si pas en mode IDE
> If Not fIsIDE Then
> 'Le code qui ou appel de fonction que crée un log dans la
> DB
> End If
>
> Pour la fonction fIsIDE voir mon post précédent dans le
> même file.
> Crois-moi, cela est très pratique !
>
> Guy
>
>
> "LE TROLL" <le a écrit dans le message de
> news:
>> Salut,
>>
>> Pas tout compris!
>>
>> Est-ce que tu veux dire, en mode interpréter ou
>> exécuter
>> ???
>>
>> Si c'est ça, tu le vois tout de suite que tu es en
>> mode
>> exécuter, car tu dois d'abord lui demander de compiler
>> l'exe, puis ensuite de l'appeler; dans les autres cas tu
>> es
>> en interprété...
>> -----------
>>
>> "Jean-Nicolas BERGER"
>> a écrit dans le
>> message de news:
>> > Bonjour,
>> > Est-il possible en VB6 de déterminer si l'on est en
>> > environnement de développement (dans l'IDE Visual
>> > Basic)
>> > ou bien si l'exécution se fait en mode compilé (EXE
>> > lancé
>> > directement) ?
>> > Toute piste serait la bienvenue.
>> > Merci d'avance.
>> > JN
>> >
>>
>>
>
>




Avatar
Jacques93
Bonsoir Guy DETIENNE,
Guy DETIENNE wrote:
Re ;O)

Franchement je ne peux pas t'expliquer mieux que dans mon post précédent...
Il n'est pas question de confondre l'exe et l'éditeur... Bien entendu que
chacun sait si l'on est dans l'IDE ou en mode compilé.

Mais dans le code qui s'exécute, que ce soit en IDE ou en EXE, il est
parfois intéressant de ne pas exécuter certains bouts de code en IDE
parcequ'il pourrait perturber le bon déroulement de debugage lorsque l'on
code... ou vice versa.

L'exemple du log dans une DB est typique en ce qui me concerne. Si on est
dans l'IDE, donc dans l'éditeur, je n'ai pas envie que le code qui crée un
log soit exécuté (c'est inutile et ca pollue ma DB). Donc je teste ma
fonction 'fIsIDE'. Si celle-ci me retourne TRUE, alors je suis en IDE et
donc je n'exécute pas le code.

Si tu ne captes toujours pas, laisse tomber, c'est que cette notion
t'échappe, et que de toute façon tu n'en as pas besoin.

Guy




J'ajouterais un cas où la détection du mode d'éxecution (.Exe ou IDE),
est très utile :l'utilisation de la .Dll 'DbgWProc.dll' (Debug Object
for AddressOf SubClassing) nécessaire pour tracer un programme sur
lequel on fait un Hook sur WindowProc (sans elle plantage de l'IDE),
mais qui ne doit pas être utilisée en mode .Exe (Avertissement MS)


--
Cordialement,

Jacques.
Avatar
LE TROLL
Lol, oui je comprends, je fais des log dès fois, mais je
n'en ai pas besoin comme tu dis, car quand je ne veux pas
que ce soit compilé, j'utilise une méthode trop rustique, je
mets un goto ou une apostrophe provisoirement :o)
-------------

"Guy DETIENNE" a écrit dans le message
de news: %
Re ;O)

Franchement je ne peux pas t'expliquer mieux que dans mon
post précédent...
Il n'est pas question de confondre l'exe et l'éditeur...
Bien entendu que
chacun sait si l'on est dans l'IDE ou en mode compilé.

Mais dans le code qui s'exécute, que ce soit en IDE ou en
EXE, il est
parfois intéressant de ne pas exécuter certains bouts de
code en IDE
parcequ'il pourrait perturber le bon déroulement de
debugage lorsque l'on
code... ou vice versa.

L'exemple du log dans une DB est typique en ce qui me
concerne. Si on est
dans l'IDE, donc dans l'éditeur, je n'ai pas envie que le
code qui crée un
log soit exécuté (c'est inutile et ca pollue ma DB). Donc
je teste ma
fonction 'fIsIDE'. Si celle-ci me retourne TRUE, alors je
suis en IDE et
donc je n'exécute pas le code.

Si tu ne captes toujours pas, laisse tomber, c'est que
cette notion
t'échappe, et que de toute façon tu n'en as pas besoin.

Guy


"LE TROLL" <le a écrit dans le message de
news:%
Mais, mais, sauf si j'ai un trou là, quand tu
exécutes en mode compilé, faut appeler l'exe créé
préalablement, alors que quand tu fais de l'interprété,
ben
effectivement tu restes dans l'éditeur... Je veux dire
par
là qu'on sait normalement ce qu'on fait, on ne confond
pas
"appeler son exe", et faire interpréter l'éditeur, ça ne
s'appelle pas de la même façon en plus, où y a un truc
que
je ne capte pas...
Je m'explique, pour interpréter, faut cliquer sur la
flèche
droite de l'éditeur dans la barre...
Pour exécuter, faut aller dans l'explorateur et cliquer
sur
l'exe...
Y a quand même un différence entre les deux, on ne
confond
pas, à moins qu'il y ait d'autres façons d'appeler un exe
depuis l'éditeur ???
----------------

"Guy DETIENNE" a écrit dans le
message
de news:
> Salut ;O)
>
> La question est claire non ?
>
> Il est parfois utile de savoir si le code est exécuté
> dans
> l'environnement
> IDE (interpreté) ou si le programme est exécuté en mode
> compilé. Ceci afin,
> par exemple, de ne pas exécuter certaines lignes de
> code
> quand on debug le
> programme.
>
> Un exemple parmi d'autres :
> J'ai une application qui crée une entrée (un log) dans
> une
> DB lorsque que je
> me connecte et me déconnecte. Lorsque je débug mon
> programme, il m'arrive
> de l'exécuter plus de 100 fois sur la journée. N'ayant
> pas envie de créer
> ces logs inutiles, je vérifie donc si je suis en IDE ou
> pas.
>
> 'Si pas en mode IDE
> If Not fIsIDE Then
> 'Le code qui ou appel de fonction que crée un log dans
> la
> DB
> End If
>
> Pour la fonction fIsIDE voir mon post précédent dans
> le
> même file.
> Crois-moi, cela est très pratique !
>
> Guy
>
>
> "LE TROLL" <le a écrit dans le message
> de
> news:
>> Salut,
>>
>> Pas tout compris!
>>
>> Est-ce que tu veux dire, en mode interpréter ou
>> exécuter
>> ???
>>
>> Si c'est ça, tu le vois tout de suite que tu es en
>> mode
>> exécuter, car tu dois d'abord lui demander de compiler
>> l'exe, puis ensuite de l'appeler; dans les autres cas
>> tu
>> es
>> en interprété...
>> -----------
>>
>> "Jean-Nicolas BERGER"
>> a écrit dans
>> le
>> message de news:
>>
>> > Bonjour,
>> > Est-il possible en VB6 de déterminer si l'on est en
>> > environnement de développement (dans l'IDE Visual
>> > Basic)
>> > ou bien si l'exécution se fait en mode compilé (EXE
>> > lancé
>> > directement) ?
>> > Toute piste serait la bienvenue.
>> > Merci d'avance.
>> > JN
>> >
>>
>>
>
>








Avatar
Guy DETIENNE
Re ;O)

Sinon plus simple :

MsgBox App.LogMode

Si 0 alors en IDE, si 1 alors EXE


Ou encore (devrait fonctionner pour VB6 et VB5) , mais plus long :

Private Declare Function GetModuleFileName Lib "kernel32" Alias
"GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String,
ByVal nSize As Long) As Long

Public Function fIsIDE() As Boolean

Dim strPath As String
Dim lRet As Long

strPath = Space$(260)

lRet = GetModuleFileName(App.hInstance, strPath, Len(strPath))
If lRet Then fIsIDE = LCase$(Mid$(strPath, lRet - 6, 7)) Like "vb?.exe"

End Function


Il y en a à mon avis encore d'autres...

Guy





"Jean-Nicolas BERGER" a écrit dans
le message de news:
Ouah! L'astuce de la mort qui tue!
Utiliser le fait que Debug.Print n'est exécuté qu'en mode IDE, et trapper
l'erreur, j'avoue qu'il y a de l'idée.
Chapeau bas, et merci beaucoup pour cette réponse si rapide.
JN.


"Guy DETIENNE" a écrit dans le message de news:

> Salut ;O)
>
> Il existe différentes façons de connaître cela via code :
>
> Je te propose cette fonction qui te retourne False ou True :
>
> Public Function fIsIDE() As Boolean
> On Error GoTo IDEInUse
>
> Debug.Print 1 0 'division by zero error
> fIsIDE = False
> Exit Function
>
> IDEInUse:
> fIsIDE = True
> End Function
>
> 'Pour tester
> Msgbox "Le programme s'exécute-t-il en mode IDE : " & fIsIDE
>
> Guy
>
> "Jean-Nicolas BERGER" a écrit
> dans
> le message de news:
>> Bonjour,
>> Est-il possible en VB6 de déterminer si l'on est en environnement de
>> développement (dans l'IDE Visual Basic) ou bien si l'exécution se fait


en
>> mode compilé (EXE lancé directement) ?
>> Toute piste serait la bienvenue.
>> Merci d'avance.
>> JN
>>
>>
>
>




Avatar
Guy DETIENNE
En effet, très rustique... surtout le goto !!!

Guy

"LE TROLL" <le a écrit dans le message de
news:
Lol, oui je comprends, je fais des log dès fois, mais je
n'en ai pas besoin comme tu dis, car quand je ne veux pas
que ce soit compilé, j'utilise une méthode trop rustique, je
mets un goto ou une apostrophe provisoirement :o)
-------------

"Guy DETIENNE" a écrit dans le message
de news: %
> Re ;O)
>
> Franchement je ne peux pas t'expliquer mieux que dans mon
> post précédent...
> Il n'est pas question de confondre l'exe et l'éditeur...
> Bien entendu que
> chacun sait si l'on est dans l'IDE ou en mode compilé.
>
> Mais dans le code qui s'exécute, que ce soit en IDE ou en
> EXE, il est
> parfois intéressant de ne pas exécuter certains bouts de
> code en IDE
> parcequ'il pourrait perturber le bon déroulement de
> debugage lorsque l'on
> code... ou vice versa.
>
> L'exemple du log dans une DB est typique en ce qui me
> concerne. Si on est
> dans l'IDE, donc dans l'éditeur, je n'ai pas envie que le
> code qui crée un
> log soit exécuté (c'est inutile et ca pollue ma DB). Donc
> je teste ma
> fonction 'fIsIDE'. Si celle-ci me retourne TRUE, alors je
> suis en IDE et
> donc je n'exécute pas le code.
>
> Si tu ne captes toujours pas, laisse tomber, c'est que
> cette notion
> t'échappe, et que de toute façon tu n'en as pas besoin.
>
> Guy
>
>
> "LE TROLL" <le a écrit dans le message de
> news:%
>> Mais, mais, sauf si j'ai un trou là, quand tu
>> exécutes en mode compilé, faut appeler l'exe créé
>> préalablement, alors que quand tu fais de l'interprété,
>> ben
>> effectivement tu restes dans l'éditeur... Je veux dire
>> par
>> là qu'on sait normalement ce qu'on fait, on ne confond
>> pas
>> "appeler son exe", et faire interpréter l'éditeur, ça ne
>> s'appelle pas de la même façon en plus, où y a un truc
>> que
>> je ne capte pas...
>> Je m'explique, pour interpréter, faut cliquer sur la
>> flèche
>> droite de l'éditeur dans la barre...
>> Pour exécuter, faut aller dans l'explorateur et cliquer
>> sur
>> l'exe...
>> Y a quand même un différence entre les deux, on ne
>> confond
>> pas, à moins qu'il y ait d'autres façons d'appeler un exe
>> depuis l'éditeur ???
>> ----------------
>>
>> "Guy DETIENNE" a écrit dans le
>> message
>> de news:
>> > Salut ;O)
>> >
>> > La question est claire non ?
>> >
>> > Il est parfois utile de savoir si le code est exécuté
>> > dans
>> > l'environnement
>> > IDE (interpreté) ou si le programme est exécuté en mode
>> > compilé. Ceci afin,
>> > par exemple, de ne pas exécuter certaines lignes de
>> > code
>> > quand on debug le
>> > programme.
>> >
>> > Un exemple parmi d'autres :
>> > J'ai une application qui crée une entrée (un log) dans
>> > une
>> > DB lorsque que je
>> > me connecte et me déconnecte. Lorsque je débug mon
>> > programme, il m'arrive
>> > de l'exécuter plus de 100 fois sur la journée. N'ayant
>> > pas envie de créer
>> > ces logs inutiles, je vérifie donc si je suis en IDE ou
>> > pas.
>> >
>> > 'Si pas en mode IDE
>> > If Not fIsIDE Then
>> > 'Le code qui ou appel de fonction que crée un log dans
>> > la
>> > DB
>> > End If
>> >
>> > Pour la fonction fIsIDE voir mon post précédent dans
>> > le
>> > même file.
>> > Crois-moi, cela est très pratique !
>> >
>> > Guy
>> >
>> >
>> > "LE TROLL" <le a écrit dans le message
>> > de
>> > news:
>> >> Salut,
>> >>
>> >> Pas tout compris!
>> >>
>> >> Est-ce que tu veux dire, en mode interpréter ou
>> >> exécuter
>> >> ???
>> >>
>> >> Si c'est ça, tu le vois tout de suite que tu es en
>> >> mode
>> >> exécuter, car tu dois d'abord lui demander de compiler
>> >> l'exe, puis ensuite de l'appeler; dans les autres cas
>> >> tu
>> >> es
>> >> en interprété...
>> >> -----------
>> >>
>> >> "Jean-Nicolas BERGER"
>> >> a écrit dans
>> >> le
>> >> message de news:
>> >>
>> >> > Bonjour,
>> >> > Est-il possible en VB6 de déterminer si l'on est en
>> >> > environnement de développement (dans l'IDE Visual
>> >> > Basic)
>> >> > ou bien si l'exécution se fait en mode compilé (EXE
>> >> > lancé
>> >> > directement) ?
>> >> > Toute piste serait la bienvenue.
>> >> > Merci d'avance.
>> >> > JN
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>




1 2