Delphi中动态调用TXMLDocument的经历

var
  vXMLDocument: TXMLDocument;
begin
  vXMLDocument := TXMLDocument.Create(‘c:/temp/temp.xml‘);
  Caption := IntToStr(vXMLDocument.Node.ChildNodes.Count);
  vXMLDocument.Free;
end;

执行上面的代码跳出"Invalid pointer operation"异常

发现屏蔽vXMLDocument.Free;又正常了

跟踪内核代码vXMLDocument被释放了两次搞不清楚原因

没办法只好到处搜代码

然后在窗体上直接放置一个TXMLDocument控件

这段代码又不出错了

郁闷,唯一的区别就是放置的控件赋值了Owner,直接TXMLDocument.Create(‘c:/temp/temp.xml‘);没有赋值Owner

好吧,先解决问题

var
  vXMLDocument: TXMLDocument;
begin
  vXMLDocument := TXMLDocument.Create(Self);
  vXMLDocument.FileName := ‘c:/temp/temp.xml‘;
  vXMLDocument.Active := True;
  Caption := IntToStr(vXMLDocument.Node.ChildNodes.Count);
  vXMLDocument.Free;
end;
看来正是这样,但这都是根据经验比较出来的

VCL内核怎么处理还有待分析

http://blog.csdn.net/zswang/article/details/1610404

时间: 2024-10-21 16:27:01

Delphi中动态调用TXMLDocument的经历的相关文章

Delphi Dll 动态调用例子(3)-仔细看一下

http://blog.163.com/bxf_0011/blog/static/35420330200952075114318/ Delphi 动态链接库的动态和静态调用 为了让人能快速的理解 静态调用.动态调用,现在做一个函数封装在一个DLL中,然后在APPLICATION form里面调用这个函数,这个函数处理两个数的和.用代码和图片说话:代码如下 library Project1; { Important note about DLL memory management: ShareMe

# 中静态调用C++dll 和C# 中动态调用C++dll

C# 中静态调用C++dll 和C# 中动态调用C++dll 在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译.这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下: 一. C# 中静态调用C++动态链接 1. 建立VC工程CppDemo,建立的时候选择Win32 Console(dll),选择Dl

在C#环境中动态调用IronPython脚本(一)

本文讲述用C#调用Ironpython运行环境,解析并运行动态pyhton脚本.这种情况应用在那些需要滞后规定行为的场合,例如,动态计算项(计算引擎),用户可以自定义计算内容.计算公式等. 本文的代码适用于IronPython 2.7(需要下载及安装)及C#4.0,由于IronPython早期版本提供的Hosting API不同,对于网上搜索得到的代码,如果是早期版本代码(多数如此),并不能编译通过,所以本文强调代码的版本问题. 本文代码需要引用两个命名空间IronPython和Microsof

C# 中静态调用C++dll 和C# 中动态调用C++dll

C# 中静态调用C++dll 和C# 中动态调用C++dll 在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译.这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下: 一. C# 中静态调用C++动态链接 1. 建立VC工程CppDemo,建立的时候选择Win32 Console(dll),选择Dl

在Delphi中静态调用DLL 引用外部Dll External Dll 导入Dll

  调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton;

Delphi Dll 动态调用例子(2)

http://zhidao.baidu.com/question/157196792.html delphi动态调用DLL 写了个1.dll内容如下 library Project2; uses SysUtils, Classes; {$R *.res} function abc(x,y:Integer):Integer;stdcall; begin Result:=x+y; end; exports abc; end. 如何动态调用它呢. 比如想实现Edit3.Text:=IntToStr(a

Delphi函数动态调用实现免杀

Delphi 源码免杀之函数动态调用实现免杀的下载者自己编译这份代码看看过N多杀软没什么技术含量只是发出来给不懂的人入入门也防止有新人老是来问 ShellApi,URLMon 单元 //Delphi动态调用API函数 procedure TForm1.Button1Click(Sender: TObject); var SourceFile:ansistring; DestFile :ansistring; down2:function(Caller: IUnknown; URL: PChar;

C# 中动态调用C++动态链接

之前的文章中讲述过从DLL中导出变量,其中包括了静态加载和动态加载. C#调用C++动态链接库同样分为静态加载和动态加载. fellen的博客"WPF中使用MFC动态链接库(dll)函数"中讲述的是如何C#静态加载DLL,即需要将C++代码编译生成的Dll放在C#程序的Bin目录下,并在引入函数的位置加入[DllImport("xxx.dll")] . 由于Dll路径的限制,使用的不是很方便,C#中我们经常通过配置动态的调用托管Dll,例如常用的一些设计模式:Abs

Struts2中动态调用action中的方法失败的问题

解决方法: 在Struts.xml中添加该配置: <!-- 该配置设置为true可以调用动态方法 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" />