trollnumber1
Messages postés12Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention28 avril 2003
-
30 mars 2003 à 22:00
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 2005
-
1 avril 2003 à 12:34
Troll 8-)
Je veux Enregistrer toutes mes Timages d'un fiche dans un fichier avec les hints et l'emplacement sur la fiche.
Et de pouvoir aller les chercher dans le fichier quand je né besoin.
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 20051 1 avril 2003 à 12:34
Tu fais une boucle avec Components[i] et ComponentCount, en vérifiant si le composant i est une image ou pas... Tu utilise SaveToFile de ton Timage si c'en est une, et pis voilà !
[Citation de la réponse que je t'avais déjà faite... Il faut continuer sur la même chaine de messages !]
Bon... Vu les infos que tu veux sauvegarder, le principe est là pour repérer les TImage, mais à l'enregistrement, c'est différent...
Je pense que "le mieux" (ce n'est peut-être pas le mieux, mais c'est la meilleure idée qui me vient à l'esprit !) est de faire comme suis :
Tu crées un record du genre
type
TinfImage = Packed Record
hint: String[255]; //il faut que la taille soit bien définie !
Left: Integer;
Top: Integer;
Taille: Integer; //Pour stocker la taille des données de l'image
end;
Avant l'enregistrement, tu ouvres ton fichier de sauvegarde avec un TFileStream...
Ensuite, dans la boucle dont je t'ai parlé auparavant, tu fais ainsi :
1-Tu crées un TMemoryStream dans lequel tu enregistres l'image "i" avec sa méthode SaveToStream...
2-Avec une variable de type TinfImage (déclarée, bien sûr !!) tu enregistres les infos de l'image... Hint, Position (X,Y) et la taille, que tu obtiens avec ton MemoryStream (propriété size !)...
3-Tu sauvegardes ces infos : FileStream.Write(infImage)
4-Tu sauvegardes ensuite l'image... Utilises pour cela la méthode la plus rapide, c'est à dire FileStream.CopyFrom(MemoryStream, 0);
5-Tu libères le MemoryStream...
6-Ta boucle est finie, elle devra recommencer pour chaque Timage...
7-Après ta boucle, il faut stocker à la fin du fichier le nombre d'images enregistrées... Un integer voire même un byte devrait suffire !
8-Tu libères ton FileStream
Voilà pour l'enregistrement !
Pour la lecture, il faut également faire un boucle, en ouvrant ton fichier de sauvegarde... Tu te rends à la fin de celui-ci et tu récupères le nombre d'itérations à effectuer par la boucle (qui correspond donc au nombre d'images enregistrées !).
Après, tu lis à chaque fois une entête infImage, qui te permet de créer un Timage, de la placer et de le remplir, en lisant Taille octets derrière l'entête...
Voilà voilà !!
Si tu as besoin de plus de précisions, n'hésiet pas à demander au cas où je n'ai pas été assez clair !