Gros bug dans Windows ou ses API (mystère)

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 4 juil. 2005 à 22:47
daetips Messages postés 142 Date d'inscription jeudi 10 juillet 2003 Statut Membre Dernière intervention 10 novembre 2007 - 5 juil. 2005 à 18:58
Hello all

Regardez ce simple code, les 2 dossiers éxistent sur mon PC, la premiere fonction renvoye 0 (aucun dossier/erreur, enfin un prob quoi) tandis que le 2ieme PathIsDirectory sur le dossier winnt renvoye 16 (c'est bien un dossier)
Le même problème ce pose aussi avec GetAttr et surement beaucoup d'autre.
Essayez vous même, enregistrez la page de la source 12936 avec Internet Explorer (j'ai le 6) par exemple, changez les 2 répertoires afin qu'ils correspondent bien et testez... ;) C'est normal docteur ? Je suppose que c'est parce que c'est un long nom de fichier dans le premier cas qui pose probleme ou les caracteres spéciaux ? Pourquoi dans ce cas Windows accepte d'enregistrer la page s'il n'est ensuite plus capable de la gerer ? A moins que le prob soit ailleur, la je sais pas, ça me dépasse. Ou peut etre un probleme lors de la transmission de VB6 du nom de dossier à l'API qui surement en C++/C ?
Le pire, c'est que le nom du dossier long tel quel a été récupéré par un programme VB6 (http://www.vbfrance.com/code.aspx?ID=3332, algotithme sans FSO) que j'ai ensuite copié collé dans VB6 (éditeur) pour tester !! Bref, je pige pas, VB trouve un dossier, mais personne ne peut l'identifier ensuite. Vous avez une idée du probleme ?
Ca peut surement servir, je suis sous Windows 2000 Pro SP3

Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal pszPath As String) As Long
Private Sub Form_Load()
MsgBox PathIsDirectory("c:\Documents and Settings\Administrateur\Bureau\CPU FOR WINDOWS ¤ Code source N°32023 ¤ ¤ VBFrance_com Visual Basic - VB_NET CodeS SourceS 12936 sources VB, VB_NET, ASP_NET VBA, ASP, VBScript, VB Scripts, Source, Code, Programmation,_fichiers")
MsgBox PathIsDirectory("c:\winnt")
End Sub

@Z3RtY25 ==

4 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
5 juil. 2005 à 10:07
salut,



dans MSDN, ils disent :

a null-terminated string of maximum length MAX_PATH that contains the
path to verify



Donc dans un chemin pas plus de 256 caractères...


Je pense que c'est surtout par compatibilité avec FAT32 qui n'est pas
vraiment fait pour les noms vraiment longs...Enfin, il faut dire que
des noms trop longs ca ne sert à rien et que effectivement, IE devrait
tronquer les noms....


ShareVB
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
5 juil. 2005 à 11:08
Euh, en fait, c'est pas ça, je viens de vérifier la longueur de la chaine, elle fait 196 cars.
J'ai remarqué un autre truc, c'est que l'explorateur Windows affiche à la place des ¤ des carrés. Y'a peut etre un rapport ?! Mais logiquement, si Windows ne supporte pas l'affichage des caracteres spéciaux, ils sont quand meme enregistrés comme tels et VB est capable de les lire... :(

@Z3RtY25 ==
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
5 juil. 2005 à 15:58
salut,



oupss, j'avais pas compter lol :) ...Il faut peut être utiliser la
version UNICODE (W) si on veut des caracètres spéciaux...et Byval
strptr()...

ShareVB
0
daetips Messages postés 142 Date d'inscription jeudi 10 juillet 2003 Statut Membre Dernière intervention 10 novembre 2007
5 juil. 2005 à 18:58
c'est peut etre à cause des caracteres spéciaux, essaye de créer un dossier de même longueur mais en remplacant les ¤ par des a par exemple

Daetips
0
Rejoignez-nous