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 :

Image

Ê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$