Page 1 sur 2
Echec de Debug (pb6.40)
Publié : dim. 14/juin/2026 20:33
par promadoc
Bonjour à tous,
Regardez ce code:
Code : Tout sélectionner
;SOUS PB 6.40
winpath$="c:\windows\"
filename$="filesys.txt"
fullpath$=winpath$ + filename$
debug fullpath$
;Résultat affiché : "c:\windows\"
filename$ n'est pas affiché
SOUS PB 6.10
j'ai utilisé le même programme sous pb 6.10, ça a marché
Merci
Re: Echec de Debug (pb6.40)
Publié : dim. 14/juin/2026 22:41
par Mindphazer
Aucun problème ici, bien évidemment.
Re: Echec de Debug (pb6.40)
Publié : lun. 15/juin/2026 17:52
par promadoc
Le problème existe toujours, sinon je n'aurais jamais le remplacer par la version 6.10. Je suis persuadé que vous n'avez pas utilisé le bon exemple.
Re: Echec de Debug (pb6.40)
Publié : lun. 15/juin/2026 21:11
par Bruce33
Chez moi aussi le code fonctionne comme prévu :
Êtes-vous sûr d'avoir orthographié correctement
filename$ à chaque fois ?
Utilisez
EnableExplicit et déclarez les variables avec
Define pour voir...
Re: Echec de Debug (pb6.40)
Publié : lun. 15/juin/2026 22:15
par promadoc
S'agit il de la version x86 32bits windows? C'est celle là qui déconne à mon niveau (je vais revoir les variables)
Re: Echec de Debug (pb6.40)
Publié : mar. 16/juin/2026 10:55
par MLD
Saluts a tous
chez moi cela fonctionne parfaitement. Windows 10 PB 6.40 X86
Re: Echec de Debug (pb6.40)
Publié : mar. 16/juin/2026 16:35
par Mindphazer
promadoc a écrit : lun. 15/juin/2026 22:15
S'agit il de la version x86 32bits windows? C'est celle là qui déconne à mon niveau (je vais revoir les variables)
Tu n'as pas précisé dans ton message d'origine qu'il s'agissait de la version 32bits...
Cela dit, ça fonctionne très bien ici
Win 11
PB 6.40 32bits
Re: Echec de Debug (pb6.40)
Publié : mar. 16/juin/2026 16:36
par Mindphazer
promadoc a écrit : lun. 15/juin/2026 17:52
Le problème existe toujours, sinon je n'aurais jamais le remplacer par la version 6.10. Je suis persuadé que vous n'avez pas utilisé le bon exemple.
Si si
Ton exemple.
Copié-collé
En mettant en commentaire les 4 dernières lignes, bien évidemment.
Re: Echec de Debug (pb6.40)
Publié : mer. 17/juin/2026 12:56
par promadoc
Alors où se trouve l'explication? Y a t il plusieurs versions différentes Pb 6.40 (1) et Pb 6.40 (b)? C'est la seule explication valable puisque ça marche chez quelqu'un et ça ne marche pas chez d'autres?? N'est ce pas un mystère? Je viens de tester avec la version Pb 6.30 résultat : ça fonctionne normalement, j'ai refait le test avec Pb 6.40 et hop! le même faux résultat se reproduit..
Re: Echec de Debug (pb6.40)
Publié : mer. 17/juin/2026 22:35
par Mindphazer
promadoc a écrit : mer. 17/juin/2026 12:56
ça marche chez quelqu'un et ça ne marche pas chez d'autres??
D'autres ? A part toi, personne n'a dit que ça ne marchait pas
Re: Echec de Debug (pb6.40)
Publié : jeu. 18/juin/2026 14:22
par promadoc
Incroyable mais vrai ! Je viens de désinstaller pb 6.30 je retélécharge Pb 6.40 x86. J'ai retesté en utilisant le même exemple cité et ça marche. Je ne comprends pas ce qui s'est passé (pas convaincu) mais la question reste posée: peut être que j'ai fait une erreur d'orthographe? Bref, l'essentiel ça fonctionne et je suis content que ça marche. Merci à vous tous de votre assistance et bonne continuation.
Re: Echec de Debug (pb6.40)
Publié : jeu. 18/juin/2026 19:34
par promadoc
Finalement, j'avais raison, voici la preuve que debug ne fonctionne pas quand on utilise GetSystemFolder() (Chemin de window), j'ai oublié de le signaler c'est pour cette raison que vos tests fonctionnait bien, voici le code complet.
Code : Tout sélectionner
;------------------------------------------------------------------------------------------------------
Procedure.s GetSystemFolder (folder)
*itemid.ITEMIDLIST = #Null
If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR
location$ = Space (#MAX_PATH)
If SHGetPathFromIDList_ (*itemid, @location$)
ProcedureReturn location$
EndIf
EndIf
EndProcedure
;------------------------------------------------------------------------------------------------------
Procedure Testdemo()
filename$="filesys.txt"
;Récupérer le chemin de windows
winpath$=GetSystemFolder (#CSIDL_WINDOWS)
;Chemin du fichier filesys.txt
fullpath$=winpath$ + "\" + filename$
;affichage du chemin avec debug
Debug "fullpath$="+fullpath$
;affichage du chemin avec MessageRequester
MessageRequester("FullPath$=",fullpath$)
;Par contre si on n'utilise pas getsystemfolder(), le résultat est tout autre
winpath$="c:\windows"
fullpath$=winpath$ + "\" + filename$
;affichage du chemin avec debug
Debug "fullpath$="+fullpath$
;avec MessageRequester...
MessageRequester("FullPath$=",fullpath$)
EndProcedure
Testdemo()
Je vous invite à tester ce code tel qu'il est, merci
Re: Echec de Debug (pb6.40)
Publié : jeu. 18/juin/2026 19:57
par promadoc
Pour continuer à utiliser Pb 6.40, j'ai du modifier le code:
Code : Tout sélectionner
;Récupérer le chemin de windows
winpath$=GetSystemFolder (#CSIDL_WINDOWS)
;Récupérer le lecteur disque de windows
windrive$=UCase(Left(winpath$,2))
;Afficher le chemin complet du fichier
fullpath$=windrive$ + "\windows\" + filesys$
Debug "fullpath$="+fullpath$
Re: Echec de Debug (pb6.40)
Publié : ven. 19/juin/2026 8:30
par TazNormand
Salut
petite correction :
Code : Tout sélectionner
;------------------------------------------------------------------------------------------------------
Procedure.s GetSystemFolder (folder)
*itemid.ITEMIDLIST = #Null
If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR
location$ = Space (#MAX_PATH)
If SHGetPathFromIDList_ (*itemid, @location$)
ProcedureReturn RTrim(location$)
EndIf
EndIf
EndProcedure
;------------------------------------------------------------------------------------------------------
Procedure Testdemo()
filename$="filesys.txt"
;Récupérer le chemin de windows
winpath$=GetSystemFolder (#CSIDL_WINDOWS)
;Chemin du fichier filesys.txt
fullpath$=winpath$ + "\" + filename$
;affichage du chemin avec debug
Debug "fullpath$="+fullpath$
;affichage du chemin avec MessageRequester
MessageRequester("FullPath$=",fullpath$)
;Par contre si on n'utilise pas getsystemfolder(), le résultat est tout autre
winpath$="c:\windows"
fullpath$=winpath$ + "\" + filename$
;affichage du chemin avec debug
Debug "fullpath$="+fullpath$
;avec MessageRequester...
MessageRequester("FullPath$=",fullpath$)
EndProcedure
Testdemo()
Les chemins Windows sont limités à 260 caractères, et comme la valeur de retour est remplie d'espaces non significatifs à la fin, tu atteins donc les 260 caractères. J'ai juste ajouté le RTrim() sur la valeur de retour de ta procédure GetSystemFolder.
ça n'explique pas pourquoi le Debug n'affiche pas quand même le chemin complet avec le "filesys.txt"
Re: Echec de Debug (pb6.40)
Publié : ven. 19/juin/2026 14:06
par Jacobus
Essayez comme ceci. (Depuis PB 6.40)
(ce n'est pas le debug qui dysfonctionne)
Code : Tout sélectionner
Procedure.s GetSystemFolder(folder)
*itemid.ITEMIDLIST = #Null
If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR
location$ = Space(#MAX_PATH)
If SHGetPathFromIDList_ (*itemid, @location$)
ProcedureReturn PeekS(@location$) ; lecture de la chaîne en mémoire ou ; RTrim(PeekS(@location$)) aussi
EndIf
EndIf
EndProcedure
winpath$ = GetSystemFolder (#CSIDL_WINDOWS)
If Right(winpath$, 1) <> "\"
winpath$ + "\"
EndIf
filename$ = "filesys.txt"
Debug winpath$ + filename$