<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_永乐居</title><subtitle type="text">品自由，戏人生。</subtitle><id>http://feed.cnblogs.com/blog/u/72269/rss</id><updated>2010-06-22T16:43:32Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/72269/rss"/><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763055.html</id><title type="text">Delphi中N的N次方计算方法</title><summary type="text">记得以前有个群问过此类问题，恰逢今日Blog新开，公布一下我的方法。其实就是个函数的应用罢了。高手飘过~~~~~~[代码]</summary><published>2010-06-22T16:44:00Z</published><updated>2010-06-22T16:44:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763055.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763055.html"/><content type="html">&lt;p&gt;记得以前有个群问过此类问题，恰逢今日Blog新开，公布一下我的方法。其实就是个函数的应用罢了。&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;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt; TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; &lt;span style="color: #000000;"&gt;  f : Real;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; &lt;span style="color: #000000;"&gt;  f :&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Power(&lt;/span&gt;&lt;span style="color: #800080;"&gt;2.2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;2.2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;6&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;//&lt;/span&gt;&lt;span style="color: #000000;"&gt;f :&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; IntPower(&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;2.2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;7&lt;/span&gt; &lt;span style="color: #000000;"&gt;  ShowMessage(FloatToStr(f));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;8&lt;/span&gt; &lt;span style="color: #000000;"&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;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763055.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763055.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763053.html</id><title type="text">C#进程控制(转)</title><summary type="text">开始某个进程，例如，打开记事本：Process process1 = new Process();process1.StartInfo.FileName = "NotePad.exe";process1.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;process1.Start();终止某个进程：Process[] p = Process...</summary><published>2010-06-22T16:40:00Z</published><updated>2010-06-22T16:40:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763053.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763053.html"/><content type="html">&lt;p&gt;开始某个进程，例如，打开记事本：&lt;/p&gt;&#xD;
&lt;p&gt;Process process1 = new Process();&lt;/p&gt;&#xD;
&lt;p&gt;process1.StartInfo.FileName = "NotePad.exe";&lt;/p&gt;&#xD;
&lt;p&gt;process1.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;&lt;/p&gt;&#xD;
&lt;p&gt;process1.Start();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;终止某个进程：&lt;/p&gt;&#xD;
&lt;p&gt;Process[] p = Process.GetProcessesByName("NotePad");&lt;/p&gt;&#xD;
&lt;p&gt;if (p.Length &amp;gt;0)&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;if (!p[0].HasExited)&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;if (p[0].Responding)&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;p[0].CloseMainWindow();&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;else&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;p[0].Kill();&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;p&gt;线程的HasExited属性用来确定线程是否已关闭。如果进程已关闭，将返回 true 属性值；如果进程仍在运行，将返回 false 属性值。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;线程的Responding属性确定进程的用户界面是否正在响应。尝试读取 Responding 属性时，将向目标进程的用户界面发送一个请求。如果立即有响应，则返回属性值为 trues，可以调用 CloseMainWindow方法关闭应用程序；如果界面没有响应，则返回 false 属性值，可以调用 Kill 方法强制进程关闭。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763053.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763053.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763052.html</id><title type="text">C#的正则表达式(转)</title><summary type="text">C#正则表达式整理备忘有一段时间，正则表达式学习很火热很潮流，当时在CSDN一天就能看到好几个正则表达式的帖子，那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识，同时也为我在CSDN大概赚了1000分，今天想起来，去找《C#字符串和正则表达式参考手册》时，已经不知所踪了。现在用到正则的时候也比较少，把以前的笔记等整理一下，以志不忘。（1）&amp;ldq...</summary><published>2010-06-22T16:39:00Z</published><updated>2010-06-22T16:39:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763052.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763052.html"/><content type="html">&lt;p&gt;C#正则表达式整理备忘&lt;/p&gt;&#xD;
&lt;p&gt;有一段时间，正则表达式学习很火热很潮流，当时在CSDN一天就能看到好几个正则表达式的帖子，那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识，同时也为我在CSDN大概赚了1000分，今天想起来，去找《C#字符串和正则表达式参考手册》时，已经不知所踪了。现在用到正则的时候也比较少，把以前的笔记等整理一下，以志不忘。&lt;/p&gt;&#xD;
&lt;p&gt;（1）&amp;ldquo;@&amp;rdquo;符号&lt;br /&gt;符下两ows表研究室的火热，当晨在&amp;ldquo;@&amp;rdquo;虽然并非C#正则表达式的&amp;ldquo;成员&amp;rdquo;，但是它经常与C#正则表达式出双入对。&amp;ldquo;@&amp;rdquo;表示，跟在它后面的字符串是个&amp;ldquo;逐字字符串&amp;rdquo;，不是很好理解，举个例子，以下两个声明是等效的：&lt;br /&gt;string x="D:\\My Huang\\My Doc";&lt;br /&gt;string y = @"D:\My Huang\My Doc";&lt;br /&gt;事实上，如果按如下声明，C#将会报错，因为&amp;ldquo;\&amp;rdquo;在C#中用于实现转义，如&amp;ldquo;\n&amp;rdquo;换行：&lt;br /&gt;string x = "D:\My Huang\My Doc";&lt;/p&gt;&#xD;
&lt;p&gt;（2）基本的语法字符。&lt;br /&gt;\d&amp;nbsp; 0-9的数字&lt;br /&gt;\D&amp;nbsp; \d的补集（以所以字符为全集，下同），即所有非数字的字符&lt;br /&gt;\w&amp;nbsp; 单词字符，指大小写字母、0-9的数字、下划线&lt;br /&gt;\W&amp;nbsp; \w的补集&lt;br /&gt;\s&amp;nbsp; 空白字符，包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f&lt;br /&gt;\S&amp;nbsp; \s的补集&lt;br /&gt;.&amp;nbsp; 除换行符\n外的任意字符&lt;br /&gt;[&amp;hellip;]&amp;nbsp; 匹配[]内所列出的所有字符&lt;br /&gt;[^&amp;hellip;]&amp;nbsp; 匹配非[]内所列出的字符&lt;br /&gt;下面提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string i = "\n";&lt;br /&gt;string m = "3";&lt;br /&gt;Regex r = new Regex(@"\D");&lt;br /&gt;//同Regex r = new Regex("&lt;a href="file://D/"&gt;\\D&lt;/a&gt;");&lt;br /&gt;//r.IsMatch(i)结果：true&lt;br /&gt;//r.IsMatch(m)结果：false&lt;/p&gt;&#xD;
&lt;p&gt;string i = "%";&lt;br /&gt;string m = "3";&lt;br /&gt;Regex r = new Regex("[a-z0-9]");&lt;br /&gt;//匹配小写字母或数字字符&lt;br /&gt;//r.IsMatch(i)结果：false&lt;br /&gt;//r.IsMatch(m)结果：true&lt;/p&gt;&#xD;
&lt;p&gt;（3）定位字符&lt;br /&gt;&amp;ldquo;定位字符&amp;rdquo;所代表的是一个虚的字符，它代表一个位置，你也可以直观地认为&amp;ldquo;定位字符&amp;rdquo;所代表的是某个字符与字符间的那个微小间隙。&lt;br /&gt;^&amp;nbsp; 表示其后的字符必须位于字符串的开始处&lt;br /&gt;$&amp;nbsp; 表示其前面的字符必须位于字符串的结束处&lt;br /&gt;\b&amp;nbsp; 匹配一个单词的边界&lt;br /&gt;\B&amp;nbsp; 匹配一个非单词的边界&lt;br /&gt;另外，还包括：\A&amp;nbsp; 前面的字符必须位于字符处的开始处，\z&amp;nbsp; 前面的字符必须位于字符串的结束处，\Z&amp;nbsp; 前面的字符必须位于字符串的结束处，或者位于换行符前&lt;br /&gt;下面提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string i = "Live for nothing,die for something";&lt;br /&gt;Regex r1 = new Regex("^Live for nothing,die for something$");&lt;br /&gt;//r1.IsMatch(i) true&lt;br /&gt;Regex r2 = new Regex("^Live for nothing,die for some$");&lt;br /&gt;//r2.IsMatch(i) false&lt;br /&gt;Regex r3 = new Regex("^Live for nothing,die for some");&lt;br /&gt;//r3.IsMatch(i) true&lt;/p&gt;&#xD;
&lt;p&gt;string i = @"Live for nothing,&lt;br /&gt;die for something";//多行&lt;br /&gt;Regex r1 = new Regex("^Live for nothing,die for something$");&lt;br /&gt;Console.WriteLine("r1 match count:" + r1.Matches(i).Count);//0&lt;br /&gt;Regex r2 = new Regex("^Live for nothing,die for something$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r2 match count:" + r2.Matches(i).Count);//0&lt;br /&gt;Regex r3 = new Regex("^Live for nothing,\r\ndie for something$");&lt;br /&gt;Console.WriteLine("r3 match count:" + r3.Matches(i).Count);//1&lt;br /&gt;Regex r4 = new Regex("^Live for nothing,$");&lt;br /&gt;Console.WriteLine("r4 match count:" + r4.Matches(i).Count);//0&lt;br /&gt;Regex r5 = new Regex("^Live for nothing,$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r5 match count:" + r5.Matches(i).Count);//0&lt;br /&gt;Regex r6 = new Regex("^Live for nothing,\r\n$");&lt;br /&gt;Console.WriteLine("r6 match count:" + r6.Matches(i).Count);//0&lt;br /&gt;Regex r7 = new Regex("^Live for nothing,\r\n$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r7 match count:" + r7.Matches(i).Count);//0&lt;br /&gt;Regex r8 = new Regex("^Live for nothing,\r$");&lt;br /&gt;Console.WriteLine("r8 match count:" + r8.Matches(i).Count);//0&lt;br /&gt;Regex r9 = new Regex("^Live for nothing,\r$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r9 match count:" + r9.Matches(i).Count);//1&lt;br /&gt;Regex r10 = new Regex("^die for something$");&lt;br /&gt;Console.WriteLine("r10 match count:" + r10.Matches(i).Count);//0&lt;br /&gt;Regex r11 = new Regex("^die for something$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r11 match count:" + r11.Matches(i).Count);//1&lt;br /&gt;Regex r12 = new Regex("^");&lt;br /&gt;Console.WriteLine("r12 match count:" + r12.Matches(i).Count);//1&lt;br /&gt;Regex r13 = new Regex("$");&lt;br /&gt;Console.WriteLine("r13 match count:" + r13.Matches(i).Count);//1&lt;br /&gt;Regex r14 = new Regex("^", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r14 match count:" + r14.Matches(i).Count);//2&lt;br /&gt;Regex r15 = new Regex("$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r15 match count:" + r15.Matches(i).Count);//2&lt;br /&gt;Regex r16 = new Regex("^Live for nothing,\r$\n^die for something$", RegexOptions.Multiline);&lt;br /&gt;Console.WriteLine("r16 match count:" + r16.Matches(i).Count);//1&lt;br /&gt;//对于一个多行字符串，在设置了Multiline选项之后，^和$将出现多次匹配。&lt;/p&gt;&#xD;
&lt;p&gt;string i = "Live for nothing,die for something";&lt;br /&gt;string m = "Live for nothing,die for some thing";&lt;br /&gt;Regex r1 = new Regex(@"\bthing\b");&lt;br /&gt;Console.WriteLine("r1 match count:" + r1.Matches(i).Count);//0&lt;br /&gt;Regex r2 = new Regex(@"thing\b");&lt;br /&gt;Console.WriteLine("r2 match count:" + r2.Matches(i).Count);//2&lt;br /&gt;Regex r3 = new Regex(@"\bthing\b");&lt;br /&gt;Console.WriteLine("r3 match count:" + r3.Matches(m).Count);//1&lt;br /&gt;Regex r4 = new Regex(@"\bfor something\b");&lt;br /&gt;Console.WriteLine("r4 match count:" + r4.Matches(i).Count);//1&lt;br /&gt;//\b通常用于约束一个完整的单词&lt;/p&gt;&#xD;
&lt;p&gt;（4）重复描述字符&lt;br /&gt;&amp;ldquo;重复描述字符&amp;rdquo;是体现C#正则表达式&amp;ldquo;很好很强大&amp;rdquo;的地方之一：&lt;br /&gt;{n}&amp;nbsp; 匹配前面的字符n次&lt;br /&gt;{n,}&amp;nbsp; 匹配前面的字符n次或多于n次&lt;br /&gt;{n,m}&amp;nbsp; 匹配前面的字符n到m次&lt;br /&gt;?&amp;nbsp; 匹配前面的字符0或1次&lt;br /&gt;+&amp;nbsp; 匹配前面的字符1次或多于1次&lt;br /&gt;*&amp;nbsp; 匹配前面的字符0次或式于0次&lt;br /&gt;以下提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "1024";&lt;br /&gt;string y = "+1024";&lt;br /&gt;string z = "1,024";&lt;br /&gt;string a = "1";&lt;br /&gt;string b="-1024";&lt;br /&gt;string c = "10000";&lt;br /&gt;Regex r = new Regex(@"^\+?[1-9],?\d{3}$");&lt;br /&gt;Console.WriteLine("x match count:" + r.Matches(x).Count);//1&lt;br /&gt;Console.WriteLine("y match count:" + r.Matches(y).Count);//1&lt;br /&gt;Console.WriteLine("z match count:" + r.Matches(z).Count);//1&lt;br /&gt;Console.WriteLine("a match count:" + r.Matches(a).Count);//0&lt;br /&gt;Console.WriteLine("b match count:" + r.Matches(b).Count);//0&lt;br /&gt;Console.WriteLine("c match count:" + r.Matches(c).Count);//0&lt;br /&gt;//匹配1000到9999的整数。&lt;/p&gt;&#xD;
&lt;p&gt;（5）择一匹配&lt;br /&gt;C#正则表达式中的 (|) 符号似乎没有一个专门的称谓，姑且称之为&amp;ldquo;择一匹配&amp;rdquo;吧。事实上，像[a-z]也是一种择一匹配，只不过它只能匹配单个字符，而(|)则提供了更大的范围，(ab|xy)表示匹配ab或匹配xy。注意&amp;ldquo;|&amp;rdquo;与&amp;ldquo;()&amp;rdquo;在此是一个整体。下面提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "0";&lt;br /&gt;string y = "0.23";&lt;br /&gt;string z = "100";&lt;br /&gt;string a = "100.01";&lt;br /&gt;string b = "9.9";&lt;br /&gt;string c = "99.9";&lt;br /&gt;string d = "99.";&lt;br /&gt;string e = "00.1";&lt;br /&gt;Regex r = new Regex(@"^\+?((100(.0+)*)|([1-9]?[0-9])(\.\d+)*)$");&lt;br /&gt;Console.WriteLine("x match count:" + r.Matches(x).Count);//1&lt;br /&gt;Console.WriteLine("y match count:" + r.Matches(y).Count);//1&lt;br /&gt;Console.WriteLine("z match count:" + r.Matches(z).Count);//1&lt;br /&gt;Console.WriteLine("a match count:" + r.Matches(a).Count);//0&lt;br /&gt;Console.WriteLine("b match count:" + r.Matches(b).Count);//1&lt;br /&gt;Console.WriteLine("c match count:" + r.Matches(c).Count);//1&lt;br /&gt;Console.WriteLine("d match count:" + r.Matches(d).Count);//0&lt;br /&gt;Console.WriteLine("e match count:" + r.Matches(e).Count);//0&lt;br /&gt;//匹配0到100的数。最外层的括号内包含两部分&amp;ldquo;(100(.0+)*)&amp;rdquo;，&amp;ldquo;([1-9]?[0-9])(\.\d+)*&amp;rdquo;，这两部分是&amp;ldquo;OR&amp;rdquo;的关系，即正则表达式引擎会先尝试匹配100，如果失败，则尝试匹配后一个表达式（表示[0,100)范围中的数字）。&lt;/p&gt;&#xD;
&lt;p&gt;（6）特殊字符的匹配&lt;br /&gt;下面提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "\\";&lt;br /&gt;Regex r1 = new Regex("^\\\\$");&lt;br /&gt;Console.WriteLine("r1 match count:" + r1.Matches(x).Count);//1&lt;br /&gt;Regex r2 = new Regex(@"^\\$");&lt;br /&gt;Console.WriteLine("r2 match count:" + r2.Matches(x).Count);//1&lt;br /&gt;Regex r3 = new Regex("^\\$");&lt;br /&gt;Console.WriteLine("r3 match count:" + r3.Matches(x).Count);//0&lt;br /&gt;//匹配&amp;ldquo;\&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;string x = "\"";&lt;br /&gt;Regex r1 = new Regex("^\"$");&lt;br /&gt;Console.WriteLine("r1 match count:" + r1.Matches(x).Count);//1&lt;br /&gt;Regex r2 = new Regex(@"^""$");&lt;br /&gt;Console.WriteLine("r2 match count:" + r2.Matches(x).Count);//1&lt;br /&gt;//匹配双引号&lt;/p&gt;&#xD;
&lt;p&gt;（7）组与非捕获组&lt;br /&gt;以下提供一些简单的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "Live for nothing,die for something";&lt;br /&gt;string y = "Live for nothing,die for somebody";&lt;br /&gt;Regex r = new Regex(@"^Live ([a-z]{3}) no([a-z]{5}),die \1 some\2$");&lt;br /&gt;Console.WriteLine("x match count:" + r.Matches(x).Count);//1&lt;br /&gt;Console.WriteLine("y match count:" + r.Matches(y).Count);//0&lt;br /&gt;//正则表达式引擎会记忆&amp;ldquo;()&amp;rdquo;中匹配到的内容，作为一个&amp;ldquo;组&amp;rdquo;，并且可以通过索引的方式进行引用。表达式中的&amp;ldquo;\1&amp;rdquo;，用于反向引用表达式中出现的第一个组，即粗体标识的第一个括号内容，&amp;ldquo;\2&amp;rdquo;则依此类推。&lt;/p&gt;&#xD;
&lt;p&gt;string x = "Live for nothing,die for something";&lt;br /&gt;Regex r = new Regex(@"^Live for no([a-z]{5}),die for some\1$");&lt;br /&gt;if (r.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//输出：thing&lt;br /&gt;}&lt;br /&gt;//获取组中的内容。注意，此处是Groups[1]，因为Groups[0]是整个匹配的字符串，即整个变量x的内容。&lt;/p&gt;&#xD;
&lt;p&gt;string x = "Live for nothing,die for something";&lt;br /&gt;Regex r = new Regex(@"^Live for no(?&amp;lt;g1&amp;gt;[a-z]{5}),die for some\1$");&lt;br /&gt;if (r.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("group1 value:" + r.Match(x).Groups["g1"].Value);//输出：thing&lt;br /&gt;}&lt;br /&gt;//可根据组名进行索引。使用以下格式为标识一个组的名称(?&amp;lt;groupname&amp;gt;&amp;hellip;)。&lt;/p&gt;&#xD;
&lt;p&gt;string x = "Live for nothing nothing";&lt;br /&gt;Regex r = new Regex(@"([a-z]+) \1");&lt;br /&gt;if (r.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = r.Replace(x, "$1");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("var x:" + x);//输出：Live for nothing&lt;br /&gt;}&lt;br /&gt;//删除原字符串中重复出现的&amp;ldquo;nothing&amp;rdquo;。在表达式之外，使用&amp;ldquo;$1&amp;rdquo;来引用第一个组，下面则是通过组名来引用：&lt;br /&gt;string x = "Live for nothing nothing";&lt;br /&gt;Regex r = new Regex(@"(?&amp;lt;g1&amp;gt;[a-z]+) \1");&lt;br /&gt;if (r.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = r.Replace(x, "${g1}");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("var x:" + x);//输出：Live for nothing&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;string x = "Live for nothing";&lt;br /&gt;Regex r = new Regex(@"^Live for no(?:[a-z]{5})$");&lt;br /&gt;if (r.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//输出：(空)&lt;br /&gt;}&lt;br /&gt;//在组前加上&amp;ldquo;?:&amp;rdquo;表示这是个&amp;ldquo;非捕获组&amp;rdquo;，即引擎将不保存该组的内容。&lt;/p&gt;&#xD;
&lt;p&gt;（8）贪婪与非贪婪&lt;br /&gt;正则表达式的引擎是贪婪，只要模式允许，它将匹配尽可能多的字符。通过在&amp;ldquo;重复描述字符&amp;rdquo;（*,+）后面添加&amp;ldquo;?&amp;rdquo;，可以将匹配模式改成非贪婪。请看以下示例：&lt;br /&gt;Code&lt;br /&gt;string x = "Live for nothing,die for something";&lt;br /&gt;Regex r1 = new Regex(@".*thing");&lt;br /&gt;if (r1.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("match:" + r1.Match(x).Value);//输出：Live for nothing,die for something&lt;br /&gt;}&lt;br /&gt;Regex r2 = new Regex(@".*?thing");&lt;br /&gt;if (r2.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("match:" + r2.Match(x).Value);//输出：Live for nothing&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;（9）回溯与非回溯&lt;br /&gt;使用&amp;ldquo;(?&amp;gt;&amp;hellip;)&amp;rdquo;方式进行非回溯声明。由于正则表达式引擎的贪婪特性，导致它在某些情况下，将进行回溯以获得匹配，请看下面的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "Live for nothing,die for something";&lt;br /&gt;Regex r1 = new Regex(@".*thing,");&lt;br /&gt;if (r1.IsMatch(x))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("match:" + r1.Match(x).Value);//输出：Live for nothing,&lt;br /&gt;}&lt;br /&gt;Regex r2 = new Regex(@"(?&amp;gt;.*)thing,");&lt;br /&gt;if (r2.IsMatch(x))//不匹配&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("match:" + r2.Match(x).Value);&lt;br /&gt;}&lt;br /&gt;//在r1中，&amp;ldquo;.*&amp;rdquo;由于其贪婪特性，将一直匹配到字符串的最后，随后匹配&amp;ldquo;thing&amp;rdquo;，但在匹配&amp;ldquo;,&amp;rdquo;时失败，此时引擎将回溯，并在&amp;ldquo;thing,&amp;rdquo;处匹配成功。&lt;br /&gt;在r2中，由于强制非回溯，所以整个表达式匹配失败。&lt;/p&gt;&#xD;
&lt;p&gt;（10）正向预搜索、反向预搜索&lt;br /&gt;正向预搜索声明格式：正声明 &amp;ldquo;(?=&amp;hellip;)&amp;rdquo;，负声明 &amp;ldquo;(?!...)&amp;rdquo; ，声明本身不作为最终匹配结果的一部分，请看下面的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "1024 used 2048 free";&lt;br /&gt;Regex r1 = new Regex(@"\d{4}(?= used)");&lt;br /&gt;if (r1.Matches(x).Count==1)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("r1 match:" + r1.Match(x).Value);//输出：1024&lt;br /&gt;}&lt;br /&gt;Regex r2 = new Regex(@"\d{4}(?! used)");&lt;br /&gt;if (r2.Matches(x).Count==1)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("r2 match:" + r2.Match(x).Value); //输出：2048&lt;br /&gt;}&lt;br /&gt;//r1中的正声明表示必须保证在四位数字的后面必须紧跟着&amp;ldquo; used&amp;rdquo;，r2中的负声明表示四位数字之后不能跟有&amp;ldquo; used&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;反向预搜索声明格式：正声明&amp;ldquo;(?&amp;lt;=)&amp;rdquo;，负声明&amp;ldquo;(?&amp;lt;!)&amp;rdquo;，声明本身不作为最终匹配结果的一部分，请看下面的示例：&lt;br /&gt;Code&lt;br /&gt;string x = "used:1024 free:2048";&lt;br /&gt;Regex r1 = new Regex(@"(?&amp;lt;=used:)\d{4}");&lt;br /&gt;if (r1.Matches(x).Count==1)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("r1 match:" + r1.Match(x).Value);//输出：1024&lt;br /&gt;}&lt;br /&gt;Regex r2 = new Regex(@"(?&amp;lt;!used:)\d{4}");&lt;br /&gt;if (r2.Matches(x).Count==1)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("r2 match:" + r2.Match(x).Value);//输出：2048&lt;br /&gt;}&lt;br /&gt;//r1中的反向正声明表示在4位数字之前必须紧跟着&amp;ldquo;used:&amp;rdquo;，r2中的反向负声明表示在4位数字之前必须紧跟着除&amp;ldquo;used:&amp;rdquo;之外的字符串。&lt;/p&gt;&#xD;
&lt;p&gt;（11）十六进制字符范围&lt;br /&gt;正则表达式中，可以使用 "\xXX" 和 "\uXXXX" 表示一个字符（"X" 表示一个十六进制数）形式字符范围：&lt;br /&gt;\xXX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 编号在 0到255 范围的字符，比如：空格可以使用 "\x20" 表示。&lt;br /&gt;\uXXXX&amp;nbsp;&amp;nbsp; 任何字符可以使用 "\u" 再加上其编号的4位十六进制数表示，比如：汉字可以使用&amp;ldquo;[\u4e00-\u9fa5]&amp;rdquo;表示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;（12）对[0,100]的比较完备的匹配&lt;br /&gt;下面是一个比较综合的示例，对于匹配[0,100]，需要特殊考虑的地方包括&lt;br /&gt;*00合法，00.合法，00.00合法，001.100合法&lt;br /&gt;*空字符串不合法，仅小数点不合法，大于100不合法&lt;br /&gt;*数值是可带后缀的，如&amp;ldquo;1.07f&amp;rdquo;表示该值为一个float类型（未考虑）&lt;br /&gt;Code&lt;br /&gt;Regex r = new Regex(@"^\+?0*(?:100(\.0*)?|(\d{0,2}(?=\.\d)|\d{1,2}(?=($|\.$)))(\.\d*)?)$");&lt;br /&gt;string x = "";&lt;br /&gt;while (true)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = Console.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (x != "exit")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (r.IsMatch(x))&lt;br /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(x + " succeed!");&lt;br /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(x + " failed!");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;（13）精确匹配有时候是困难的&lt;br /&gt;有些需求要做到精确匹配比较困难，例如：日期、Url、Email地址等，其中一些你甚至需要研究一些专门的文档写出精确完备的表达式，对于这种情况，只能退而求其次，保证比较精确的匹配。例如对于日期，可以基于应用系统的实际情况考虑一段较短的时间，或者对于像Email的匹配，可以只考虑最常见的形式。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763052.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763052.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763050.html</id><title type="text">Delphi中注册OCX控件</title><summary type="text">这是我以前的一段代码。[代码]</summary><published>2010-06-22T16:38:00Z</published><updated>2010-06-22T16:38:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763050.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763050.html"/><content type="html">&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;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt; TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;  OCXHand: THandle;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;  RegFunc: TDLLRegisterServer;&lt;/span&gt;&lt;span style="color: #008000;"&gt;{&lt;/span&gt;&lt;span style="color: #008000;"&gt;uses ActiveX or OleCtl&lt;/span&gt;&lt;span style="color: #008000;"&gt;}&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; OpenDialog1.Execute &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;then&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;      OCXHand :&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; LoadLibrary(PChar(OpenDialog1.FileName));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;      RegFunc :&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetProcAddress(OCXHand, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;DllRegisterServer&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;      &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; RegFunc &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;then&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;        ShowMessage(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;Error!&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;finally&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;      FreeLibrary(OCXHand);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &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: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &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: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&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;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763050.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763050.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763047.html</id><title type="text">谈谈Pascal的指针(转)</title><summary type="text">大家都认为，C语言之所以强大，以及其自由性，很大部分体现在其灵活的指针运用上。因此，说指针是C语言的灵魂，一点都不为过。同时，这种说法也让很多人 产生误解，似乎只有C语言的指针才能算指针。Basic不支持指针，在此不论。其实，Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal，可以说在指针运用上，丝毫不会逊色于C语言的指针。以下内容分为八个部分，分别是一...</summary><published>2010-06-22T16:36:00Z</published><updated>2010-06-22T16:36:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763047.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763047.html"/><content type="html">&lt;p&gt;大家都认为，C语言之所以强大，以及其自由性，很大部分体现在其灵活的指针运用上。因此，说指针是C语言的灵魂，一点都不为过。同时，这种说法也让很多人 产生误解，似乎只有C语言的指针才能算指针。Basic不支持指针，在此不论。其实，Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal，可以说在指针运用上，丝毫不会逊色于C语言的指针。&lt;/p&gt;&#xD;
&lt;p&gt;以下内容分为八个部分，分别是&lt;br /&gt;一、类型指针的定义&lt;br /&gt;二、无类型指针的定义&lt;br /&gt;三、指针的解除引用&lt;br /&gt;四、取地址（指针赋值）&lt;br /&gt;五、指针运算&lt;br /&gt;六、动态内存分配&lt;br /&gt;七、字符数组的运算&lt;br /&gt;八、函数指针&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;一、类型指针的定义。对于指向特定类型的指针，在C中是这样定义的：&lt;br /&gt;int *ptr;&lt;br /&gt;char *ptr;&lt;br /&gt;与之等价的Object Pascal是如何定义的呢？&lt;br /&gt;var&lt;br /&gt;ptr : ^Integer;&lt;br /&gt;ptr : ^char;&lt;br /&gt;其实也就是符号的差别而已。&lt;/p&gt;&#xD;
&lt;p&gt;二、无类型指针的定义。C中有void *类型，也就是可以指向任何类型数据的指针。Object Pascal为其定义了一个专门的类型：Pointer。于是，&lt;br /&gt;ptr : Pointer;&lt;br /&gt;就与C中的&lt;br /&gt;void *ptr;&lt;br /&gt;等价了。&lt;/p&gt;&#xD;
&lt;p&gt;三、指针的解除引用。要解除指针引用（即取出指针所指区域的值），C 的语法是 (*ptr)，Object Pascal则是 ptr^。&lt;/p&gt;&#xD;
&lt;p&gt;四、取地址（指针赋值）。取某对象的地址并将其赋值给指针变量，C 的语法是&lt;br /&gt;ptr = &amp;amp;Object;&lt;br /&gt;Object Pascal 则是&lt;br /&gt;ptr := @Object;&lt;br /&gt;也只是符号的差别而已。&lt;/p&gt;&#xD;
&lt;p&gt;五、指针运算。在C中，可以对指针进行移动的运算，如：&lt;br /&gt;char a[20];&lt;br /&gt;char *ptr=a;&lt;br /&gt;ptr++;&lt;br /&gt;ptr+=2;&lt;br /&gt;当执行ptr++;时，编译器会产生让ptr前进sizeof(char)步长的代码，之后，ptr将指向a[1]。ptr+=2;这句使得ptr前进两 个sizeof(char)大小的步长。同样，我们来看一下Object Pascal中如何实现：&lt;br /&gt;var&lt;br /&gt;a : array [1..20] of Char;&lt;br /&gt;ptr : PChar; //PChar 可以看作 ^Char&lt;br /&gt;begin&lt;br /&gt;ptr := @a;&lt;br /&gt;Inc(ptr); // 这句等价于 C 的 ptr++;&lt;br /&gt;Inc(ptr, 2); //这句等价于 C 的 ptr+=2;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;六、动态内存分配。C中，使用malloc()库函数分配内存，free()函数释放内存。如这样的代码：&lt;br /&gt;int *ptr, *ptr2;&lt;br /&gt;int i;&lt;br /&gt;ptr = (int*) malloc(sizeof(int) * 20);&lt;br /&gt;ptr2 = ptr;&lt;br /&gt;for (i=0; i&amp;lt;20; i++){&lt;br /&gt;*ptr = i;&lt;br /&gt;ptr++;&lt;br /&gt;}&lt;br /&gt;free(ptr2);&lt;br /&gt;Object Pascal 中，动态分配内存的函数是GetMem()，与之对应的释放函数为FreeMem()（传统Pascal中获取内存的函数是New() 和 Dispose()，但New()只能获得对象的单个实体的内存大小，无法取得连续的存放多个对象的内存块）。因此，与上面那段C的代码等价的 Object Pascal的代码为：&lt;br /&gt;var ptr, ptr2 : ^integer;&lt;br /&gt;i : integer;&lt;br /&gt;begin&lt;br /&gt;GetMem(ptr, sizeof(integer) * 20);&lt;br /&gt;//这句等价于C的 ptr = (int*) malloc(sizeof(int) * 20);&lt;br /&gt;ptr2 := ptr; //保留原始指针位置&lt;br /&gt;for i := 0 to 19 do&lt;br /&gt;begin&lt;br /&gt;ptr^ := i;&lt;br /&gt;Inc(ptr);&lt;br /&gt;end;&lt;br /&gt;FreeMem(ptr2);&lt;br /&gt;end;&lt;br /&gt;对于以上这个例子（无论是C版本的，还是Object Pascal版本的），都要注意一个问题，就是分配内存的单位是字节（BYTE），因此在使用 GetMem时，其第二个参数如果想当然的写成 20，那么就会出问题了（内存访问越界）。因为GetMem(ptr, 20);实际只分配了20个字节的内存空间，而一个整形的大小是四个字节，那么访问第五个之后的所有元素都是非法的了（对于malloc()的参数同 样）。&lt;/p&gt;&#xD;
&lt;p&gt;七、字符数组的运算。C语言中，是没有字符串类型的，因此，字符串都是用字符数组来实现，于是也有一套str打头的库函数以进行字符数组的运算，如以下代码：&lt;br /&gt;char str[15];&lt;br /&gt;char *pstr;&lt;br /&gt;strcpy(str, "teststr");&lt;br /&gt;strcat(str, "_testok");&lt;br /&gt;pstr = (char*) malloc(sizeof(char) * 15);&lt;br /&gt;strcpy(pstr, str);&lt;br /&gt;printf(pstr);&lt;br /&gt;free(pstr);&lt;br /&gt;而在Object Pascal中，有了String类型，因此可以很方便的对字符串进行各种运算。但是，有时我们的Pascal代码需要与C的代码交互（比如：用 Object Pascal的代码调用C写的DLL或者用Object Pascal写的DLL准备允许用C写客户端的代码）的话，就不能使用String类型了，而必须使用两种语言通用的字符数组。其实，Object Pascal提供了完全相似C的一整套字符数组的运算函数，以上那段代码的Object Pascal版本是这样的：&lt;br /&gt;var str : array [1..15] of char;&lt;br /&gt;pstr : PChar; //Pchar 也就是 ^Char&lt;br /&gt;begin&lt;br /&gt;StrCopy(@str, &amp;rsquo;teststr&amp;rsquo;); //在C中，数组的名称可以直接作为数组首地址指针来用&lt;br /&gt;//但Pascal不是这样的，因此 str前要加上取地址的运算符&lt;br /&gt;StrCat(@str, &amp;rsquo;_testok&amp;rsquo;);&lt;br /&gt;GetMem(pstr, sizeof(char) * 15);&lt;br /&gt;StrCopy(pstr, @str);&lt;br /&gt;Write(pstr);&lt;br /&gt;FreeMem(pstr);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;八、函数指针。在动态调用DLL中的函数时，就会用到函数指针。假设用C写的一段代码如下：&lt;br /&gt;typedef int (*PVFN)(int); //定义函数指针类型&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;HMODULE hModule = LoadLibrary("test.dll");&lt;br /&gt;PVFN pvfn = NULL;&lt;br /&gt;pvfn = (PVFN) GetProcAddress(hModule, "Function1");&lt;br /&gt;pvfn(2);&lt;br /&gt;FreeLibrary(hModule);&lt;br /&gt;}&lt;br /&gt;就我个人感觉来说，C语言中定义函数指针类型的typedef代码的语法有些晦涩，而同样的代码在Object Pascal中却非常易懂：&lt;br /&gt;type PVFN = Function (para : Integer) : Integer;&lt;br /&gt;var&lt;br /&gt;fn : PVFN;&lt;br /&gt;//也可以直接在此处定义，如：fn : function (para:Integer):Integer;&lt;br /&gt;hm : HMODULE;&lt;br /&gt;begin&lt;br /&gt;hm := LoadLibrary(&amp;rsquo;test.dll&amp;rsquo;);&lt;br /&gt;fn := GetProcAddress(hm, &amp;rsquo;Function1&amp;rsquo;);&lt;br /&gt;fn(2);&lt;br /&gt;FreeLibrary(hm);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;附：&lt;br /&gt;&amp;nbsp;KeyLife富翁笔记&lt;br /&gt;作者?: 陌生&lt;br /&gt;标题?: Delphi指针理解&lt;br /&gt;关键字: 指针&lt;br /&gt;分类?: 个人专区&lt;br /&gt;密级?: 公开&lt;br /&gt;**********************引用*************************&lt;br /&gt;Delphi中指针功能非常强大，所有c中能实现的指针Delphi中都能实现. 上面认为Delphi指针不是强项的只是一种误解(或者对指针的机制一知半解).&lt;br /&gt;由于Pascal语言的限制, 用Delphi的指针时很多情况下需要强制类型转换. Delphi中提供了很多指针类型, 而且非常方便的是你可以自定义自己的指针类型.&lt;br /&gt;一个经验: 要掌握一种数据类型并且能够灵活应用,一个比较好的办法是别考虑什么类型是什么名字, 而只需要考虑这种类型的变量将占用多少字节. 凡是字节数相同的类型都可以认为是同一类型 :-), 提供不同类型只是为了编译器能够更方便的查找错误而已. 比如: Integer, Pointer, PChar, TSmallPoint甚至 array [0..4] of Char&lt;br /&gt;你都可以把他们当成是同一类型加以使用(有了这种思路, 可以实现很大的程序灵活性和代码高效性). 所以我很不理解的是JAVA中不支持指针(因此我也认为用 JAVA绝对不可能写出很高效的程序, 而且会有很多C/C++/DELPHI中用一句话可以完成的工作在JAVA中需要用一个复杂过程, 消耗很多额外内存才能达到相同目的). 就事论事, 根据你的问题在Delphi中和C中的解决方案没什么两样.&lt;br /&gt;var&lt;br /&gt;&amp;nbsp; a: Pointer;&amp;nbsp;&amp;nbsp; // 或者任何其他指针类型&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; GetMem(a, 10); // 分配10字节&lt;br /&gt;&amp;nbsp; PInteger(a)^ := Integer(Form1);&amp;nbsp; // 将form1(其实Delphi中所有的类都可以认为是指针)&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;&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; // 保存到a[0..3]中&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;&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; // 这里是和C的区别, Delphi中需要进行指针类型转换,&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;&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; (PChar(a)+SizeOf(Integer))^ := &amp;rsquo;B&amp;rsquo;; // a[4]中保存一个字符&amp;rsquo;B&amp;rsquo;&lt;br /&gt;&amp;nbsp; ....&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763047.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763047.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763038.html</id><title type="text">摘录VeryCd09年度最佳资源评论</title><summary type="text">中国从来都不缺人才，缺的是滋养人才的土壤，缺的是对人才的包容，缺的是对人才的重视，缺的是对人才的尊重！十几亿人什么样的人才没有？什么样的人才培养不出来？可是万马齐喑究可哀，百年前如此，百年来如此，几千年历史大多如此，如今也未改过，老旧帝国的老年心态，官僚主义酱缸文化，年轻的人们不是爆发如流星一般消逝，就是隐居僻世远走他乡，人才是生产力是社会的根本，个人的能力再强，如果没有能量的不断供给也会枯萎凋谢...</summary><published>2010-06-22T16:16:00Z</published><updated>2010-06-22T16:16:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763038.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763038.html"/><content type="html">&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;中国从来都不缺人才，缺的是滋养人才的土壤，缺的是对人才的包容，缺的是对人才的重视，缺的是对人才的尊重！十几亿人什么样的人才没有？什么样的人才培养不出来？可是万马齐喑究可哀，百年前如此，百年来如此，几千年历史大多如此，如今也未改过，老旧帝国的老年心态，官僚主义酱缸文化，年轻的人们不是爆发如流星一般消逝，就是隐居僻世远走他乡，人才是生产力是社会的根本，个人的能力再强，如果没有能量的不断供给也会枯萎凋谢，数年磨一剑，感动我辈诸人，也感伤不已。。。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763038.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763038.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763037.html</id><title type="text">成功的道理</title><summary type="text">引自《上帝从不为难头脑简单的人》告诉年轻人，成功的秘诀在于勤奋和诚实，很多自以为聪明的年轻人瞪着狐疑的大眼睛：如果成功的秘诀这样容易，那不是人人都能成功吗？因此，他们断定：成功的秘诀一定是一些更加诡秘的东西，比如厚黑学。具有讽刺意义的是，走这条路的人还非常非常之多，这就是为什么成功的人会非常非常之少，阿甘的妈妈说得最精彩的话就是：只有做傻事的才是傻人。</summary><published>2010-06-22T16:15:00Z</published><updated>2010-06-22T16:15:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763037.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763037.html"/><content type="html">&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 16px; color: #555b6e; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;&#xD;
&lt;p style="line-height: normal;"&gt;引自《上帝从不为难头脑简单的人》&lt;/p&gt;&#xD;
&lt;p style="line-height: normal;"&gt;告诉年轻人，成功的秘诀在于勤奋和诚实，&lt;/p&gt;&#xD;
&lt;p style="line-height: normal;"&gt;很多自以为聪明的年轻人瞪着狐疑的大眼睛：如果成功的秘诀这样容易，那不是人人都能成功吗？&lt;/p&gt;&#xD;
&lt;p style="line-height: normal;"&gt;因此，他们断定：成功的秘诀一定是一些更加诡秘的东西，比如厚黑学。具有讽刺意义的是，走这条路的人还非常非常之多，这就是为什么成功的人会非常非常之少，阿甘的妈妈说得最精彩的话就是：只有做傻事的才是傻人。&lt;/p&gt;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763037.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763037.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763032.html</id><title type="text">DBGrid中怎样禁止按向下箭头或Tab键就新增一行的功能</title><summary type="text">其实我也为此问题困扰很久，后来终于想到一个办法。也只是想暂时用用此法，于是发布出来，相信朋友们有更好的方法，[代码]希望能够指点一二。其实很简单，关键在于想到没。朋友们还有其它方法的，希望留言一起讨论。</summary><published>2010-06-22T16:09:00Z</published><updated>2010-06-22T16:09:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763032.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763032.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;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt; test;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Key&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;40&lt;/span&gt;&lt;span style="color: #000000;"&gt; ) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;or&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Key&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;VK_TAB) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;then&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　　　&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; adoquery1.Eof &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;then&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　　　&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　　　　　Key :&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　　　&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: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;　　&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: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;nbsp;&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;/pre&gt;&#xD;
&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;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763032.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763032.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763030.html</id><title type="text">笔画输入法6.8豪华版 破解版</title><summary type="text">发布此版本纯属技术充流！今后不会再对此软件进行破解！您在使用中已无条件接受了作者对软件的相关约定！请严格遵守！本人不承担任何责任！说来好笑，作者上个版本使用了Anti Debug技术(ps:通杀了我的调试工具，也不知道使用的是哪位牛人的代码。)+ dll验证注册过程 + 重启注册表验证。这回全然不顾软件的运行效率，使用了VmProtect + 重启注册表验证，VmProtect具体哪个版本不知道，...</summary><published>2010-06-22T16:05:00Z</published><updated>2010-06-22T16:05:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763030.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763030.html"/><content type="html">&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 16px; color: #555b6e; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;发布此版本纯属技术充流！今后不会再对此软件进行破解！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;您在使用中已无条件接受了作者对软件的相关约定！请严格遵守！本人不承担任何责任！&lt;br style="line-height: normal;" /&gt;&lt;br style="line-height: normal;" /&gt;说来好笑，作者上个版本使用了Anti Debug技术(ps:通杀了我的调试工具，也不知道使用的是哪位牛人的代码。)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;+ dll验证注册过程 + 重启注册表验证。这回全然不顾软件的运行效率，使用了VmProtect + 重启注册表验证，VmProtect具体哪个版本不知道，代码我没有好好调试，况且即使认真调试了凭我的能力也无法将其还原，&lt;br style="line-height: normal;" /&gt;Vm虽不易还原，并不能代表其不可破解！再次声明：不欢迎任何人下载使用！本人纯属自我娱乐！&lt;br style="line-height: normal;" /&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;&lt;br style="line-height: normal;" /&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; -------阿强&lt;br style="line-height: normal;" /&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; 2009-12-04&lt;br style="line-height: normal;" /&gt;=================================================================================&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p  align="left"&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="line-height: normal;" &gt;笔画输入法功能特色：&lt;/span&gt;&lt;/strong&gt;&lt;br style="line-height: normal;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small; line-height: normal;"&gt;&lt;span style="font-size: 10pt; line-height: normal;"&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;★&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;无需懂拼音，无需学五笔，只要会手机发信息就会电脑打字！&lt;br style="line-height: normal;" /&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;★&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;鼠标键盘随意用，全能轻松玩输入！&lt;br style="line-height: normal;" /&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;★&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;独创笔画定偏旁专利技术，输入效率大提速！&lt;br style="line-height: normal;" /&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;★&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;首创交互界面荧屏显示，无需记忆繁琐字根和编码！&lt;br style="line-height: normal;" /&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;★&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;独具词汇智能精确联想方案，如虎添翼！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;功能最完善，最简易，快速的笔画输入法6.8豪华版动画演示&lt;/p&gt;&#xD;
&lt;p&gt;例如综合输入汉字和标点：&amp;ldquo;&lt;span style="line-height: normal;" &gt;&lt;span style="color: #ff00ff; line-height: normal;"&gt;&lt;strong style="line-height: normal;"&gt;亲爱的：为了我们的将来，您要加倍努力啊&lt;/strong&gt;！&lt;/span&gt;&lt;/span&gt;&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;&lt;a target="_blank" href="http://www.bhsrf.com/images/bh68.gif" style="font-weight: normal; font-size: 12px; color: #004f61; line-height: normal; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none;"&gt;&lt;img www="www" fakesize="1" orgsrc="http://www.bhsrf.com/images/bh68.gif" width="48" src="http://www.bhsrf.com/images/bh68.gif" height="48" style="background-position: 0% 0%; background-attachment: scroll; background-image: none; width: 465px; line-height: normal; height: 262px; background-color: transparent; background-origin: initial; background-clip: initial;" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;&lt;span style="color: #000099; line-height: normal;"&gt;&lt;span style="color: #000099; line-height: normal;"&gt;笔画输入法6.8豪华发布 点击下载&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;&lt;a target="_blank" href="http://www.bhsrf.com/bihuashurufaxiazai.htm" style="font-weight: normal; font-size: 12px; color: #004f61; line-height: normal; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none;"&gt;&lt;span style="color: #000099; line-height: normal;"&gt;》》点击进入更多的下载点高速下载》》&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;&lt;a target="_blank" href="http://www.bhsrf.com/images/bh68.gif" style="font-weight: normal; font-size: 12px; color: #004f61; line-height: normal; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none;"&gt;&lt;img www="www" fakesize="1" orgsrc="http://www.bhsrf.com/images/bh68.gif" width="48" src="http://www.bhsrf.com/images/bh68.gif" height="48" style="background-position: 0% 0%; background-attachment: scroll; background-image: none; width: 465px; line-height: normal; height: 262px; background-color: transparent; background-origin: initial; background-clip: initial;" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p  align="center"&gt;笔画输入法6.8豪华输入框界面图&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;打字规则：&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong style="line-height: normal;"&gt;&lt;br style="line-height: normal;" /&gt;&lt;/strong&gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;按照汉字书写顺序，采用笔画找偏旁，先定位偏旁，用偏旁再找汉字。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: large; color: #ff0000; line-height: normal;"&gt;&lt;span style="font-size: 14pt; line-height: normal;"&gt;1、入门简易式：&lt;br style="line-height: normal;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: small; line-height: normal;"&gt;&lt;span style="font-size: 10pt; line-height: normal;"&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="line-height: normal;" &gt;小键盘的12345分别对应汉字的五个基本笔画横竖撇点折（一丨丿丶乙）输入方式，大键盘的1234567890数字键选字。&lt;br style="line-height: normal;" /&gt;&lt;strong style="line-height: normal;"&gt;简单的汉字&lt;/strong&gt;举例：&amp;ldquo;一&amp;rdquo;=1；&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&amp;ldquo;二&amp;rdquo;=11；&amp;ldquo;三&amp;rdquo;=111；&amp;ldquo;十&amp;rdquo;=12；&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;ldquo;人&amp;rdquo;&lt;span style="font-size: small; line-height: normal;"&gt;&lt;span style="font-size: 10pt; line-height: normal;"&gt;&lt;span style="line-height: normal;" &gt;=34；&amp;ldquo;木&amp;rdquo;=1234；&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&amp;ldquo;札&amp;rdquo;=12345；&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: large; line-height: normal;"&gt;&lt;span style="font-size: 14pt; line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;&lt;span style="line-height: normal;" &gt;2、高级快速打字：&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;复杂而且笔画较多的汉字&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;&lt;strong style="line-height: normal;"&gt;举例说明：（积木原理打字，第一步打笔画；第二步打偏旁，第3步选汉字）&lt;br style="line-height: normal;" /&gt;&lt;/strong&gt;1．偏旁加笔画：&amp;nbsp;&amp;nbsp; 积=&amp;nbsp;&amp;nbsp; 丿&amp;rarr;禾&amp;rarr;积&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;编码&lt;/span&gt;&lt;/span&gt;：丿(3)&amp;rarr;禾（b）=积(4)&lt;br style="line-height: normal;" /&gt;2．单笔画找偏旁：辈=&amp;nbsp;&amp;nbsp; 丨&amp;rarr;非&amp;rarr;辈&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;编码&lt;/span&gt;&lt;/span&gt;：丨(2)&amp;rarr;非（i）=辈(3)&lt;br style="line-height: normal;" /&gt;3．偏旁联想偏旁：麟=&amp;nbsp;&amp;nbsp; 丶&amp;rarr;广&amp;rarr;鹿&amp;rarr;麟&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;编码&lt;/span&gt;&lt;/span&gt;：丶(4)&amp;rarr;广（c）&amp;rarr;鹿(y)=麟(9)&lt;br style="line-height: normal;" /&gt;4．偏旁加偏旁：&amp;nbsp;&amp;nbsp; 藏=&amp;nbsp;&amp;nbsp; 一&amp;rarr;艹&amp;rarr;厂=&amp;rarr;藏&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;编码&lt;/span&gt;&lt;/span&gt;：一(1)&amp;rarr;艹（x）厂（e）=藏(1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: large; color: #ff0000; line-height: normal;"&gt;&lt;span style="font-size: 14pt; line-height: normal;"&gt;3、直观高速打字：（只用鼠标就能打字）&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;1．偏旁加笔画：&amp;nbsp;&amp;nbsp; 积=&amp;nbsp;&amp;nbsp; 丿&amp;rarr;禾&amp;rarr;积&lt;br style="line-height: normal;" /&gt;2．单笔画找偏旁：辈=&amp;nbsp;&amp;nbsp; 丨&amp;rarr;非&amp;rarr;辈&lt;br style="line-height: normal;" /&gt;3．偏旁联想偏旁：麟=&amp;nbsp;&amp;nbsp; 丶&amp;rarr;广&amp;rarr;鹿&amp;rarr;麟&lt;br style="line-height: normal;" /&gt;4．偏旁加偏旁：&amp;nbsp;&amp;nbsp; 藏=&amp;nbsp;&amp;nbsp; 一&amp;rarr;艹&amp;rarr;厂=&amp;rarr;藏&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p &gt;功能：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: xx-large; line-height: normal;"&gt;&lt;span style="font-size: 24pt; line-height: normal;"&gt;1、造词：&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: large; line-height: normal;"&gt;&lt;span style="font-size: 14pt; line-height: normal;"&gt;输入该词的第一个汉字即能打出整句。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: medium; line-height: normal;"&gt;&lt;span style="font-size: 12pt; line-height: normal;"&gt;用鼠标选中该词，复制一次（Crtl+c），下次只要&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: x-large; line-height: normal;"&gt;&lt;span style="font-size: 18pt; line-height: normal;"&gt;2、支持繁体汉字（GBK）汉字输出：卐卍叏鎔為龍&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong style="line-height: normal;"&gt;笔画输入法操作示例：&lt;/strong&gt;&lt;br style="line-height: normal;" /&gt;&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: small; line-height: normal;"&gt;&lt;span style="font-size: 10pt; line-height: normal;"&gt;我=丿&amp;rarr;我； 爱=丿&amp;rarr;爫&amp;rarr;爱； 您=丿&amp;rarr;亻+丿&amp;rarr;您； 积=丿&amp;rarr;禾+丨&amp;rarr;积； 粥=乙&amp;rarr;弓&amp;rarr;粥； 鬻=乙&amp;rarr;弓+丶&amp;rarr;鬻&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="line-height: normal;" &gt;&lt;strong style="line-height: normal;"&gt;&lt;span style="font-size: large; line-height: normal;"&gt;&lt;span style="font-size: 14pt; line-height: normal;"&gt;下面随意一段话输入示例&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;：&lt;span style="line-height: normal;" &gt;&lt;span style="font-size: small; line-height: normal;"&gt;&lt;span style="font-size: 10pt; line-height: normal;"&gt;&amp;ldquo;&lt;strong style="line-height: normal;"&gt;积木笔画输入法，鼠标键盘可打字，简单吗？实践是检验真理的唯一标准&lt;/strong&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 18pt; color: #ff0000; line-height: normal;"&gt;&lt;strong style="line-height: normal;"&gt;点击再破解文件下载回本地后，打开笔画输入法的安装目录后，将下回的文件覆盖(剪切后粘贴到安装目录下)即可。&lt;/strong&gt;&lt;/span&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;span style="font-size: xx-large; line-height: normal;"&gt;&lt;span style="font-size: 24pt; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;a target="_blank" href="http://www.brsbox.com/filebox/down/fc/fe4f54418f8aee97bed3ae6a425ba2b9" style="font-weight: normal; font-size: 12px; color: #004f61; line-height: normal; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none;"&gt;&lt;span style="font-size: xx-large; line-height: normal;"&gt;&lt;span style="color: #ff0000; line-height: normal;"&gt;&lt;span style="font-size: 24pt; line-height: normal;"&gt;破解文件下载&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763030.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763030.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/www2/archive/2010/06/23/1763028.html</id><title type="text">迁移SQL数据库五招(转)</title><summary type="text">我是一家图书公司的数据库管理员，要维护多台服务器中的数据库，经常把某台服务器中的某个数据库移动到另外一台服务器，有时候也从其它分部拖数据到总公司，因此对数据移动有些心得体会，在这里拿出来同大家交流一下，如有不足之处请大家多多指教。 DTS设计器导入导出 DTS的设计器功能强大，支持多任务，也是可视化界面，容易操作，但知道的人一般不多，如果只是进行SQL Server数据库中部分表的移动，用这种方法...</summary><published>2010-06-22T16:01:00Z</published><updated>2010-06-22T16:01:00Z</updated><author><name>永乐居士</name><uri>http://www.cnblogs.com/www2/</uri></author><link rel="alternate" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763028.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/www2/archive/2010/06/23/1763028.html"/><content type="html">&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;我是一家图书公司的数据库管理员，要维护多台服务器中的数据库，经常把某台服务器中的某个数据库移动到另外一台服务器，有时候也从其它分部拖数据到总公司，因此对数据移动有些心得体会，在这里拿出来同大家交流一下，如有不足之处请大家多多指教。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;DTS设计器导入导出 DTS的设计器功能强大，支持多任务，也是可视化界面，容易操作，但知道的人一般不多，如果只是进行SQL Server数据库中部分表的移动，用这种方法最好，当然，也可以进行全部表的移动。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;在SQL Server Enterprise Manager中，展开服务器左边的+，选择数据库，右击，选择All tasks/Import Data...(或All tasks/Export Data...)，进入向导模式，按提示一步一步走就行了，里面分得很细，可以灵活的在不同数据源之间复制数据，很方便的。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;而且可以另存成DTS包，如果以后还有相同的复制任务，直接运行DTS包就行，省时省力。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;也可以直接打开DTS设计器，方法是展开服务器名称下面的Data Transformation Services，选Local Packages，在右边的窗口中右击，选New Package，就打开了DTS设计器。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;值得注意的是：如果源数据库要拷贝的表有外键，注意移动的顺序，有时要分批移动，否则外键主键，索引可能丢失，移动的时候选项旁边的提示说的很明白，或者一次性的复制到目标数据库中，再重新建立外键，主键，索引。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;利用备份和恢复 先对源数据库进行完全备份，备份到一个设备（device）上，然后把备份文件复制到目的服务器上（恢复的速度快），进行数据库的恢复操作，在恢复的数据库名中填上源数据库的名字（名字必须相同），选择强制型恢复（可以覆盖以前数据库的选项），再选择从设备中进行恢复，浏览时选中备份的文件就行了。这种方法可以完全恢复数据库，包括外键，主键，索引。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;直接拷贝数据文件 把数据库的数据文件（*.mdf）和日志文件（*.ldf）都拷贝到目的服务器，在SQL Server Query Analyzer中用语句进行恢复: EXEC sp_attach_db @dbname = 'test', @filename1 = 'd:mssql7datatest_data.mdf', @filename2 = 'd:mssql7datatest_log.ldf' 这样就把test数据库附加到SQL Server中，可以照常使用。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;如果不想用原来的日志文件，可以用如下的命令： EXEC sp_detach_db @dbname = 'test' EXEC sp_attach_single_file_db @dbname = 'test', @physname = 'd:mssql7datatest_data.mdf' 这个语句的作用是仅仅加载数据文件，日志文件可以由SQL Server数据库自动添加，但是原来的日志文件中记录的数据就丢失了。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;在应用程序中定制 可以在应用程序（PB、VB）中执行自己编写的程序，也可以在Query Analyzer中执行，这种方法比较灵活，其实是利用一个平台连接到数据库，在平台中用的主要是SQL语句，这种方法对数据库的影响小，但是如果用到远程链接服务器，要求网络之间的传输性能好，一般有两种语句： 1&amp;gt; select ... into new_tablename where ... 2&amp;gt; insert (into) old_tablename select ... from ... where ... 区别是前者把数据插入一个新表（先建立表，再插入数据），后者是把数据插入已经存在的一个表中，我个人喜欢后者，因为在编程的结构上，应用的范围上，第二条语句强于前者。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;SQL Server的复制功能 SQL Server提供了强大的数据复制功能，也是最不易掌握的，具体应用请参考相关资料，值得注意的是要想成功进行数据的复制工作，有些条件是必不可少的： &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;1）SQL Server Agent必须启动，MSDTC必须启动。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;2）所有要复制的表必须有主键。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;3）如果表中有text或image数据类型，必须使用with log选项，不能使用with no_log选项。 另外max text repl size选项控制可以复制的文本和图像数据的最大规模，超过这个限制的操作将失败。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;4）在要进行复制的计算机上，应该至少是隐含共享，即共享名是a1、b1&amp;hellip;。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px;" &gt;&lt;span style="font-size: 12px; color: #555b6e; line-height: 18px; font-family: Arial; webkit-border-horizontal-spacing: 2px; webkit-border-vertical-spacing: 2px;" &gt;5）为SQL Server代理使用的Windows Server账号不能是一个本地的系统账号，因为本地的系统账号不允许网络存取。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/www2/aggbug/1763028.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/www2/archive/2010/06/23/1763028.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
