Classes sur les fichiers/dossiers/disques


< Retour au sommaire de la catégorie
<< Retour au sommaire du forum

Classes sur les fichiers/dossiers/disques par violent_ken le 19/04/2007 à 22:39:24     "Discussion libre"
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Bonsoir tout le monde ;)


Comme je suis en train de coder un éditeur hexa en ce moment, j'ai énormément besoin de fonctions qui sont en rapports avec les fichiers, les dossiers et les disques.


Par conséquent, j'ai déjà codé quelques classes déjà complètes sur le thème (disques, fichiers et dossiers).
Je pense réorganiser tout çà de manière plus objet, et créer une dll avec le tout pour faciliter l'exploitation des fonctions dans mon éditeur hexa (et pour éviter de tout recompiler à chaque fois...)


Donc je pense que au final, çà pourra faire avancer également toute la partie "fichiers" de la VBSystemLibrary puisque l'architecture sera très peu différente de ce qui existe déjà dans la library (donc copier coller de fou ^^).


Donc bah, je vous dirai quand j'aurais codé çà ^^


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 20/04/2007 à 17:01:07
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Ok ça a l'air super cool, tiens nous au courant quand tu as avancé ;)

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 20/04/2007 à 19:14:20
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Salut, je suis en plein coding de ces classes, j'aurais sans doutes fini demain !


J'ai prévu les classes : File, Files, Folder, Folders, Drive, Drives, PhysicalDisk, PhysicalDisks, clsDefs et FileSystem, les objets ayant un 's' à la fin représentant une collection d'objets. J'ai repris l'architecture de Microsoft Scripting Runtime, qui est très proche de celle de la vbSystemLibrary.


Je pense que çà peut presque complètement remplacer la dll Microsoft Scripting Runtime, toutes les fonctions y sont (ou presque, en tout cas toutes les fonction sur les fichiers/dossiers/drives seront là), et en plus il y a la gestion complète de l'obtention d'infos sur les disques logiques et physiques, écriture/lecture et plein de nouvelles fonctions...


Bref, une synthèse de tout mon travail sur les fonctions de gestion de fichiers et de disque, le tout bien évidemment par API exclusivement.


(je reprend notamment http://www.vbfrance.com/codes/CLASSE-SUR-DISQUES-PARTITIONS-OBTENTIONS-INFOS-CLUSTERS-TAILLE_40383.aspx et http://www.vbfrance.com/codes/CLASSE-GESTION-FICHIERS-DOSSIERS-INFOS-DATES-COPYRIGHT-LISTING_40646.aspx.)


Et çà facilitera l'implantation de ces fonctions dans la vbSystemLibrary !


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 00:30:58
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Re,

Effectivement ça serait énorme comme avancée, y'a pas à dire ! Perso je suis completement pour, par contre la seb va bientot mettre la version 1.3 de la librairie en ligne (pas mal de modifs) et on a codé un petit process viewer histoire de faire de la pub au projet (on pourra le mettre sur vbfrance et autre, et attirer l'attention sur la librairie) et en plus ça servira à montrer de quoi la librairie est capable (d'ailleurs c'est fou à quel point c'est pratique, personellement je m'attendais pas à ce que ça soit si facile lol).

Donc en gros il faudrait attendre que seb ait mis la version 1.3 et le processviewer (j'ai fait une page web et une petite mise à jour du site pour des bugs mineurs, je mettrai tout ça ene meme temps lorsque le process viewer sera fini), et après on pourrait ajouter tes classes ça serait un bond énorme.

Sinon tu dis : "les objets ayant un 's' à la fin représentant une collection d'objets", on les a notés ListProcesses, ListWindows etc... dans la librairie
Mais à reflexion le 's' à la fin j'y avais pas pensé ça pourrait etre pas mal d'utiliser cette notation.
Je sais pas ce qui est utilisé dans le framework .net par exemple, ou dans le Microsoft Scripting Runtime ? à voir ce qui serait le plus intuitif
Je vais poster une question dans vbfrance histoire d'avoir d'autres avis et de pouvoir décider rapidement.

Lien du post :
http://www.vbfrance.com/infomsg_COMMENT-NOMMEZ-VOUS-VOS-CLASSES_926704.aspx

On va donc d'abord mettre la version 1.3, le processviewer, et après on pourra ajouter tes classes et voir quelle notation on prend.

Merci
@+

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 09:05:51
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Pas de problèmes, j'attend, de toutes façons j'ai pas encore tout à fait fini ;)


