Bonjour,

Je rencontre un petit problème au niveau de l'initialisation d'un tableau dynamique.

j'ai la structure suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
type
  TPopMail = record
    Subject ,
    From    : String;
    CCList  : Array of String;
    Body    : String;
    Attachment : Array of record
       FileName : String;
       Stream   : TMemoryStream;
    end;
  end;
et voici le code qui permet de remplir la structure

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
var
  IdMsg : TIdMessage;
  i : integer;
  MonPop : TPopMail;
 
begin
  IdMsg := TIdMessage.Create;
  try
    // récupération du mail
    FIDPOP.Retrieve(INbMail,IdMsg);
 
    // récupération du sujet du mail
    MonPop.Subject := IdMsg.Subject;
    // Récupération de l'expéditeur du mail
    MonPop.From    := IdMsg.From.Text;
 
    // récupération de la liste des CC du mail
    SetLength(MonPop.CCList,IdMsg.CCList.Count);
    for i := 0 to IdMsg.CCList.Count -1 do
      MonPop.CCList[i] := IdMsg.CCList.Items[i].Address;
 
    for i := 0 to IdMsg.MessageParts.Count -1 do
    begin
      // récupération du corps du mail
      if IdMsg.MessageParts.Items[i] is TIdText then
        MonPop.Body := TIdText(IdMsg.MessageParts.Items[i]).Body.Text;
      // récupération des pièces jointes
      if IdMsg.MessageParts.Items[i] is TIdAttachment then
      begin
        // Récupère la taille max du tableau et ajoute 1 pour redimensionner
        SetLength(MonPop.Attachment,High(MonPop.Attachment) + 1);
        MonPop.Attachment[High(MonPop.Attachment)].FileName := TIdAttachment(IdMsg.MessageParts.Items[i]).FileName;
        MonPop.Attachment[High(MonPop.Attachment)].Stream := TMemoryStream.Create;
        TIdAttachment(IdMsg.MessageParts.Items[i]).SaveToStream(MonPop.Attachment[High(Result.Attachment)].Stream);
      end;
    end; // for
    Result := MonPop;
  finally
    IdMsg.Free;
  end;
end;
Je rencontre une violantion d'accès sur la ligne suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 MonPop.Attachment[High(MonPop.Attachment)].FileName := TIdAttachment(IdMsg.MessageParts.Items[i]).FileName;
Et je suis certain que la partie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
TIdAttachment(IdMsg.MessageParts.Items[i]).FileName;
fonctionne car je l'utilise dans un autre morceau de code.

Merci (à l'avance) pour ceux qui m'aideront ^^