CREER UN TYPE DE FICHIER ET LA GESTION QUI EN DECOULLE.

florenth - 13 mars 2006 à 19:39
jackalunion Messages postés 128 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 14 juillet 2008 - 25 juin 2008 à 04:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36520-creer-un-type-de-fichier-et-la-gestion-qui-en-decoulle

jackalunion Messages postés 128 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 14 juillet 2008
25 juin 2008 à 04:01
Je suis loin de ce domaine mais j'ai compris tout de même l'utilitè
Ben, pour apprendre sans aller aux toilettes, ya Internet !
allez, je vais être gentil et te refiler un lien : http://fbeaulieu.developpez.com/guide/14-objets-2.html#tdm14-4
ya que du bon, tu verras. Tu en as pour un moment d'éplucher tout ça.

"de temps en temps des sources plus difficile serait bienvenue" : j'en ai si tu veix, mais ça à l'air d'intéresser personne. C'est pour ça que je ne les mets pas. Regarde mon TStringParser. Dés qu'on parle de classe ou qu'on sort du bouton-radiobox, ya tout de suite moins de monde ...

Mais si tu as besoin de quelque chose de plus complexe, c'est avec plaisir que je concoterai une source. Je n'oublie pas qu'apprendre passe aussi par l'aide des autres. Poste sur le forum ou envoye moi un MP.

Je te laisse avec ton téra-octet mais as-tu au moins un lecteur pour faire les tests ? (et la patience qui va avec evidemment...)
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
15 mars 2006 à 07:42
oui je suis trés actif sur le site ... j'ai que ça a faire en ce moment...

pour ce qui est de ton niveau, justement, je trouve que le niveau general manque de peche et que de temps en temps des sources plus difficile serait bienvenue, au moins pour ceux qui ont un niveau elevé.

pour les methode abstraite mon probleme est que je ne trouve pas d'exemple simple dans l'aide delphi, heureusement, j'ai la reference en 7Kilo (volume pardon) de Delphi ... j'y trouverais surrement quelque chose ... mais c'est long a lire et je ne peu pas aller au toillette toute les heure (lol)

la actuellement je bosse sur une unite qui s'appele actuellement FileIO, qui contient des fonctions un peu plus elaborée que celle de base (sysutils, windows) et deux classes d'information TFileInfos et TDriveInfos, et une petite originalitée, le support des TeraOctet.
ben ouai, on aurat du mal a faire tenir dans un integer la taille en octet d'un disque de 1To.
donc ... fortement Int64 (meme si a 1To on se fout un peu des Mo et des Ko)

donc pour l'instant ... je buche buche bosse bosse la dessus.
Ah bon, ton post me rassure.
C'est vrai que tu étais dans des conditions de réalisation ... extrèmes !
(parenthèse: les developpeurs ont un pression intense de la part de leurs supérieurs mais doivent quand même réflechir à ces concepts: mais enfin, c'est LEUR boulot lol)

procedure ReadFile(const filename : string; Datas);
=> je ne pense pas que ce soit une bonne idée. Regarde (et aprends !) la fonction et l'utilisation des classes abstraites. Si tu as tout compris, tu verras qu'il y a moyen de faire des méthodes abstraites de lectures et d'écriture que les classes dérivées surchargeront en fonciton de leurs besoins.
Et même, pour aller plus loin, tu peux t'imaginer une méthode virtuelle mais là, le raisonnement est quelque peu différent.

Je suis content de t'avoir enseigné quelque chose mais saches que moi aussi je suis autodidacte (je programme par passion) et que ce forum et ses membres m'ont beaucoup aidé.

"au temps ou j'elaborais cette unité" : il est vrai que je suis légèremnt absent ces derniers temps mais c'est entièrement de ma volonté. En effet, je pense avoir atteint un niveau de programmation supérieur à la moyenne de ceux qui viennent sur DelphiFr (sauf toi que je considère comme tel, delphiprog, juliodelphi, forman, ... et tous les autres que tout le monde connait), c'est pourquoi je pense que répondre aux questions du forum et/ou poster des sources complexes ne me servirait à rien et ne servirait pas ou peu aux autres.
Mais peut-être que je me trompe ...

en parlant de ça, saches que tu viens de me doubler au classement général des membres et que je te vois souvent en heut du top de la semaine ^^ Respect.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 mars 2006 à 00:41
aaah! une remarque constructive comme je les aimes.

oui florenth, pas de classer pour cette API, mais il faut bien comprendre l'etat d'esprit dans lequels je l'ai fait :

1) brut de fonte.
2) introduction a la creation d'une gestion simple de fichier.