Sinon pour le 's' à la fin, j'ai repris la notation de Scripting (scrrun.dll) pour toutes les classes (File, Files, Folder, Folders...).


 


Et sinon, j'ai trouvé un code vraiment utile : c'est pour pouvoir utiliser For Each avec nos classes contenant des collections : http://www.vbfrance.com/tutoriaux/IMPLEMENTER-FOR-EACH_188.aspx


Comme çà on peut faire par exemple :


Dim cFil as File


Set cFiles=clsFile.EnumFiles(...)


For Each cFil in cFiles


...


Next cFil


 


@+

Re : Classes sur les fichiers/dossiers/disques par sebdraluorg le 21/04/2007 à 12:04:47
sebdraluorg
sebdraluorg

Administrateur

Inscrit le 12/11/2006
6 Message(s)

Salut,


Eh pour la version 1.3 je vais essayer de la deposer today avec le ProcessViewer


Sinon pour l'implementation du for each j'avais aussi pensé a cette solution mais ca doit manger quand meme pas mal de ressource par rapport a un simple tableau non ? De plus for each n'est pas tres utilisé en vb6 tellement il y a peu d'objets qui le gere donc les users sont habitues a utiliser des simple tableau...


Enfin si tu veux on peut le faire et voir ce que ca donne niveau perf...


Sinon en regardant tout ce que tu propose de rajouter et pensant qu'il va encore y avoir une classe pour la base de registre etc il faudrait peut etre qu'on refasse un shema global pour ne pas s'en meler les pinceaux ?


En tout cas c'est cool pour les classes ^^ merci!


++

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 12:15:26
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Salut, effectivement faudra peut être repenser le schéma global ^^


Pour la classe sur le registre, j'avais déjà un peu travaillé dessus : http://www.vbfrance.com/codes/CLASSE-GESTION-REGISTRE-LIRE-ECRIRE-SUPPRIMER-LISTER_40954.aspx


Pour le For Each, l'implémentation est très simple, et on n'est pas obligé de l'utiliser. Donc çà peut être bien de rajouter cette fonctionnalité si l'user désire l'utiliser. Et même si c'est plus lent (ce qui doit effectivement être le cas), tant pis, à l'user de choisir la méthode traditionnelle ;)


@+

Re : Classes sur les fichiers/dossiers/disques par sebdraluorg le 21/04/2007 à 13:18:35
sebdraluorg
sebdraluorg

Administrateur

Inscrit le 12/11/2006
6 Message(s)

Eh ah vi si on garde le chois et qu'on est pas obliger de l'utiliser je signe tout suite ;)


Pour la bdr j'avais deja commencé la classe au fait mais bon on peut mettre nos classe en commun


Comme tu peux voir ici: http://www.vbfrance.com/codes/GESTION-BASE-REGISTRE-PRESQUE-COMPLETE_34202.aspx j'ai aussi beaucoup jouer avec la bdr ^^


(mais regarde pas le code l'est pas propre dutout! lol)


++

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 13:22:29
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Pas de pb, si tu as déjà commencé, continue ;)


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 15:05:22
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Pour le shéma global, c'est vrai il faudrait définir clairement les objets.

Que pensez-vous de :

- Process
- Processes
- Window
- Windows
- Module
- Modules
- Thread
- Threads
- File
- Files
- Folder
- Folders
- Drive
- Drives
- PhysicalDisk
- PhysicalDisks

