Har följande kod: Problemet är variabel-deklareringenXML-parsing
procedure TForm1.exportDay;
var
XMLDoc : TXMLDocument;
iTop, iYear, iMonth, iDay : IXMLNode;
wYear, wMonth, wDay : Word;
sYear, sMonth, sDay : String;
StartItemNode : IXMLNode;
ANode : IXMLNode;
STitle, sDesc, sLink : WideString;
begin
//Dela upp dagens datum
DecodeDate(Now, wYear, wMonth, wDay);
//Gör om det till användbara strängar
sYear := 'year' +IntToStr(wYear);
sMonth := 'month' + IntToStr(wMonth);
sDay := 'day' + IntToStr(wDay);
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.FileName := dsDaysFile;
XMLDoc.Active:=True;
If FileExists(dsDaysFile) then
begin
XMLDoc.LoadFromFile();
iTop := XMLDoc.ChildNodes[0];
end
else
begin
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.Active := True;
iTop := XMLDoc.AddChild('workdays');
end;
/////////////////////////////////////////////////////////////////////////////
// kolla om det finns barn = år, om inte, lägg till
If iTop.HasChildNodes then
begin
iYear := iTop.GetChildNodes.FindNode(sYear);
Här får jag:
'Access violation at address 00000000. Read of address 00000000' men varför och hur komemr jag förbi det?
iTop har barn men jag kommer inte åt dem???
-------------------------------------------------------------------------
Jo, jag kom på det, jag måste göra såhär:
XMLDoc := TXMLDocument.Create(Form1);Sv: XML-parsing
XMLDoc : TXMLDocument;
Detta fungerar bara om Owner ärver från en TComponent för då slås interfacets referens-räkning av.
Det korrekta är att deklarera variablen som ett interface
XMLDoc : IXmlDocument;
vilket ser till att referensräkningen på TXMLDocument objektet fungerar även när owner är nil.
/Per-Erik