Copier des données entre des flux

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Utilisation des flux


Lors de la copie de données d’un flux vers un autre, il n’est pas nécessaire de lire puis d’écrire explicitement les données. Vous pouvez utiliser à la place la méthode CopyFrom, telle qu’elle est illustrée dans l’exemple suivant.

Dans l’exemple suivant, un fichier est copié dans un autre à l’aide de flux. L’application comprend deux contrôles d’édition (EdFrom et EdTo) et un bouton Copier le fichier :

 procedure TForm1.CopyFileClick(Sender: TObject);
 var Source, Destination:TStream;
 begin
   Source := TFileStream.Create(edFrom.Text, fmOpenRead or fmShareDenyWrite);
   try
     Destination := TFileStream.Create(edTo.Text, fmOpenCreate or fmShareDenyRead);
     try
       Destination.CopyFrom(Source,Source.Size);
     finally
       Destination.Free;
     end;
  finally
    Source.Free
 end;
void __fastcall TForm1::CopyFileClick(TObject *Sender) {
    TStream* stream1 = TFileStream::Create(From.Text,
        fmOpenRead | fmShareDenyWrite);
    try {
        TStream* stream2->TFileStream::Create
            (To.Text fmOpenCreate | fmShareDenyRead);
        try {
            stream2->CopyFrom(stream1, stream1->Size);
        }
        __finally {
            delete stream2;
        }
    }
    __finally {
        delete stream1;
    }
}

Voir aussi