Bonjour,

J'utilise un TFileStream pour lire dans un fichier et la propriété size me donne la bonne taille de fichier. J'initialise la position du curseur de lecture au début du fichier.

Et pourtant, je n'arrive pas à le lire.

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
16
17
18
19
20
21
22
23
24
25
TFileStream *Fichier;
try {
    Fichier = new TFileStream(OpenDialog1->FileName, fmOpenRead || fmShareDenyWrite);
    Label1->Caption = IntToStr(Fichier->Size);
    }
catch ( ... )
      {
      Sysutils::Beep();
      MessageDlg("Impossible d'ouvrir le fichier. Action annulée.", mtError, TMsgDlgButtons() << mbOK, 0);
      TCPC1->Disconnect();
      Button2->Enabled = true;
      Button3->Enabled = false;
      delete Fichier;
      return;
      }
TMemoryStream *Buffer = new TMemoryStream();
void *BufferTemp;
 
Buffer->Clear();
Label4->Caption = IntToStr(I);
Fichier->Seek(0, soFromBeginning);
OctetTransferes = Fichier->Read(BufferTemp, 512 * 1024);
Label3->Caption = IntToStr(OctetTransferes);
Buffer->Read(BufferTemp, OctetTransferes);
Label2->Caption = IntToStr(Buffer->Size);
Les label ne sont la qe pour m'indiquer les valeurs à chaque étape et le buffer temp a été ajouter pour vérifier si le problème ne venait pas du memorystream.

Donc, la taille du fichier est toujours bonne (inférieur à 512ko) mais OctetTransferes est toujours égal à 0.

Une idée pour résoudre ce problème simplement et puis-je directement mettre Buffer à la place de BufferTemp pour la lecture du fichier?

Merci.