Jeg prøver at oprette en node i en TXMLDocument, men den kommer med en access violation.
Min kode ser sådan ud
procedure Tmainform.AddMailToFile(IdMessage: TIdMessage; Folder: String; Read: Boolean; altName: String; Name: String; FileList: TStringList; FileNameList: TStringList; Body: TStringList);
var
Node, HeaderNode, CDATA: IXMLNode;
i: Integer;
begin
// Gem IdMessage til messages.xml
try
// Create nodes
Node := XMLMessages.CreateNode('message', ntElement);
Node.AddChild('from');
Node.ChildNodes.Nodes[0].AddChild('name');
Node.ChildNodes.Nodes[0].AddChild('email');
Node.AddChild('to');
Node.ChildNodes.Nodes[1].AddChild('altName');
Node.ChildNodes.Nodes[1].AddChild('name');
Node.AddChild('subject');
Node.AddChild('date');
Node.AddChild('cc');
Node.AddChild('read');
Node.AddChild('files');
Node.AddChild('headers');
Node.AddChild('content');
Node.ChildNodes.Nodes[7].AddChild('mime');
Node.AddChild('folder');
// Add data
Node.ChildNodes.Nodes[0].ChildNodes.Nodes[0].Text := IdMessage.From.Name;
Node.ChildNodes.Nodes[0].ChildNodes.Nodes[1].Text := IdMessage.From.Address;
Node.ChildNodes.Nodes[1].ChildNodes.Nodes[0].Text := altName;
Node.ChildNodes.Nodes[1].ChildNodes.Nodes[1].Text := Name;
Node.ChildNodes.Nodes[2].Text := IdMessage.Subject;
Node.ChildNodes.Nodes[3].Text := DateTimeToStr(IdMessage.Date);
if IdMessage.CCList.Count > 0 then
begin
for i := 0 to IdMessage.CCList.Count -1 do
begin
Node.ChildNodes.Nodes[4].AddChild('item');
Node.ChildNodes.Nodes[Node.ChildNodes.Nodes[4].ChildNodes.Count].AddChild('name');
Node.ChildNodes.Nodes[Node.ChildNodes.Nodes[4].ChildNodes.Count].AddChild('email');
Node.ChildNodes.Nodes[Node.ChildNodes.Nodes[4].ChildNodes.Count].ChildNodes.Nodes[0].Text := IdMessage.CCList.Items[i].Name;
Node.ChildNodes.Nodes[Node.ChildNodes.Nodes[4].ChildNodes.Count].ChildNodes.Nodes[1].Text := IdMessage.CCList.Items[i].Address;
end;
end;
Node.ChildNodes.Nodes[5].Text := AnsiLowerCase(BoolToStr(Read));
if (FileList.Count <> 0) and (FileNameList.Count <> 0) then
begin
// X filer
for i := 0 to FileList.Count -1 do
begin
Node.ChildNodes.Nodes[6].AddChild('file');
Node.ChildNodes.Nodes[6].ChildNodes.Nodes[Node.ChildNodes.Nodes[6].ChildNodes.Count].AddChild('filename');
Node.ChildNodes.Nodes[6].ChildNodes.Nodes[Node.ChildNodes.Nodes[6].ChildNodes.Count].AddChild('source');
Node.ChildNodes.Nodes[6].ChildNodes.Nodes[Node.ChildNodes.Nodes[6].ChildNodes.Count].ChildNodes.Nodes[0].Text := FileNameList.Strings[i];
Node.ChildNodes.Nodes[6].ChildNodes.Nodes[Node.ChildNodes.Nodes[6].ChildNodes.Count].ChildNodes.Nodes[1].Text := FileNameList.Strings[i];
end;
end
else
begin
// ingen filer
end;
if IdMessage.Headers.Count <> 0 then
begin
for i := 0 to IdMessage.Headers.Count -1 do
begin
HeaderNode := XMLMessages.CreateNode('header');
HeaderNode.Text := IdMessage.Headers.Strings[i];
Node.ChildNodes.Nodes[7].ChildNodes.Add(HeaderNode);
end;
end;
Node.ChildNodes.Nodes[8].AddChild('mime');
CDATA := XMLMessages.CreateNode('', ntCData);
Node.ChildNodes.Nodes[8].ChildNodes.Add(CDATA);
Node.ChildNodes.Nodes[9].Text := Folder;
// Add to XML tree
XMLMessages.ChildNodes.Nodes[1].ChildNodes.Add(Node);
XMLMessages.SaveToFile;
except
ShowError('Kunne ikke tilføje mail.');
end;
Hilsen Mark Jensen
DNA er naturens array