begin process at 2010 02 10 13:45:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > ADD2FILE - AJOUTER DES INFOS AUX FICHIERS

ADD2FILE - AJOUTER DES INFOS AUX FICHIERS


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Niveau :Initié Date de création :18/04/2009 Vu / téléchargé :1 264 / 168

Auteur : Bacterius

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonsoir,
pour me rattraper après ma dernière source (vous n'avez pas vu ? tant mieux !), je poste cette source que j'avais l'intention de faire depuis un bon moment. En fait, elle permet d'ajouter à la fin d'un fichier, des données d'une longueur quelconque. Ici, j'ai choisi d'ajouter, pour l'exemple, une chaîne dans le fichier. J'ai fait un type pour limiter la taille de la chaîne à 65535 caractères, mais techniquement c'est illimité. L'unité Add2FileUtils contient les routines pour lire, écrire et supprimer les données ajoutées dans un fichier, et ces dernières utilisent des buffers non typés dont il faut préciser la taille, ce qui permet d'entrer n'importe-quelle donnée dans la routine (enregistrement, nombre, chaîne, ...).
J'inclus 3 exemples, un bitmap, un jpeg, et un fichier texte dans lesquels sont ajoutées des données que vous pourrez visualiser facilement avec l'exemple. Cela n'altère pas les fichiers pour une raison que vous trouverez dans l'exemple également (cherchez un peu ...).
Donc voilà, alors :
  * utilisation des API de bas-niveau comme OpenFle, ReadFile, WriteFile, SetFilePointer, ... sans passer par le TFileStream (je préfère, bizarrement, passer par les API que par TFileStream ... ???).
  * c'est tout je pense, rien de bien compliqué ...

Ne mettez PAS de "string" dans les buffer, car ce sont des pointeurs et non pas des variables, et puis vous vous doutez bien que j'aurais fait ça sans passer par le TLargeString si c'était possible :)

Ceci peut toujours servir pour incruster du texte dans n'importe-quel fichier ? (ne confondez pas cette source avec la technique d'incruster du texte dans les bytes non utilisés des fichiers bitmap !).

Je n'ai pas trouvé de bug (sauf au début bien sûr huhu) donc voilà, si vous en trouvez faites-moi signe !


 Conclusion

Voilà, tous commentaires, critiques, conseils, remarques, etc ...

Cordialement, Bacterius !

PS : la capture ne sert pas à grand chose mais c'est triste une source sans capture ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture UNITÉ DE SUPPORT VISTA
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION"
Source avec Zip Source avec une capture CONJECTURE DU CARRÉ DES FACTEURS
Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA
Source avec Zip Source avec une capture UTILISER UNE DLL INCLUSE EN RESSOURCES

 Sources de la même categorie

Source avec Zip SAUVEGARDE DE PLUSIEURS DISQUES/PARTITIONS par danfranjo
Source avec Zip Source avec une capture FICLOCK : LOCKEZ LES FICHIERS par JulioDelphi
Source avec Zip Source avec une capture MODIFICATION DES EXTENSIONS DE FICHIERS par JeremyLecouvert
EXPLORATION RÉCURSIVE DE RÉPERTOIRE par JeremyLecouvert
Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP

Commentaires et avis

Commentaire de Bacterius le 18/04/2009 23:47:39

Ah oui codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

Commentaire de Francky23012301 le 19/04/2009 04:32:47

Si si moi je l'ai vu ton source précédent ^^.

Ce qui me permet de te faire une remarque : vu la fréquence à laquelle tu postes (Au moins un source par semaine), je suis pas sur que les objectifs soient toujours atteints.  Enfin bref, si tu arrivais à controler ton besoin de compétition (Cirec, David, Mauricio), ca serait cool pour tout le monde ;) (Perso je commence à trouver cela gonflant ;)).

Pour en venir à ton source : Cette technique qui consiste à injecter des données à un fichier, méritait elle vraiment un source ? Je suis pas sur. C'est ultra connue, et sur CS on trouve plein de projets utilisant une telle technique. Ton source n'apporte sur ce coup, vraiment rien de novateur.

Par contre zappe tes ReadFile et WriteFile, et utilise les streams dont les procédures sont elles optimisées ;).

Ps : Ne prend pas mal mon intervention (Si tu veux en discuter en MP, pas de probleme ;))

Commentaire de PCMF3 le 19/04/2009 11:20:10

Ce n'est pas nouveau de marquer des fichiers avec des informations. On nome cela des métadonnées. Des normes existent à cet effet, si bien sur le besoin est de permettre un échange avec s'autres applications. Les dernières techniques est celle poussée par Adobe avec la norme XMP.
Encapsuler de l'XMP (cela se fait) cela serait une bonne idée. L'XMP étant une structure XML dont les descriptions sont rassemblées dans des espaces de nom déclarés (donc ouvert. L'encapsulation est réalisable directement ou en ADS (NTFS seulement) ou accompagné d'un "side car" mais dans ce cas ce n'est bien sur plus de l'encasulation à proprement parlé.
Voir pour info le lien
http://www.adobe.com/devnet/xmp/

Commentaire de Bacterius le 19/04/2009 12:54:47

Ok Francky, je comprends tout à fait ;) (tu vas vite te dégonfler t'inquiète pas lol)
Mais franchement je trouve que chaque fois que j'ai utilisé un TFileStream les performances étaient très très très médiocres alors que chaque fois que je passe par les API de bas niveau ça va beaucoup plus vite. Enfin merci pour le conseil :)
Et merci pour l'info également PCMF3 :)

Cordialement, Bacterius !

Commentaire de blueperfect le 19/04/2009 15:02:52

Simulation du /A du DOS !

* Pourquoi des fonctions, et pas un TPersistent (un TFileStream) ?

Commentaire de Bacterius le 19/04/2009 15:57:27

Tu veux dire pourquoi je n'ai pas utilisé un TFileStream pour la lecture/écriture (1) ou pourquoi je n'ai pas créé une classe qui enveloppe, justement, un fichier et ses métadonnées (2) ?
(1) : Pour la raison citée au-dessus de ton commentaire. Mais si il s'agit de recoder les TStream ...
(2) : Je n'y ai pas pensé sur le coup

Pour la simulation je savais pas lol.

Cordialement, Bacterius !

Commentaire de blueperfect le 19/04/2009 16:08:05

Médiocre, le TFileStream ? à explorer...

Quand tu passes par les API de bas niveau, il te faut vérifier les locks éventuels...

>> On apprends à tout age ! MsDos, comme CP/M traite les fichiers comme des entrées/sorties :

ainsi :

copy A.TEXT + CON > C.TEXT

se lit comme ajoute les entrées de la console (le clavier) au fichier A.TEXT, et redirige les vers C.TEXT...

Par contre il ne gère pas les recouvrements :

copy A.TEXT + B.TEXT > A.TEXT est incorrect !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales