[Tableau] Initialisation d'un tableau dynamique
Bonjour,
Je rencontre un petit problème au niveau de l'initialisation d'un tableau dynamique.
j'ai la structure suivante :
Code:
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:
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:
1 2
|
MonPop.Attachment[High(MonPop.Attachment)].FileName := TIdAttachment(IdMsg.MessageParts.Items[i]).FileName; |
Et je suis certain que la partie :
Code:
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 ^^