On pourra également ajouter :
- Processor
- Processors
et également interfaces réseaux, écrans, plein de périphériques (au fil du temps) à discuter


Et au niveau fonctions :
- clsProcesses
...

ou alors
- libProcesses
....

ou alors une autre notation, si vous avez des idées



C'est quoi FileSystem que tu proposais violent_ken ? Juste une classe contenant des fonctions ou un objet ?


Ah et on pourra aussi à terme (dans le futur) faire des objets pour le registre (objet Registre, RegistreKey etc...)



Pour le for each, comme disait seb "Eh ah vi si on garde le chois et qu'on est pas obliger de l'utiliser je signe tout suite ;)" completement d'accord ;)

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 15:12:25
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

FileSystem est le nom d'une classe contenant les fonctions sur les objets File/Files...etc. C'est l'équivalent de FileSystemObject de Scripting de Microsoft. Je l'ai nommé comme çà dans la dll pour coller au mieux à FSO, mais on peut bien sur changer de nom pour la vbSystemLibrary.


Au niveau des fonctions, moi j'ai l'habitude d'utiliser clsProcesses comme nom de classe de fonctions, et cProcesses comme nom de variable de type clsProcesses. Donc perso, je préfère çà que LibProcesses, mais à vous de voir ;)


Pour le For Each, le tuto de l'excellent ShareVB permet d'ajouter à l'user la possiblité de faire du For Each, mais on peut bien sur faire comme si cette possibilité n'existait pas et utiliser For x=1 to collection.count...etc ou toute autre méthode ^^


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 15:17:26
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Pour le FileSystem effectivement ça serai mieux de l'appeler comme le reste des classes contenant des fonctions : clsFiles ou autre
Et perso je préfère aussi clsProcesses à libProcesses

Pour le for each effectivement ça peut etre pas mal

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 15:37:39
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Oui, faudra changer de nom, mais peut être pas clsFiles (car aussi gestion des dossiers et des disques logiques/physiques)


Pour info, j'ai fini les classes File,Files,Folder,Folders,FileSystem,PhysicalDisks et Drives donc il me reste plus que PhysicalDisk et Drive ^^  puis tester tout çà !


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 15:46:36
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Ok c'est cool ^^

Je pense mettre à jour le site dans l'aprem, il y'aura peut etre la page pour le processviewer.