a savoir qu'une fois le code ecrit, debugé et testé, on peu maintenant ecrire une belle classe pour gerrer cela.
le probleme est que de part son status special, une classe est plus difficile a elaborer et demande plus de temps pour cette elaboration.

le fait etant que ce code est une reponse a un probleme poster sur le forum, je n'avais qu'un temps limité pour elaborer le premier jets fonctionnel.

Maintenant, on vas effectivement pouvoir passer a l'etape superieure, ecrire une belle classe avec la possibilitée de créer ses propres types de fichiers, un peu comme la classe TGraphic que l'on derive pour les TBitmap, TIcon, TCursor(?), TJpegImage ect...
(a ce propos, nombreuses API graphique oublis trop souvent de deriver TGraphic pour créer de nouveaux format d'image ... dommage)

en fait, j'y ai meme penser, pas d'ecrire une classe, mais de rendre justement le code compatible avec de nouveaux formats non definit au depart.
en fait j'ai remarquer cela en ecrivant les methodes de lecture/ecriture du fichier.

mais je me demande si il serait correct d'ecrire ce genre de code :

procedure ReadFile(const filename : string; Datas);
procedure WriteFile(const filename : string; Datas);

en ne typant pas Datas (qui est logiquement un tableau dynamique).
bizarement et pour le moment je ne vois pas trop comment ecrire cela ... il faudrait que je me penche plus serieusement sur ce probleme (regarder les divers code de classe comme la TStrings ou TStringlist).

Et je tiens a rappeler quand meme que mes "techniques" ou mes modestes competences sont bourrée de lacunes (auto-didacte oblige) et que le concept de classe abstraite m'echape quelque peu.
je pense qu'il est grand temps que je m'interroge sur cette chose ...
la soif de connaissances est la seule chose pour laquelle le cerveau humain est ce qu'il est.

mais je suis d'accord, une petite classe ne ferait pas de mal.
donc, je prend note de ta judicieuse et bien trouvée remarque, il n'en fallait pas plus pour me motiver. comme a l'epoque de l'unité RomanUtils je retrouve mon fidel compagnon^ ...

tu sais quand meme que tu m'a apris indirectement beaucoup de choses au temps ou j'elaborais cette unité ?!
Hum ...
Et ben ?
Non ?

Tu n'as pas pensé aux classes ?

Après tout ton unité ExtendColor, tu ne t'es tpujours pas rendu compte que les classes sont plus simples d'emploi et offrent un meilleur entretien, et une meilleure réutilisabitilé du code ?

Mais où est passé ton cours sur la POO ?

Je pousse ce petit cri pour te rapeler l'existence du mot réservé "class" (lol) et j'espère que cela t'aidera à refléchir plutôt deux fois qu'une sur la structure et l'organisation de tes données avant de te lancer de plein pied dans du code.

Oui, mais tu me diras: "mais les autres, ils ne font pas de classes et tu ne leur crie pas dessus"
Je répondrais alors "oui mais non".
Les autres, c'est les autres. Toi, tu te démarques des autres par ta connaissance des techniques de pragrammation performantes telles que les classes, etc ... c'est pour cela que je te le dis à toi et pas à un autre.

Dans ton cas, une classe abstraite qui gère le général et le rébarbatif ainsi qu'une classe par type de fichier me semble un bon choix. A moins que tu ne préfères un TObjectList modifié ...

++ Flo
Rejoignez-nous