[R] L'ordre des fichiers n'est pas respecté.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
eric
Niveau 5
Niveau 5
Messages : 177
Enregistré le : sam. 21 mars 2009 17:57
Localisation : Bretagne
Status : Hors ligne

[R] L'ordre des fichiers n'est pas respecté.

#1

Message par eric »

Bonjour.

Je viens de tomber sur un cas bizarre.

Prenons l'exemple d'un code tout simple:

Code : Tout sélectionner

$var = FileOpenDialog ("Choisissez des fichiers","","(*.*)",4)
$var2 = StringReplace($var, "|", @CRLF)
MsgBox(4096,"",$var2)
En gros on choisit dans une boite de dialogue des fichiers et ensuite a liste des fichiers choisit s'affiche dans un message.

Sauf que si je choisis les fichiers à l'aide de la touche SHIFT ou CTRL les fichiers s'affichent ensuite dans l'ordre, sauf que le dernier fichier n'est pas le dernier qui s'affiche dans la liste mais le premier.
C'est pas normal.

Ca ne le fait pas si je choisis les fichiers par une fenêtre de sélection.

Je ne sais pas si mon explication est claire.

Y a t il un moyen de régler cela ?
Est ce un bug ?

Merci
Modifié en dernier par eric le jeu. 01 oct. 2009 09:12, modifié 2 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#2

Message par Iste »

car le dernier que tu sélectionne a en plus le focus, il est double-select quoi ^^'
j'avais déja eu ce probleme, je sais plus ou

Enfin, c'est peut etre pas ca, mais ca vaut le coup de tester, moi je peux pas actuellement ^^'
Signez ici
eric
Niveau 5
Niveau 5
Messages : 177
Enregistré le : sam. 21 mars 2009 17:57
Localisation : Bretagne
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#3

Message par eric »

car le dernier que tu sélectionne a en plus le focus, il est double-select quoi ^^'
Merci Iste pour ta réponse

Peut être que c'est ça, mais je ne vois pas comment l'empêcher.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#4

Message par Iste »

Ben, en étant barbar, tu peux 'simplement' refaire la fonction FileOpenDialog(), ou placer d'office le dernier en 1er mais bon...
Signez ici
eric
Niveau 5
Niveau 5
Messages : 177
Enregistré le : sam. 21 mars 2009 17:57
Localisation : Bretagne
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#5

Message par eric »

Ben, en étant barbar, tu peux 'simplement' refaire la fonction FileOpenDialog()
Tu veux dire recréer toute la boite de dialogue manuellement ?
Dans ce cas je me contenterais du bug :o
ou placer d'office le dernier en 1er mais bon
Ben oui mais si ça ne le fait pas avec une fenêtre de sélection, ça va être chaud de déterminer si l'utilisateur a choisis la méthode avec CTRL ou SHIFT, ou si il a fait une fenêtre de sélection.

Vous croyez que ça vaudrait le coup de poster un message sur le forum anglais pour le signaler ?

Merci
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#6

Message par Iste »

Alors !

Je viens de me pencher sur le problème pour voir comment les autres logiciels s'en sortent.

Conclusion, FileOpenDialog trie alphabétiquement les fichiers, par conséquent, l'ordre de sélection est toujours l'ordre alphabétique.
Du coup, trie ton array pour etre sur que le 1er ne soit pas mal placé, et hop ^^ -> _ArraySort()

Faudra quand meme vérifier un coup, mais pour moi c'est ca ;)

Pis sinon, si ton anglais est assez bon, fofo anglais directe bien sur, ils sont beaucoup plus nombreux (et compétant), tu auras donc plus de chance de trouver la solution, et nous la faire partager ^^
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#7

Message par Tlem »

A première vue, cela est dût au composent de Microsoft.
Regardez la zone "Nom du fichier" lors de votre sélection multiple.
Windows rajoute à droite de la ligne la dernière sélection.

Donc déjà si Windows ne renvoi pas les bonnes informations, comment voulez-vous que AutoIt s'en sorte ... :lol:

La seule solution serait de mettre tout les éléments dans un tableau(StringSplit), ensuite un tris par ordre croissant (_ArraySort) puis le traitement vers votre sortie. :wink:
► Afficher le texteComme ceci
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2283
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#8

Message par jchd »

Attention quand même aux raccourcis saisissants.

Les noms de fichiers Windows sont en Unicode (non normalisé) et AutoIt ne sait pas trier de l'Unicode. _ArraySort ne sera pas fiable ou, du moins renverra à l'occasion un ordre non souhaitable ou différent d'une installation à l'autre.

Hormis faire appel à ICU, et encore, il n'y a pas de solution générale à ce problème et ICU est certainement un marteau-pilon pour cette épingle-là.

Une solution bâtarde mais jouable est d'employer un tri par la fonction StringCompareW de Windows avec des paramètres "génériques".

Ceci dit, du fait que Windows autorise des noms de fichiers "visionymes" (apparaissant rigoureusement identiques mais distincts pour NTFS), on peut dire que le problème est insoluble si l'on exige un fonctionnement correct dans tous les cas.

Je sais, je pinaille !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#9

Message par Tlem »

Hé oui, comme je l'ai dit précédemment :
Donc déjà si Windows ne renvoi pas les bonnes informations, comment voulez-vous que AutoIt s'en sorte ... :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
eric
Niveau 5
Niveau 5
Messages : 177
Enregistré le : sam. 21 mars 2009 17:57
Localisation : Bretagne
Status : Hors ligne

Re: [..] L'ordre des fichiers n'est pas respecté.

#10

Message par eric »

Bonjour,

Effectivement c'est un truc de Windows ça :shock:

J'ai testé avec d'autres logiciels est en utilisant cette méthode pour ouvrir des fichiers, c'est le dernier qui s'ouvre d'abord.

Astuce : sélectionner les fichiers dans l'ordre inverse avec Shift et la c'est correct.

En tout cas merci pour m'avoir éclairé.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] L'ordre des fichiers n'est pas respecté.

#11

Message par Tlem »

Une autre astuce consiste à faire sa sélection, puis en dernier lieu on dé-sélectionne le dernier choix. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre