<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_D10.天地弦-生活的点点滴滴是珍贵的</title><subtitle type="text">知识的点点滴滴也是值得记录的.</subtitle><id>http://feed.cnblogs.com/blog/u/4827/rss</id><updated>2012-02-11T07:09:15Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/4827/rss"/><entry><id>http://www.cnblogs.com/DKSoft/archive/2012/02/11/2346577.html</id><title type="text">tomcat虚拟路径的几种配置方法</title><summary type="text">tomcat配置虚拟路径的4种方法在tomcat中，webapp文件夹默认为web应用的根目录。1.在tomcat\conf\server.xml中找到 host标签，在host标签中增加新的元素&amp;lt;Context/&amp;gt;并设置 Context的元素，其中path元素所设置的值就是在浏览器中所要访问的虚拟路径的名称；docBase元素所对应的值就是web应用所在的具体目录，这里既可以的相对webapp的相对路径，也可是文件的绝对路径。&amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;....</summary><published>2012-02-11T07:09:00Z</published><updated>2012-02-11T07:09:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/archive/2012/02/11/2346577.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/archive/2012/02/11/2346577.html"/><content type="html">tomcat配置虚拟路径的4种方法&lt;br /&gt;在tomcat中，webapp文件夹默认为web应用的根目录。&lt;br /&gt;&lt;br /&gt;1.在tomcat\conf\server.xml中找到 host标签，在host标签中增加新的元素&amp;lt;Context/&amp;gt;并设置 Context的元素，其中path元素所设置的值就是在浏览器中所要访问的虚拟路径的名称；docBase元素所对应的值就是web应用所在的具体目录，这里既可以的相对webapp的相对路径，也可是文件的绝对路径。&lt;br /&gt;&lt;br /&gt;&amp;lt;Engine name="Catalina" defaultHost="localhost"&amp;gt;&lt;br /&gt;.......&lt;br /&gt;&lt;br /&gt;&amp;lt;Host name="localhost" appBase="webapps"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unpackWARs="true" autoDeploy="true"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlValidation="false" xmlNamespaceAware="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Context docBase="SHARP" path="/test" reloadable="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&amp;lt;Context docBase="D:/SHARP" path="/test" reloadable="true" /&amp;gt;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Host&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Engine&amp;gt;&lt;br /&gt;&lt;br /&gt;2.在tomcat\conf\Catalina\localhost文件夹中设置一个web应用名称一样的xml文件。在xml文件中内容有一个&amp;lt;Context/&amp;gt;标签。&lt;br /&gt;&lt;br /&gt;&amp;lt;Context path="/test" reloadable="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt;3.直接在webapp目录下建一个包含WEB-INF/web.xml的项目应用文件夹，在游览器访问页面时会自动将此项目文件的名件名作为虚拟目录的名称。&lt;br /&gt;&lt;br /&gt;4.直接在webapp目录下发布一个打包好的WAR文件，tomcat会自动解压war文件，在游览器访问页面时会自动将此项目文件的名件名作为虚拟目录的名称。&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2346577.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/archive/2012/02/11/2346577.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2267689.html</id><title type="text">接口委托实现</title><summary type="text">1TFMDesign=class(TFMBase,IDataSetOperator)2public3//注意名称要不一样,重新定义保存方法4procedureIDataSetOperator.DoApplyUpdates=ApplyUpdates;56//重写保存方法7procedureApplyUpdates;stdcall;89//接口用对象10property__Service:TDataSetOperatorreadF__ServicewriteF__Service11implementsIDataSetOperator;12end;</summary><published>2011-11-29T07:21:00Z</published><updated>2011-11-29T07:21:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2267689.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2267689.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TFMDesign&amp;nbsp;=&amp;nbsp;class(TFMBase,&amp;nbsp;IDataSetOperator)&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//注意名称要不一样,重新定义保存方法&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&amp;nbsp;IDataSetOperator.DoApplyUpdates&amp;nbsp;=&amp;nbsp;ApplyUpdates;&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//重写保存方法&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&amp;nbsp;ApplyUpdates;&amp;nbsp;stdcall;&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//接口用对象&lt;br /&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;property&amp;nbsp;__Service:&amp;nbsp;TDataSetOperator&amp;nbsp;read&amp;nbsp;F__Service&amp;nbsp;write&amp;nbsp;F__Service&lt;br /&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implements&amp;nbsp;IDataSetOperator;&lt;br /&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2267689.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2267689.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/archive/2011/11/03/2234184.html</id><title type="text">FastReport微调</title><summary type="text">在设计器中View-&amp;gt;Options中调整Grid的大小默认为0.1mm，调成0.01后可以进行微调</summary><published>2011-11-03T02:07:00Z</published><updated>2011-11-03T02:07:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/archive/2011/11/03/2234184.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/archive/2011/11/03/2234184.html"/><content type="html">&lt;p&gt;在设计器中View-&amp;gt;Options中调整Grid的大小默认为0.1mm，调成0.01后可以进行微调&lt;/p&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2234184.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/archive/2011/11/03/2234184.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2218886.html</id><title type="text">Delphi 字符串的引用计数与生命周期</title><summary type="text">先来段代码typeMyString=AnsiString;PMyChar=PAnsiChar;procedureTForm2.Button2Click(Sender:TObject);varp:PMyChar;s,s2:MyString;beginself.Caption:=&amp;#39;frmTest&amp;#39;;//7位的字符串p:=GetCaption;s2:=p;//这是时候s2为frmTesShowMessage(s2); //*****显示出来为frmTesend;functionTForm2.GetCaption:PMyChar;vars1,s2:MyString;begins2:=M</summary><published>2011-10-20T05:54:00Z</published><updated>2011-10-20T05:54:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2218886.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2218886.html"/><content type="html">&lt;p&gt;先来段代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;type&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;MyString&amp;nbsp;=&amp;nbsp;AnsiString;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PMyChar&amp;nbsp;=&amp;nbsp;PAnsiChar;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&amp;nbsp;TForm2.Button2Click(Sender:&amp;nbsp;TObject);&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;p:&amp;nbsp;PMyChar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s,&amp;nbsp;s2:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;self.Caption&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;frmTest&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;;&amp;nbsp;&amp;nbsp;//&lt;span style="color: #800080"&gt;7&lt;/span&gt;位的字符串&lt;br /&gt;&amp;nbsp;&amp;nbsp;p&amp;nbsp;:=&amp;nbsp;GetCaption;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s2&amp;nbsp;:=&amp;nbsp;p;&amp;nbsp;&amp;nbsp;&amp;nbsp;//这是时候s2&amp;nbsp;为frmTes&lt;br /&gt;&amp;nbsp;&amp;nbsp;ShowMessage(s2);&amp;nbsp; //*****显示出来为frmTes&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&amp;nbsp;TForm2.GetCaption:&amp;nbsp;PMyChar;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s1,&amp;nbsp;s2:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s2&amp;nbsp;:=&amp;nbsp;MyString(self.Caption);&lt;br /&gt;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;:=&amp;nbsp;PMyChar(MyString(s2));&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;研究说明(代表个人意见)(XE下面测试)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&amp;nbsp;TForm2.GetCaption:&amp;nbsp;PMyChar;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s1:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s1&amp;nbsp;:=&amp;nbsp;MyString(Self.Caption);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//self.Caption源码得知，是获取了一块临时的空间(A1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;//A1(integer(s1))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:=&amp;nbsp;StringRefCount(s1);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;:=&amp;nbsp;PMyChar(MyString(s1));&amp;nbsp;&amp;nbsp;//Result指针指向的为(A1)的空间&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Integer(@Result^)&amp;nbsp;=&amp;nbsp;A1(integer(s1))&amp;nbsp;&amp;nbsp;是指向同一块空间&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:=&amp;nbsp;StringRefCount(s1);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;br /&gt;//函数返回后s1因为是局部变量&amp;nbsp;s1的引用计数为0，integer(s1)的空间被标志为可以覆盖&lt;br /&gt;//返回的为指针，不增加s1的引用计数&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&amp;nbsp;TForm2.Button2Click(Sender:&amp;nbsp;TObject);&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;p:&amp;nbsp;PMyChar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s,&amp;nbsp;s2:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;self.Caption&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;frmTest&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;p&amp;nbsp;:=&amp;nbsp;GetCaption;&amp;nbsp;//实际上p指向的那块地址被标注为可以覆盖，随时都有可能被覆盖,是很危险的&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Integer(@p^)&amp;nbsp;=&amp;nbsp;GetCaption内部给s1分配的那块空间地址&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; s2 := p;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //导致丢掉了字符..&lt;br /&gt;&amp;nbsp; //因为p指向的内存是可以被覆盖的,s2分配的地址可能和p指向的地址是一样的,导致丢掉了字符..&lt;br /&gt;&amp;nbsp; //Integer(s2) 可能= Integer(@p^)&amp;nbsp; 测试是发现都一样&lt;br /&gt;&lt;br /&gt;&amp;nbsp; //下面操作(SetLength)同样也会一样结果，s2占用的和p占用的同样大小(或者小)。&lt;br /&gt;&amp;nbsp; //这样导致了s2分配的空间可能和p内存一样&lt;br /&gt;&amp;nbsp; //如果7改成较大的数就正常&lt;br /&gt;&amp;nbsp; //&amp;nbsp; SetLength(s2, 7);&lt;br /&gt;&amp;nbsp; //&amp;nbsp; StrCopy(PMyChar(s2), p);&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;ShowMessage(s2);&amp;nbsp;&amp;nbsp;//错误&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;解决方案(1)&lt;/p&gt;&#xD;
&lt;p&gt;将s1定义为内成员变量,这样当GetCaption执行完后那块空间不会被标准为可读写&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&amp;nbsp;TForm2.GetCaption2:&amp;nbsp;PMyChar;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FMyCaption&amp;nbsp;:=&amp;nbsp;MyString(Self.Caption);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//self.Caption源码得知，是获取了一块临时的空间(A1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;//A1(integer(FMyCaption))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:=&amp;nbsp;StringRefCount(FMyCaption);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;:=&amp;nbsp;PMyChar(MyString(FMyCaption));&amp;nbsp;&amp;nbsp;//Result指针指向的为(A1)的空间&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Integer(@Result^)&amp;nbsp;=&amp;nbsp;A1(integer(FMyCaption))&amp;nbsp;&amp;nbsp;是指向同一块空间&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:=&amp;nbsp;StringRefCount(FMyCaption);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;br /&gt;//执行完后FMyCaption不是临时变量，指向的地址不可以被覆盖&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&amp;nbsp;TForm2.btnGetCaption2Click(Sender:&amp;nbsp;TObject);&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;p:&amp;nbsp;PMyChar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s,&amp;nbsp;s2:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;self.Caption&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;frmTest&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; p := GetCaption2; //实际上p指向的那块地址和FMyCaption的地址是一样的&lt;br /&gt;&amp;nbsp; //Integer(@p^) = GetCaption2内部给FMyCaption分配的那块空间地址是一样&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s2&amp;nbsp;:=&amp;nbsp;p;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//因为p指向的内存是不可以被覆盖的,s2分配的地址不可可能和p指向的地址是一样的,这样做是安全的&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Integer(s2)&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;Integer(@p^)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:=&amp;nbsp;StringRefCount(s2);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;新的内存&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;ShowMessage(s2);&amp;nbsp;&amp;nbsp;//正确&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;***&lt;/p&gt;&#xD;
&lt;p&gt;局部变量&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&amp;nbsp;TForm2.GetCaption2:&amp;nbsp;PMyChar;&lt;br /&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp; s1:&amp;nbsp;MyString;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;/span&gt;&amp;nbsp; s1&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;frmTest&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;br /&gt;&amp;nbsp; i:=&amp;nbsp;StringRefCount(s1);&amp;nbsp;&amp;nbsp;//i=-&lt;span style="color: #800080"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;常量地址指向空间不可被覆盖&lt;br /&gt;&amp;nbsp; &lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; //UniqueString(s1);&amp;nbsp;&lt;br /&gt;&amp;nbsp; //i:=&amp;nbsp;StringRefCount(s1);&amp;nbsp;&amp;nbsp;//i=&lt;span style="color: #800080"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;s1又变成临时的，函数返回后s1指向的地址不再安全 &lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; Result=PMyChar(s1)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2218886.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2218886.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2217737.html</id><title type="text">WideString和AnsiString</title><summary type="text">var ws: WideString; s: AnsiString; pw: PWideChar; p: PAnsiChar;begin ws := &amp;#39;ab中cd&amp;#39;; pw := PWideChar(ws); s := ws; //p:=PAnsiChar(s); 正确 //p:=PAnsiChar(String(pw)); //不正确 p := PAnsiChar(pw); //这样转换，inc(p)后 显示的为00对应的为空 inc(p, 1); // ShowMessage(p^);双字节a:6100单字节a:61</summary><published>2011-10-19T07:31:00Z</published><updated>2011-10-19T07:31:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2217737.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2217737.html"/><content type="html">&lt;p&gt;var&lt;br /&gt;&amp;nbsp; ws: WideString;&lt;br /&gt;&amp;nbsp; s: AnsiString;&lt;br /&gt;&amp;nbsp; pw: PWideChar;&lt;br /&gt;&amp;nbsp; p: PAnsiChar;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; ws := 'ab中cd';&lt;br /&gt;&amp;nbsp; pw := PWideChar(ws);&lt;br /&gt;&amp;nbsp; s := ws;&lt;br /&gt;&amp;nbsp; //p:=PAnsiChar(s); 正确&lt;br /&gt;&amp;nbsp; //p:=PAnsiChar(String(pw));&lt;/p&gt;&#xD;
&lt;p&gt;//不正确&lt;br /&gt;&amp;nbsp; p := PAnsiChar(pw);&amp;nbsp; //这样转换，inc(p)后 显示的为00对应的为空&lt;/p&gt;&#xD;
&lt;p&gt;inc(p, 1);&amp;nbsp; //&lt;br /&gt;&amp;nbsp; ShowMessage(p^);&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;双字节&lt;/p&gt;&#xD;
&lt;p&gt;a:6100&lt;/p&gt;&#xD;
&lt;p&gt;单字节&lt;/p&gt;&#xD;
&lt;p&gt;a:61&lt;/p&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2217737.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2217737.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2201657.html</id><title type="text">The Delphi Container Library (DCLX) 几处BUG</title><summary type="text">functionTStrIntfHashMap.Remove(constKey:string):IInterface;varBucket:PStrIntfBucket;I:Integer;{$IFDEFTHREADSAFE}CS:IInterface;{$ENDIF}begin{$IFDEFTHREADSAFE}CS:=EnterCriticalSection;{$ENDIF}Result:=nil;ifKey=&amp;#39;&amp;#39;thenExit;Bucket:=@(FBuckets[FHashFunction(HashString(Key))]);forI:=0toBucket.Count</summary><published>2011-10-08T00:26:00Z</published><updated>2011-10-08T00:26:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2201657.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2201657.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&amp;nbsp;TStrIntfHashMap.Remove(&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&amp;nbsp;Key:&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;):&amp;nbsp;IInterface;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Bucket:&amp;nbsp;PStrIntfBucket;&lt;br /&gt;&amp;nbsp;&amp;nbsp;I:&amp;nbsp;Integer;&lt;br /&gt;&lt;span style="color: #008000"&gt;{&lt;/span&gt;&lt;span style="color: #008000"&gt;$IFDEF&amp;nbsp;THREADSAFE&lt;/span&gt;&lt;span style="color: #008000"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;CS:&amp;nbsp;IInterface;&lt;br /&gt;&lt;span style="color: #008000"&gt;{&lt;/span&gt;&lt;span style="color: #008000"&gt;$ENDIF&lt;/span&gt;&lt;span style="color: #008000"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;{&lt;/span&gt;&lt;span style="color: #008000"&gt;$IFDEF&amp;nbsp;THREADSAFE&lt;/span&gt;&lt;span style="color: #008000"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;CS&amp;nbsp;:=&amp;nbsp;EnterCriticalSection;&lt;br /&gt;&lt;span style="color: #008000"&gt;{&lt;/span&gt;&lt;span style="color: #008000"&gt;$ENDIF&lt;/span&gt;&lt;span style="color: #008000"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #0000ff"&gt;nil&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;Key&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Bucket&amp;nbsp;:=&amp;nbsp;@(FBuckets[FHashFunction(HashString(Key))]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&amp;nbsp;I&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;to&lt;/span&gt;&amp;nbsp;Bucket.Count&amp;nbsp;-&amp;nbsp;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;Bucket.Entries[I].Key&amp;nbsp;=&amp;nbsp;Key&amp;nbsp;&lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//在Remove的时候仅仅只是返回了值，没有把Bucket.Entries[i]中的Value值进行置空。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result&amp;nbsp;:=&amp;nbsp;Bucket.Entries[I].Value;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//add&amp;nbsp;by&amp;nbsp;mofen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bucket.Entries[I].Value&amp;nbsp;:=&amp;nbsp;&lt;span style="color: #0000ff"&gt;nil&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Move(Bucket.Entries[I&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800080"&gt;1&lt;/span&gt;],&amp;nbsp;Bucket.Entries[I],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Bucket.Count&amp;nbsp;-&amp;nbsp;I)&amp;nbsp;*&amp;nbsp;SizeOf(TStrStrEntry));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dec(Bucket.Count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我看了所有的Remove针对对象和接口的释放都貌似有些问题。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2201657.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2201657.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2196602.html</id><title type="text">Delphi的接口委托示例 (转)</title><summary type="text">//转自http://www.cnblogs.com/MurphyAefe/articles/1741825.html{ 说明：该事例实现的效果，在单个应用或代码量小的项目中，可以完全不用接口委托来完成。 之所以采用委托接口，主要是应用到：已经实现的接口模块中，在不改变原有代码的情况下， 需要对其进行扩展；原始模块只需要开放部分功能，但又不能暴露实现细节的场合；}unit TestUnit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCt</summary><published>2011-09-30T07:32:00Z</published><updated>2011-09-30T07:32:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2196602.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2196602.html"/><content type="html">&lt;div id="cnblogs_post_body"&gt;&#xD;
&lt;p&gt;//转自&lt;a href="http://www.cnblogs.com/MurphyAefe/articles/1741825.html"&gt;http://www.cnblogs.com/MurphyAefe/articles/1741825.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;br /&gt;&amp;nbsp; 说明：该事例实现的效果，在单个应用或代码量小的项目中，可以完全不用接口委托来完成。&lt;br /&gt;&amp;nbsp; 之所以采用委托接口，主要是应用到：已经实现的接口模块中，在不改变原有代码的情况下，&lt;br /&gt;&amp;nbsp; 需要对其进行扩展；原始模块只需要开放部分功能，但又不能暴露实现细节的场合；&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;unit TestUnit;&lt;/p&gt;&#xD;
&lt;p&gt;interface&lt;/p&gt;&#xD;
&lt;p&gt;uses&lt;br /&gt;&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;&amp;nbsp; Dialogs, StdCtrls;&lt;/p&gt;&#xD;
&lt;p&gt;const&lt;br /&gt;&amp;nbsp; TestMsgGUID: TGUID = '{4BE80D5E-D94B-42BE-9114-077DC2708451}';&lt;/p&gt;&#xD;
&lt;p&gt;type&lt;br /&gt;&amp;nbsp; //原始接口中新增需要暴露给其它模块的接口定义，公用部分&lt;br /&gt;&amp;nbsp; ITestMsg = interface&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['{4BE80D5E-D94B-42BE-9114-077DC2708451}']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure ShowTestMsg;&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;//---------------------------------服务模块&lt;br /&gt;&amp;nbsp; //基类对象，只需要开放ShowTestMsg方法给外部，所以做为按口的实现基类&lt;br /&gt;&amp;nbsp; TBaseTestMsg = class(TInterfacedObject, ITestMsg)&lt;br /&gt;&amp;nbsp; public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //.... 模块已存在的老代码....&lt;/p&gt;&#xD;
&lt;p&gt;//新开放的接口代码方法&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure ShowTestMsg; virtual;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //申明成虚拟方法，以便继承类可以重载&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;//---------------------------------接口委托对象定义&lt;br /&gt;&amp;nbsp; TTestMsgClass = class(TInterfacedObject, ITestMsg)&lt;br /&gt;&amp;nbsp; private&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTestMsg: ITestMsg;&lt;br /&gt;&amp;nbsp; public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; property Service: ITestMsg read FTestMsg implements ITestMsg;&lt;/p&gt;&#xD;
&lt;p&gt;constructor Create(AClass: TClass);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; constructor CreateEx(AClass: TClass);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //另一种用法, 不采用TBaseTestMsg做为基类创建委托实例&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; destructor Destroy; override;&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;//----------------------------------外部引用的业务模块&lt;br /&gt;&amp;nbsp; //完成具体业务的委托实例&lt;br /&gt;&amp;nbsp; TETestMsg = class(TInterfacedObject, ITestMsg)&lt;br /&gt;&amp;nbsp; public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure ShowTestMsg;&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;//完成具体业务的委托实例&lt;br /&gt;&amp;nbsp; TCTestMsg = class(TInterfacedObject, ITestMsg)&lt;br /&gt;&amp;nbsp; public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure ShowTestMsg;&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp; TForm1 = class(TForm)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button1: TButton;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button2: TButton;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Button1Click(Sender: TObject);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Button2Click(Sender: TObject);&lt;br /&gt;&amp;nbsp; private&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;&amp;nbsp; public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure DoTest(AClass: TClass; ACreateEx: Boolean = False);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //测试方法&lt;br /&gt;&amp;nbsp; end;&lt;/p&gt;&#xD;
&lt;p&gt;var&lt;br /&gt;&amp;nbsp; Form1: TForm1;&lt;/p&gt;&#xD;
&lt;p&gt;implementation&lt;/p&gt;&#xD;
&lt;p&gt;{$R *.dfm}&lt;/p&gt;&#xD;
&lt;p&gt;{ TBaseTestMsg }&lt;/p&gt;&#xD;
&lt;p&gt;procedure TBaseTestMsg.ShowTestMsg;&lt;br /&gt;begin&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;{ TTestMsgClass }&lt;/p&gt;&#xD;
&lt;p&gt;constructor TTestMsgClass.Create(AClass: TClass);&lt;br /&gt;var&lt;br /&gt;&amp;nbsp; vObj: TBaseTestMsg;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; vObj := TBaseTestMsg(AClass.NewInstance);&lt;br /&gt;&amp;nbsp; FTestMsg := vObj.Create;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;constructor TTestMsgClass.CreateEx(AClass: TClass);&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; //该方法不采用TBaseTestMsg做为基类创建委托实例，更通用更灵活&lt;br /&gt;&amp;nbsp; (AClass.NewInstance.Create).GetInterface(TestMsgGUID, FTestMsg);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;destructor TTestMsgClass.Destroy;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; FTestMsg := nil;&lt;br /&gt;&amp;nbsp; inherited;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;{ TETestMsg }&lt;/p&gt;&#xD;
&lt;p&gt;procedure TETestMsg.ShowTestMsg;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; ShowMessage('TETestMsg Msg:' + 'OK');&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;{ TCTestMsg }&lt;/p&gt;&#xD;
&lt;p&gt;procedure TCTestMsg.ShowTestMsg;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; ShowMessage('TCTestMsg 消息:' + '好的');&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//--------------------以下为测试代码--------------------------------&lt;/p&gt;&#xD;
&lt;p&gt;procedure TForm1.DoTest(AClass: TClass; ACreateEx: Boolean);&lt;br /&gt;var&lt;br /&gt;&amp;nbsp; vClass: TTestMsgClass;&lt;br /&gt;&amp;nbsp; vTest: ITestMsg;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; if ACreateEx then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vClass := TTestMsgClass.CreateEx(AClass)&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vClass := TTestMsgClass.Create(AClass);&lt;/p&gt;&#xD;
&lt;p&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTest := vClass;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTest.ShowTestMsg;&lt;br /&gt;&amp;nbsp; finally&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTest := nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FreeAndNil(vClass);&lt;br /&gt;&amp;nbsp; end;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; DoTest(TETestMsg);&lt;br /&gt;&amp;nbsp; DoTest(TCTestMsg);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; DoTest(TETestMsg, True);&lt;br /&gt;&amp;nbsp; DoTest(TCTestMsg, True);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;end.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2196602.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2196602.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/articles/2167947.html</id><title type="text">设置数据库快照功能</title><summary type="text">ALTER DATABASE CXFX_DATASET ALLOW_SNAPSHOT_ISOLATION ONALTER DATABASE CXFX_DATASET READ_COMMITTED_SNAPSHOT ON//原来帮助里面写了，执行该语句时不能有其他东西连接数据库，难怪前几次执行了N久都没有反应,帮助没看仔细</summary><published>2011-09-05T12:30:00Z</published><updated>2011-09-05T12:30:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/articles/2167947.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/articles/2167947.html"/><content type="html">&lt;p&gt;ALTER DATABASE CXFX_DATA&lt;br /&gt;SET ALLOW_SNAPSHOT_ISOLATION ON&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;ALTER DATABASE CXFX_DATA&lt;br /&gt;SET READ_COMMITTED_SNAPSHOT ON&lt;/p&gt;&#xD;
&lt;p&gt;//原来帮助里面写了，执行该语句时不能有其他东西连接数据库，难怪前几次执行了N久都没有反应,帮助没看仔细&lt;/p&gt; &lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2167947.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/articles/2167947.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/archive/2011/09/01/2161790.html</id><title type="text">找出表的记录数</title><summary type="text">自己写的declare@countintDECLARE@SQLStringnvarchar(500),@TableNamevarchar(100)SELECTtop1@TableName=namefromsysobjectswherextype=&amp;#39;u&amp;#39;SELECT@SQLString=&amp;#39;select@innercount=count(1)from&amp;#39;+@TableNameEXECUTEsp_executesql@SQLString,N&amp;#39;@innercountintOUTPUT&amp;#39;,@innercount=@countOUTPUTselect@Tabl</summary><published>2011-09-01T03:38:00Z</published><updated>2011-09-01T03:38:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/archive/2011/09/01/2161790.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/archive/2011/09/01/2161790.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;自己写的&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@count&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@SQLString&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;nvarchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;500&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@TableName&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;100&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;top&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@TableName&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sysobjects&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xtype&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;u&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@SQLString&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;select&amp;nbsp;@innercount=count(1)&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@TableName&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;EXECUTE&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sp_executesql&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@SQLString&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;,N&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;@innercount&amp;nbsp;int&amp;nbsp;&amp;nbsp;OUTPUT&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@innercount&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #008000"&gt;@count&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OUTPUT&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@TableName&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;记录数:&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;CAST&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #008000"&gt;@count&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;20&lt;/span&gt;&lt;span style="color: #000000"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;网上的:&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@name&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;200&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@i&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@result&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;table&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;100&lt;/span&gt;&lt;span style="color: #000000"&gt;))&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@s&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;nvarchar&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;100&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;cursor&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sysobjects&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;type&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;U&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;OPEN&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;fetch&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;next&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@name&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;WHILE&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight: bold; color: #008000"&gt;@@FETCH_STATUS&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@s&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;select&amp;nbsp;top&amp;nbsp;10&amp;nbsp;@i=COUNT(1)&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #808080"&gt;+&lt;/span&gt;&lt;span style="color: #008000"&gt;@name&lt;/span&gt;&lt;span style="color: #808080"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000"&gt;''&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;exec&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sp_executesql&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@s&lt;/span&gt;&lt;span style="color: #000000"&gt;,N&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;@i&amp;nbsp;int&amp;nbsp;output&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@i&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;output&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@i&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;insert&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@result&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@name&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;fetch&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;next&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@name&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;close&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;deallocate&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;@result&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2161790.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/archive/2011/09/01/2161790.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/DKSoft/archive/2011/08/23/2150157.html</id><title type="text">cxgrid多选获取记录。不需要设置KeyFieldName</title><summary type="text">procedureCopyGridRecordToJsn(pvDataSet:TcxGridDBTableView;pvValueJsn:ISuperObject);vari,j:Integer;lvField:TcxGridDBColumn;lvItem:ISuperObject;beginwithpvDataSet,DataControllerdobeginfori:=0toController.SelectedRecordCount-1dobeginlvItem:=SO();tryforj:=0topvDataSet.ColumnCount-1dobeginlvField:=pvData</summary><published>2011-08-23T01:23:00Z</published><updated>2011-08-23T01:23:00Z</updated><author><name>D10.天地弦</name><uri>http://www.cnblogs.com/DKSoft/</uri></author><link rel="alternate" href="http://www.cnblogs.com/DKSoft/archive/2011/08/23/2150157.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/DKSoft/archive/2011/08/23/2150157.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;procedure&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CopyGridRecordToJsn(pvDataSet:&amp;nbsp;TcxGridDBTableView;&amp;nbsp;pvValueJsn:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISuperObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i,&amp;nbsp;j:&amp;nbsp;Integer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;lvField:&amp;nbsp;TcxGridDBColumn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;lvItem:&amp;nbsp;ISuperObject;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;with&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;pvDataSet,&amp;nbsp;DataController&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;to&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Controller.SelectedRecordCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lvItem&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SO();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;j&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;to&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;pvDataSet.ColumnCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lvField&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;pvDataSet.Columns[j];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lvField.DataBinding.ValueType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;Object&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lvItem.S[LowerCase(lvField.DataBinding.FieldName)]&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VarToStrDef(GetValue(Controller.SelectedRecords[i].RecordIndex,&amp;nbsp;j),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;''&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pvValueJsn.O[&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;select.value&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lvItem;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pvValueJsn.O[&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;select.values[]&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lvItem;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;finally&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lvItem&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;nil&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/DKSoft/aggbug/2150157.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/DKSoft/archive/2011/08/23/2150157.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