pour clsFiles ok effectivement j'avais pas pensé que ça regrouperait plein de fonctions. Mais c'est pas un peu suicidaire de regrouper tant de fonctions dans 1 seule classe lol ? (y'en aura énormément) Pourquoi on ferait pas une classe de fonction par objet à peu près ?
Sinon effectiement FileSystem = Système de fichier ça peut le faire. Perso ça me plait, par contre il faudra l'appeler clsFileSystem je pense, histoire de rester cohérent avec le reste.

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 15:51:35
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Re, je pense avoir terminé cette classe, elle fait 1900 lignes. Donc c'est pas tant énorme que çà ^^ Il y a 59 fonctions dans cette classe, et 2 propriétés.


Et effectivement, clsFileSystem pourra être pas mal.


(PS : je fait des sauts de ligne énormes, çà doit être un léger bug avec IE7^^)

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 16:00:36
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

mdr 1900 lignes

ben je suis partant perso pour cette classe

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 16:05:30
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Bah, il y a déjà 350 lignes de déclarations, donc plus que 1550 de code^^


J'ai vu bien pire : un module de ShareVB qui faisait plus de 3500 lignes il me semble ;)


 


Par contre, il faudra probablement renommer les fonctions et changer la mise en forme des commentaires pour l'ajuster à la library, exemple de commentaire :








'=======================================================
'Renvoie true si le path est un drive
'=======================================================
Public Function IsRoot(ByVal Path As String) As Boolean
   IsRoot = CBool(PathIsRoot(Path))
End Function



'=======================================================
'Renomme le fichier/dossier
'=======================================================
Public Function Rename(ByVal Path As String, ByVal NewName As String) As Long
   Rename = MoveFileAPI(Path, NewName)
End Function
By Renfield


Il faudra mettre des








'---------------------------------------------------------------------------------------
' Procedure : GetIconFromHandle
' DateTime  : 07/02/2007 15:24
' Author    : Vb System Library
' Purpose   : Convertit un pointeur vers un icone en IPictureDisp utilisable dans VB
' Params    : hIcon : handle de l'icone à convertir
'---------------------------------------------------------------------------------------
By Renfield


en en tête de chaque fonction (pas eu le temps de le faire encore)


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 21/04/2007 à 16:09:20
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

lol tu m'étonne que ta pas encore eu le temps de le faire ^^

Ouais à la limite je pense pas que ça soit si grave si les commentaires sont (pour l'instant) comme ça, après avec le temps on peu les changer.

(au fait pour les sauts de ligne oui ça doit venir d'IE, mais la je ne sais pas trop comment faire)

Je te tiens au courant pour mettre à jour la librairie, je suis en train d'essayer de faire un petit installeur, et j'ai fait un readme, donc il faudrait prendre ce fichiers pour faire une nouvelle version (la 1.4 je pense, vu le gros progrès qu'on aura faire)

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 18:11:24
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Re, voilà mes classes terminées...


Note : je ne les ai PAS TESTEES en plein, et il se pourrait qu'il faille remanier la structure des objets (histoire du type privé dans chaque objet, et méthode de refresh des infos de chaque objet)


Quoiqu'il en soit, téléchargeable ici (Madm@tt, c'est la version que je viens de t'envoyer).


http://www.megaupload.com/?d=DJ8CUU23


@+

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 21/04/2007 à 21:15:47
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Ouch ! Je viens de faire quelques tests, pas mal de bugs résolus !


Par contre gros problèmes d'optimisation encore (surtout au niveau de la classe Drive)


@+

Re : Classes sur les fichiers/dossiers/disques par violent_ken le 27/04/2007 à 21:58:27
violent_ken
violent_ken

Administrateur

Inscrit le 02/11/2006
30 Message(s)

Salut à tous, les classes sur les fichiers sont terminées depuis quelques jours, et il y a de moins en moins de bugs.


Toutes les fonctions ont été testées, et de nouvelles ont été ajoutées. Je me suis laissé convaincre d'inclure des trucs genre comparaison de fichiers, sanitization, découpe de fichiers, recherche...etc. Donc pas forcément en rapport avec la Library...


La classe principale fait 4500 lignes à elle seule, la dll compilée 240Ko. Par conséquent il faudra peut être faire le ménage dans certaines fonctions ! Enfin voilà, on pourra bientôt inclure des morceaux dans la Library ^^


@+

Re : Classes sur les fichiers/dossiers/disques par MadMatt le 28/04/2007 à 02:26:43
MadMatt
MadMatt

Administrateur

Inscrit le 11/10/2006
29 Message(s)

Salut,

Vraiment très interessant, je suis l'évolution de la source sur vbfrance jour après jour effectivement ça a l'air de pas etre de la petite source, faire mieux que FSO respect quoi ! ;)

De mon coté j'essayerai de regarder pendant ce week end de 4 jours pour modifier les noms des classes (ListProcesses -> Processes) et ajouter des propriétés à celles qui existent si j'ai le temps.

@+


Ajouter une réponse

Vous devez vous connecter ou vous inscrire pour pouvoir répondre.

S'incrire


 

Valid HTML 4.01 Transitional Valid CSS

Site web de Vb System Library version 1.3
Developpement et design réalisé par : Matthieu Napoli (MadMatt)
© 2007 Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
Temps d'execution de la page : 0.188 s
www.mnapoli.fr