Bonjour,
Je rencontre un petit problème au niveau de l'initialisation d'un tableau dynamique.
j'ai la structure suivante :
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 type TPopMail = record Subject , From : String; CCList : Array of String; Body : String; Attachment : Array of record FileName : String; Stream : TMemoryStream; 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
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;
Et je suis certain que la partie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MonPop.Attachment[High(MonPop.Attachment)].FileName := TIdAttachment(IdMsg.MessageParts.Items[i]).FileName;
fonctionne car je l'utilise dans un autre morceau de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TIdAttachment(IdMsg.MessageParts.Items[i]).FileName;
Merci (à l'avance) pour ceux qui m'aideront ^^
Partager