[C++ manage][framework 1.1]Plantage avec le FolderBrowserDialog

Plantage avec le FolderBrowserDialog [C++ manage][framework 1.1] - C#/.NET managed - Programmation

Marsh Posté le 19-01-2006 à 18:25:35    

Slt,
 
J'utilise dans un WindowsForms un FolderBrowserDialog et j'ai un problème avec. J'ai un message d'erreur qui apparait quand je sélectionne un path trop long. (le plantage arrive dès que je sélectionne le répertoire avec la souris, avant meme que je fasse "OK" dans la boite de dialogue).
 
Le message c'est ca:  
 

Citation :

Exception non gérée à 0x7848144b dans Outils Spectra.exe:Point d'arrêt utilisateur.
 
arreter, continuer, aide


 
Peut on faire quelquechose contre cette erreur?
Avec ces path, le FolderBrowserDialog plante:
 

Citation :

C:\Répertoire\répertoire 1\kjsbdkjfbhdsjfldsfsdugfpsdugfpsdiufgsdiufgvsdifuvsdifdsfvdodhgjdkfbgkldfbglbdfbgfdbligbdffghfghgfhgfhfghfghgfhfgh
C:\Répertoire\répertoire 1\répertoire 2\répertoire 3\répertoire 4\répertoire 5\répertoire 6\répertoire 7\répertoire 8\répertoire 9


 
j'ai essayé avec

Citation :

C:\Répertoire\répertoire 1\répertoire 2\répertoire 3\répertoire 4\répertoire 5\répertoire 6\répertoire 7


 
et là ca marche. (Bon c'est juste des exemples donc les noms de répertoire sont bidons.)
J'ai essayé ces path avec ou sans accents et ca plante quand meme. Le plus étrange dans l'histoire, c'est que si j'ouvre un fichier qui se trouve dans l'un des répertoires ci-dessus avec un "openfileDialog", et bien là ca plante pas. Bizarre........

Reply

Marsh Posté le 19-01-2006 à 18:25:35   

Reply

Marsh Posté le 19-01-2006 à 18:34:15    

on est tellement devins qu'on va pouvoir t'aider sans que tu postes de code


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 19-01-2006 à 18:48:43    

C'est vrai que je l'ai pas mis, mais vu que ya que 2,3 lignes...
 
Voici mon code:
 

Code :
  1. this->buttonOpenFolder->Click += new System::EventHandler(this, &OutilsSpectra::Fiche_FT_to_FC::buttonOpenFolder_Click);
  2. [...]
  3. void OutilsSpectra::Fiche_FT_to_FC::buttonOpenFolder_Click(System::Object*  sender, System::EventArgs*  e)
  4. {
  5.     System::Windows::Forms::DialogResult result = this->folderBrowserDialog1->ShowDialog();
  6. }


 
normalement il est prévu que je fasse autre chose avec "result" mais vu que rien qu'avec ca j'ai des plantages, j'ai rien mis d'autre.


Message édité par cervantes le 19-01-2006 à 18:49:35
Reply

Marsh Posté le 19-01-2006 à 18:55:46    

le FolderBrowserDialog est un wrapper de l'API Win32 SHBrowserForFolder, qui prend en argument un pointeur vers une structure BROWSEINFO (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/browseinfo.asp)
Si tu regardes le champ pszDisplayName de cette structure, tu apprends que la valeur maximale du nombre de caractères autorisé est MAX_PATH, donc 256 caractères.
ceci explique peut etre celà


Message édité par Harkonnen le 19-01-2006 à 18:56:42

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 19-01-2006 à 21:36:38    

C'est vrai que c'est aussi la première idée qui m'est venu à l'esprit, la longueur du path est peut etre trop longue. Néanmois cela me rend quand meme perplexe vu que le meme path est très bien accepté par un openFileDialog. D'autre part, si je reprends mon exemple de:
 

Citation :

C:\Répertoire\répertoire 1\répertoire 2\répertoire 3\répertoire 4\répertoire 5\répertoire 6\répertoire 7\répertoire 8\répertoire 9


 
qui ne passe pas avec folderBrowserDialog, celui-ci est loin de faire 256 caractères.  
 
 :??:  
 
En supposant que la taille de mon path est bien la source de mon probleme, comment limiter davantage la taille du path de telle manière que je n'ai plus de crash de mon ihm?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed