имеется список имен xml-файлов одинаковой структуры. Нужно на начальном этапе сформировать список записей типа IXMLNode взяв из каждого из xml-фалов списка по определенному ноду (IXMLNode). Сделал небольшие наброски, но чет не работает, валяться AccessViolation'ы. Помогите разобраться.
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XMLIntf, XMLDoc;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
PIXMLNode = ^IXMLNode;
TIntfs = class(TList) private function Get(Idx: Integer): PIXMLNode; protected procedure Notify(Ptr: Pointer; Act: TListNotification); override; public function Add(xml_node: PIXMLNode): Integer; { } property Intfs[Idx: Integer]: PIXMLNode read Get; default; end;
var Form1: TForm1;
implementation
{$R *.dfm}
{ TIntfs }
function TIntfs.Add(xml_node: PIXMLNode): Integer; begin Result := inherited Add(xml_node); end;
function TIntfs.Get(Idx: Integer): PIXMLNode; begin Result := PIXMLNode(inherited Get(Idx)); end;
procedure TIntfs.Notify(Ptr: Pointer; Act: TListNotification); begin {if Act = lnDeleted then Dispose(PIXMLNode(Ptr));} inherited; end;
procedure TForm1.FormCreate(Sender: TObject); var Intfs: TIntfs; xml_intf: IXMLDocument; node: IXMLNode; begin xml_intf := TXMLDocument.Create(nil); xml_intf.LoadFromFile('C:\Documents and Settings\Admin\Рабочий стол\Test.xml'); node := xml_intf.DocumentElement; ShowMessage(node.NodeName); Intfs := TIntfs.Create; Intfs.Add(PIXMLNode(node)); ShowMessage(Intfs[0]^.NodeName); Intfs.Free; end;
|
|