{$R *.res}
exports
BT_ReadXML;
begin
try
CoInitialize(nil);
if DataModule1 = nil then
DataModule1 := TDataModule1.Create(Application); except
end;
end.function BT_ReadXML(sInput:string;var sOutPut:string;var iDataCount:integer):integer;stdcall;
var
i,jj: Integer;
XMLNode, ChildNode, Node1: IXMLNode;
F :TextFile;
sFileName:string;
s,v:string;
ss,vv:string;
begin
Result :=0 ;
jj :=0;
sOutPut:='|';
sFileName:='c:\Input.xml';
try
DeleteFile(sFileName);
except
end;
AssignFile (F, sFileName);
ReWrite(F);
Writeln( F,sInput);
CloseFile(F); DataModule1.XMLDocument1.FileName := sFileName;
DataModule1.XMLDocument1.Active := True;
DataModule1.XMLDocument1.LoadFromFile(DataModule1.XMLDocument1.FileName);
XMLNode := DataModule1.XMLDocument1.DocumentElement.childnodes.First;
while XMLNode <> nil do
begin
//如果子结点的个数大于1,一直向下遍历
while XMLNode.childnodes.Count > 1 do
begin
XMLNode := XMLNode.childnodes.First;
end;
////如果有水平结点,则读取水平结点的值 if XMLNode.AttributeNodes.Count > 0 then
begin
for i := 0 to XMLNode.AttributeNodes.Count - 1 do
begin
Node1 := XMLNode.AttributeNodes.Get(i);
end;
end
else
begin ////如果没有则直接读取结点的值
if XMLNode.Nodevalue <> null then
begin
s :=s+XMLNode.Nodevalue+'|';
end
else
begin
s :=s+'|';
end; end;
ChildNode := XMLNode; ////如果该结点的下一个结点为空,则向上遍历,一次
XMLNode := XMLNode.NextSibling;
if XMLNode=nil then
begin
XMLNode:= ChildNode.ParentNode.NextSibling;
v :=v+'{'+s+'}';
jj:=jj+1;
s:='';
end;
end;
sOutPut :=v;
iDataCount:=jj;
DataModule1.XMLDocument1.Active :=False;end;就这个函数,在动态库里,不退出程序,反复调用几次就出现地址错误,有的时候又能调用好多次,,郁闷,,
大家有什么好办法??????
Access violation at address 004f1e6e............
exports
BT_ReadXML;
begin
try
CoInitialize(nil);
if DataModule1 = nil then
DataModule1 := TDataModule1.Create(Application); except
end;
end.function BT_ReadXML(sInput:string;var sOutPut:string;var iDataCount:integer):integer;stdcall;
var
i,jj: Integer;
XMLNode, ChildNode, Node1: IXMLNode;
F :TextFile;
sFileName:string;
s,v:string;
ss,vv:string;
begin
Result :=0 ;
jj :=0;
sOutPut:='|';
sFileName:='c:\Input.xml';
try
DeleteFile(sFileName);
except
end;
AssignFile (F, sFileName);
ReWrite(F);
Writeln( F,sInput);
CloseFile(F); DataModule1.XMLDocument1.FileName := sFileName;
DataModule1.XMLDocument1.Active := True;
DataModule1.XMLDocument1.LoadFromFile(DataModule1.XMLDocument1.FileName);
XMLNode := DataModule1.XMLDocument1.DocumentElement.childnodes.First;
while XMLNode <> nil do
begin
//如果子结点的个数大于1,一直向下遍历
while XMLNode.childnodes.Count > 1 do
begin
XMLNode := XMLNode.childnodes.First;
end;
////如果有水平结点,则读取水平结点的值 if XMLNode.AttributeNodes.Count > 0 then
begin
for i := 0 to XMLNode.AttributeNodes.Count - 1 do
begin
Node1 := XMLNode.AttributeNodes.Get(i);
end;
end
else
begin ////如果没有则直接读取结点的值
if XMLNode.Nodevalue <> null then
begin
s :=s+XMLNode.Nodevalue+'|';
end
else
begin
s :=s+'|';
end; end;
ChildNode := XMLNode; ////如果该结点的下一个结点为空,则向上遍历,一次
XMLNode := XMLNode.NextSibling;
if XMLNode=nil then
begin
XMLNode:= ChildNode.ParentNode.NextSibling;
v :=v+'{'+s+'}';
jj:=jj+1;
s:='';
end;
end;
sOutPut :=v;
iDataCount:=jj;
DataModule1.XMLDocument1.Active :=False;end;就这个函数,在动态库里,不退出程序,反复调用几次就出现地址错误,有的时候又能调用好多次,,郁闷,,
大家有什么好办法??????
Access violation at address 004f1e6e............
解决方案 »
- tlistview 的一个问题 。。。。。。
- 很急的一个调用oracle存储过程传出参数的问题,请大家帮忙.
- 谁能帮我推荐一个帮助文件的制作工具,谢谢!!!!!!!!
- access数据库,(adotable)怎么三层分布连接?
- 用IdSMTP做的邮件发送程序,, 认证时出错,出现'220 sina.com ESMTP' 是何原因.(jas_liu)
- 用database连局域网数据库没响应的问题
- 请问去哪下载控件组呢
- 非常不爽 散分1!!!
- 谁来帮我解决openpicturedialog的问题?
- 画布问题,高手进来看看……
- 哪里有 IntraWeb 9 的比较详细的文档,想试试。
- 在线等待,fastreport表画法(第一列合并)
可以少很多郁闷,可以多活几年的说,