Dans mon projet, je désire transférer un ensemble de fichier différents dans un seul fichier pour rendre celui-ci exploitable sur n'importe quel machine sans devoir aller chercher un wav là-bas, une vidéo ici, une musique là!

Lors de la lecture de ce fichier, il doit replacer ceux-ci dans un répertoire temporaire pendant l'exécution du projet:

exemple :

vidéo dans d:\simulateur\vidéo\coucou.wmv
musique dans g:\musique\elco\track12.wav
effet sonore dans c:\effets\explode.wav
image dans [CD-ROM]:\armes\cible.jpg
....

devient:

mon_projet.cts

lors de l'ouverture de celui-ci, le programme crèe un repertoire temporaire qui va contenir:
coucou.wmv
track12.wav
explode.wav
cible.jpg
....

J'essaie d'utiliser les TFileStream, ca va bien pour écrire les fichiers les uns à la suite des autres avec

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ficdest.SaveToStream(ficorg)

Mais comment les relire, dès que j'utilise un LoadFromStream, il charge tout d'un seul coup, ce qui est son fonctionnement par défaut!

Existe-t-il une fonction de type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
FileToFileStream(OrigFile:string; DestStream:TFileStream);
begin
   // écrire le nom du fichier dans le stream
  // écrire la taille du fichier dans le stream
  // écrire le fichier dans le stream
end;
 
 
FileStreamToFile(OrigStream);
begin
   // récupérer le nom du fichier dans le stream
  // récupérer la taille du fichier dans le stream
  // extraire le fichier pour le copier sur le disque
end;
Les étapes taille et nom ne me pose pas de problème, dois-je utiliser un TMemoryStream ou un tampon?

Merci pour les pistes car comment récupère-t-on la taille du fichier charger dans un TMemoryStream?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    Seek(0,soFromEnd);
Comment dire à un TMemoryStream qu'il ne doit charger qu'une partie d'un autre Stream et pas l'entièreté?

Je reviens voir demain car le boulot est fini! Merci