Ada.Directories
Thomas De Contes <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
bonjour :-) quelques questions et commentaires sur Ada.Directories portabilité : J'aimerais faire l'application la plus portable possible, mais j'ai un peu de mal à savoir quoi faire Quand on veut utiliser dossier/sous-dossier/ , apparemment il ne faut surtout pas utiliser cette chaîne telle quelle dans les sous programmes de Ada.Directories, mais il faut la construire : Compose(Compose( Current_Directory , "dossier" ), "sous-dossier" ) Sinon, par exemple avec Create_Path, sous windows on risquerait de se retrouver avec un dossier qui s'appelle "dossier/sous-dossier/" Il y a Dir_Seps , mais apparemment il est très très peu utilisé Donc finalement, ce qu'il y a à faire, c'est de ne jamais utiliser dans un nom des caractères qui peuvent éventuellement être utilisés comme séparateurs (il n'y a que '/' et '\' ?), et ne jamais les utiliser directement comme séparateurs non plus ? Est ce qu'il y a d'autres précautions à prendre ? En fait, je crois que ce qu'il y a de plus compliqué, c'est le fait qu'on peut se retrouver sur une plate-forme donnée avec un fichier dont le nom contient un caractère qui sert de séparateur sur une autre plate-forme D'ailleurs, ça serait bien d'avoir qqch qui nous donne la racine, puisque c'est dépendant de la plate-forme Et même, si c'était possible, les chemins qui nous indiquent directement là où mettre les préférences des applications, etc (Par exemple, les préférences sous mac os x c'est ~/Library/ Preferences/) case : Je suis sous mac os x, avec un systeme de fichier qui est case- insensitive, Mais si on crée un fichier avec des majuscules et des minuscules mélangées, il s'en souvient Simplement on peur relire le fichier en indiquant d'autres majuscules et minuscules (c'est pas trop confus ?) Et moi, j'aime bien mettre des majuscules dans le nom de certains fichiers, quelquefois J'ai Ada.Directories.Validity "the POSIX version of this package" avec Is_Path_Name_Case_Sensitive return True; Heureusement, comme ça je peux continuer à mettre des majuscules :-) Puisque si ça avait été False ça aurait été quelquefois (mais pas toujours) converti en minuscules ... (c'est fait exprès ?) Mais, ça ne risque pas de poser de problèmes, quand on appelle un fichier avec des noms différents (au niveau de la case), si gnat croit que c'est des fichiers différents ? ergonomie : Je trouve que les procédures pour "partir à la recherche" du contenu d'un dossier sont assez lourdes à utiliser (pas vous ?) Pourquoi ne pas avoir fait tout simplement une fonction qui renvoie un tableau d'Unbounded_String ? (Pas besoin de faire un type aussi sophistiqué que File_List de OS_Services, On a juste à utiliser chaque chaîne comme il faut, avec les sous programmes habituels, pour avoir les informations qu'on veut sur chaque fichier) (Mêmes remarques pour Ada.Environment_Variables) Personnellement, je trouve que le paramètre Pattern n'a rien à faire là Amha, la moindre des choses, ça serait de mettre une valeur par défaut qui ne filtre rien (j'espère que c'est pas dépendant de la plate-forme, au moins) A ma connaissance, c'est typiquement une vision de linuxien, de vouloir mettre un filtre partout où il y a des listes de fichiers Sur mac on n'a pas du tout cette habitude Pourquoi pas une fonction match, qui dit si un fichier passe dans un filtre ou pas Voire une fonction qui prend un tableau d'Unbounded_String (ci dessus) et qui le renvoie "nettoyé" (En plus, comme ça ça pourrais servir à plein d'autres choses qu'aux fichiers :-) ) J'aimerais aussi faire quelques commentaires sur le code source Mais j'ai peut être pas la dernière version : Mon a-direct.adb a été modifié le 7/6/2007 "package body Ada.Directories is" l 50 "end Ada.Directories;" l 1240 Et vous ? Exemple : Chez moi, Create_Directory ne fait pas d'erreur si le dossier qu'on veut créer existe deja C'est normal ? Amha, dans tous les cas il vaudrait mieux rajouter une ligne, pour préciser exactement ce qu'on veut (rien ou une erreur), avec Is_Directory(New_Directory), l 352 -- j'agis contre l'assistanat, je travaille dans une SCOP ! _______________________________________________ Site WWW de l'association Ada-France: http://www.ada-france.org/ [email protected] http://www.ada-france.org/mailman/listinfo/ada-france