TFileStream et valeur retournée
Bonjour à tous !
J'essaie de lire un gros fichier par blocs.
N'ayant pas compris le FileMapping, j'essaie plutôt avec des classes trouvées dans C++Builder : TFileStream et TMemoryStream.
J'ai un doute quant au fonctionnement de la méthode CopyFrom qui devrait me permettre
de copier des blocs (60000 bytes dans l'exemple ci-bas). En effet, dès que le dernier bloc est lu et copié vers un TMemoryStream - parceque celui-ci ne mesure pas 60000 bytes - ça provoque un "Stream Read Error" que je ne peux même pas contourner avec un try / catch ?!?!?
Si vous avez des suggestions...
Voir le code source suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
TBytes myBytes;
std::auto_ptr<TFileStream> LFileStream(new TFileStream(fileName.c_str(), fmOpenRead));
std::auto_ptr<TBytesStream> myBytesStream(new TBytesStream(myBytes));
long res=1;
while(res>0) {
try{
res = myBytesStream->CopyFrom(LFileStream.get(), 60000);
}
catch(char *excp){
}
} |