笑傲人生大舞台 發表於 2020-12-24 23:32:00

Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结

<div><span class="tcnt"><span class="tcnt">这两天把一个使用Delphi2007成功升级到了Delphi2010。升级途中很艰辛,总结了 以下经验与大家分享。另外,D7使用的第三方组件,由于官方没有发布For Delphi2010的更新,修改的第三 方组件列表见文章尾部。<br><br>1,PChar<br>因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指针指向目标并不是PAnsiChar。<br><br>考虑如下代码:<br><br></span></span>
<p><span class="kwd">var
<span class="pln">&nbsp;&nbsp; P<span class="pun">:<span class="typ">PChar<span class="pun">;
<span class="pln">&nbsp;&nbsp; <span class="typ">Buffer<span class="pun">:<span class="typ">Pointer<span class="pun">;
<span class="kwd">begin
<span class="pln">&nbsp;&nbsp; <span class="typ">GetMem<span class="pun">(<span class="typ">Buffer<span class="pun">,<span class="lit">255<span class="pun">);
<span class="pln">&nbsp;&nbsp; P<span class="pun">:=<span class="typ">Buffer<span class="pun">;
<span class="pln">&nbsp;&nbsp; p<span class="pun">^:=<span class="com">#1;
<span class="pln">&nbsp;&nbsp; <span class="typ">Inc<span class="pun">(<span class="pln">P<span class="pun">);
<span class="pln">&nbsp;&nbsp; p<span class="pun">^:=<span class="com">#2;
<span class="pln">&nbsp;&nbsp; <span class="typ">FreeMem<span class="pun">(<span class="typ">Buffer<span class="pun">,<span class="lit">255<span class="pun">);
<span class="kwd">end<span class="pun">;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>

<span class="tcnt"><span class="tcnt"><br><br>在2010中PChar已经不再表示PAnsiChar而是表示PWideChar,如果依然这样写,运行时很可能会得到一个内存访问错误。因为每 次Inc(P),实际上指针向前移动了2字节,因为SizeOf(WideChar)=2,Inc(P)相当于 P:=P+SizeOf(WideChar)。&nbsp;<br><br>解决方法是把PChar替换成PAnsiChar&nbsp;<br><br><br><br>2,Move FillChar CopyMemory&nbsp;<br>这些函数依赖的是字节长度,往往我们直接使用Length(Str)来获取,这是行不通的。&nbsp;<br><br>考虑如下代码:&nbsp;<br><br></span></span>
<p><span class="kwd">var
<span class="pln">&nbsp;&nbsp; P1<span class="pun">,<span class="pln">P2<span class="pun">:<span class="typ">String<span class="pun">;
<span class="kwd">begin
<span class="pln">&nbsp;&nbsp; P1<span class="pun">:=<span class="str">'test'<span class="pun">;
<span class="pln">&nbsp;&nbsp; <span class="typ">SetLength<span class="pun">(<span class="pln">P2<span class="pun">,<span class="typ">Length<span class="pun">(<span class="pln">P1<span class="pun">));
<span class="pln">&nbsp;&nbsp; <span class="typ">Move<span class="pun">(<span class="pln">P1<span class="pun">[<span class="lit">1<span class="pun">],<span class="pln">P2<span class="pun">[<span class="lit">1<span class="pun">],<span class="typ">Length<span class="pun">(<span class="pln">P1<span class="pun">));</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span class="kwd">end
</span></p>

<span class="tcnt"><br>在2010中String默认映射到UnicodeString,单个字符是2字节,所以上文中P1实际占用了8字节内存,而传给Move函数的长 度只有4字节,最终结果是P2="te"。&nbsp;<br><br>解决办法1:&nbsp;<br><br>修改String为AnsiString,该方案虽然可行,但你的程序就享受不到Unicode待遇了。&nbsp;<br><br>解决办法2:&nbsp;<br><br>SetLength 函数不要修改,因为他的长度参数是字符长度,而不是字节长度。&nbsp;<br><br>Move函数的最后一个参数 Length(P1) 修改成 Length(P1)*SizeOf(Char)。&nbsp;<br><br>注意:不要偷懒使用万一老师说的ByteLength函数,该函数并没有For AnsiString的重载,编译器会 把参数隐式转化为UnicodeString然后,ByteLength函数计算UnicodeString的长度。例如:一旦你不小心传入了一个 AnsiString类型长度为4的字符串,函数会返回8,而不是你期望的长度4。&nbsp;<br><br><br><br>3,Key in ['a'..'z','B','C']&nbsp;<br>这类代码最好替换成CharInSet(Key,['a'..'z','B','C']) 不然会当作AnsiChar处理。&nbsp;<br><br><br><br>4,WideString&nbsp;<br>代码中的所有WideString都考虑替换成String,现在 WideString只是为了与COM兼容而存在,且没有引用计数,性能低下。&nbsp;<br><br><br><br>5,Tnt控件&nbsp;<br>如果你的工程使用了Tnt控件或以前的WideTextPos WideStringReplace之类的东西都替换成标准的吧,不用曲线救国了。<br><br>---------经过修改,可以在Delphi2010下运作的第三方组件--------------&nbsp;<br><br><br>1,PNGDelphi&nbsp;<br><br>2,EmbeddedWB&nbsp;<br><br>3,SynEdit的语法高亮组件 unihighlighter&nbsp;<br><br>4,JEDI Win32API Header&nbsp;<br><br><br><br>这些组件现在可以在Delphi2010下运作了。&nbsp;<br><br>6,引用AnsiStrings单元&nbsp;<br>如果你有必要使用 AnsiLowerCase AnsiCompareStr之类的函数,一定要引用AnsiStrings单元。&nbsp;<br><br>如果你不引用该单元,即便编译不报错,你实际上是用的还是Unicode版本的函数,会有隐式的转化。不信你打开参数自动完成,看看IDE提示给你的类型是什么?天啊AnsiLowerCase参数竟然还是String,而不是AnsiString。看来Delphi2010太迫切的要抛弃Ansi字符串了,以至于你不引用AnsiStrings单元,所有Ansixxxx函数实际上还是Unicode版本。&nbsp;<br><br><br><br>7,AnsiCopy AnsiPos AnsiDelete&nbsp;<br>不要用AnsiCopy AnsiPos AnsiDelete,因为Copy Pos Delete三个函数已经有了For Ansi的重载。&nbsp;<br><br><br><br>8,把Char转化为小写用什么? &nbsp;&nbsp;<br>答案:试试看Character单元的新函数 ToUpper ToLower。以前我都是用System里面的UpCase函数,现在依然可用不过却找不到LowCase DownCase之类的函数,困扰我好久好久。索性全使用Character单元提供的新函数吧。&nbsp;<br><br><br><br>9,编译期警告: Unit1.pas(31): W1057 Implicit string cast from 'AnsiString' to 'string'&nbsp;<br>如果你的代码中包含了两种字符串(Unicode、Ansi)之间进行隐式转化的时候就会出现该提示。&nbsp;<br><br>如下代码就会触发该警告:&nbsp;<br><br><br><br>var Unicode:String; Ansi:AnsiString; begin Ansi:='test..'; Unicode:=Ansi;&nbsp;<br><br><br>把旧版本的Delphi项目升级到2010,我通常都是借助编译警告来快速寻找需要改动的部分。通常你可以把赋值双方都声明为String(默认影射到UnicodeString),就可以避免该警告。但如果你确定必须在此处保留Ansi并进行转化的时候,建议你显式的转化他们(例如:Unicode:=String(Ansi);),这样可以避免该警告,方便你在升级过程中继续寻找其他需要修改的地方。&nbsp;<br><br><br><br>10,Readln Writeln 写入文件时候要注意&nbsp;<br>如果你传给Writeln一个AnsiString,那么它也会在文件中写入AnsiString,那么你读取得时候就必须传给Readln一个AnsiString的类型,否则就是乱码。例如旧工程的配置文件是Ansi的,而你已经把相关读取配置的代码升级为支持Unicode,那么运行工程前你首先要用记事本之类的工具把配置文件另存为成Unicode编码。当然你还要注意跳过Unicode文件头的两个字节FE FF。&nbsp;<br><br><br><br>11,别再用String来操作二进制数据了&nbsp;<br>一定要记住String只是字符串,不要把它当作缓冲区、内存流使用。我的项目中,有很多地方是使用字符串来处理二进制数据,导致在本次升级中颇为费脑。如果当时用TBytes或TStream就好了。&nbsp;<br><br>反面教材:&nbsp;<br><br>var Int1,Int2,Int3,Int4:Integer; Buf:String; begin SetLength(Buf,12); Move(Int1,Buf,SizeOf(Integer)); Move(Int1,Buf,SizeOf(Integer)); Move(Int1,Buf,SizeOf(Integer)); Buf:=Buf+'前面有3个Integer。';&nbsp;<br><br><br>12,还是PChar&nbsp;<br>注意在2010中是这样的:&nbsp;<br><br>PChar= Pointer to a WideChar array;&nbsp;<br><br>PAnsiChar = Pointer to a AnsiChar array;&nbsp;<br><br>如果你还像是在Delphi 7中那样:PChar(AnsiString)那后果过是很严重的。&nbsp;<br><br></span></div>
<div><span class="tcnt">&nbsp;</span></div>
<div><span class="tcnt">&nbsp;</span></div>
<div>一段转换例子</div>
<div>D7</div>
<div>
<div class="line number1 index0 alt2">
<code class="delphi keyword">unit</code>&nbsp;
<code class="delphi plain">ReCode;</code>
</div>
<div class="line number2 index1 alt1">
   &nbsp;
</div>
<div class="line number3 index2 alt2">
<code class="delphi keyword">interface</code>
</div>
<div class="line number4 index3 alt1">
<code class="delphi keyword">uses</code>
</div>
<div class="line number5 index4 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,</code>
</div>
<div class="line number6 index5 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Dialogs;</code>
</div>
<div class="line number7 index6 alt2">
   &nbsp;
</div>
<div class="line number8 index7 alt1">
   &nbsp;
</div>
<div class="line number9 index8 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JiaMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number10 index9 alt1">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JieMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number11 index10 alt2">
   &nbsp;
</div>
<div class="line number12 index11 alt1">
   &nbsp;
</div>
<div class="line number13 index12 alt2">
<code class="delphi keyword">implementation</code>
</div>
<div class="line number14 index13 alt1">
   &nbsp;
</div>
<div class="line number15 index14 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JiaMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number16 index15 alt1">
<code class="delphi keyword">var</code>
</div>
<div class="line number17 index16 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number18 index17 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number19 index18 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number20 index19 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest&nbsp;:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number21 index20 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number22 index21 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number23 index22 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number24 index23 alt1">
<code class="delphi keyword">begin</code>
</div>
<div class="line number25 index24 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen:=Length(Key);</code>
</div>
<div class="line number26 index25 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number27 index26 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number28 index27 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Randomize;</code>
</div>
<div class="line number29 index28 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=Random(Range);</code>
</div>
<div class="line number30 index29 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest:=format(</code>
<code class="delphi string">'%1.2x'</code>
<code class="delphi plain">,);</code>
</div>
<div class="line number31 index30 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">for</code>&nbsp;
<code class="delphi plain">SrcPos&nbsp;:=&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">to</code>&nbsp;
<code class="delphi plain">Length(Src)&nbsp;</code>
<code class="delphi keyword">do</code>
</div>
<div class="line number32 index31 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">begin</code>
</div>
<div class="line number33 index32 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=(Ord(Src)&nbsp;+&nbsp;offset)&nbsp;</code>
<code class="delphi keyword">MOD</code>&nbsp;
<code class="delphi value">255</code>
<code class="delphi plain">;</code>
</div>
<div class="line number34 index33 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;&lt;&nbsp;KeyLen&nbsp;</code>
<code class="delphi keyword">then</code>&nbsp;
<code class="delphi plain">KeyPos:=&nbsp;KeyPos&nbsp;+&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">else</code>&nbsp;
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number35 index34 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=&nbsp;SrcAsc&nbsp;</code>
<code class="delphi keyword">xor</code>&nbsp;
<code class="delphi plain">Ord(Key);</code>
</div>
<div class="line number36 index35 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">dest:=dest&nbsp;+&nbsp;format(</code>
<code class="delphi string">'%1.2x'</code>
<code class="delphi plain">,);</code>
</div>
<div class="line number37 index36 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=SrcAsc;</code>
</div>
<div class="line number38 index37 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number39 index38 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Result:=Dest;</code>
</div>
<div class="line number40 index39 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number41 index40 alt2">
   &nbsp;
</div>
<div class="line number42 index41 alt1">
<code class="delphi comments">//解密函数</code>
</div>
<div class="line number43 index42 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JieMi&nbsp;(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number44 index43 alt1">
<code class="delphi keyword">var</code>
</div>
<div class="line number45 index44 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number46 index45 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number47 index46 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number48 index47 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest&nbsp;:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number49 index48 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number50 index49 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number51 index50 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number52 index51 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number53 index52 alt2">
<code class="delphi keyword">begin</code>
</div>
<div class="line number54 index53 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen:=Length(Key);</code>
</div>
<div class="line number55 index54 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyLen&nbsp;=&nbsp;</code>
<code class="delphi value">0</code>&nbsp;
<code class="delphi keyword">then</code>&nbsp;
<code class="delphi plain">key:=</code>
<code class="delphi string">'starlin'</code>
<code class="delphi plain">;</code>
</div>
<div class="line number56 index55 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number57 index56 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number58 index57 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number59 index58 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number60 index59 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=StrToInt(</code>
<code class="delphi string">'$'</code>
<code class="delphi plain">+&nbsp;copy(src,</code>
<code class="delphi value">1</code>
<code class="delphi plain">,</code>
<code class="delphi value">2</code>
<code class="delphi plain">));</code>
</div>
<div class="line number61 index60 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=</code>
<code class="delphi value">3</code>
<code class="delphi plain">;</code>
</div>
<div class="line number62 index61 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">repeat</code>
</div>
<div class="line number63 index62 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">try</code>
</div>
<div class="line number64 index63 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=StrToInt(</code>
<code class="delphi string">'$'</code>
<code class="delphi plain">+&nbsp;copy(src,SrcPos,</code>
<code class="delphi value">2</code>
<code class="delphi plain">));</code>
</div>
<div class="line number65 index64 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">except</code>
</div>
<div class="line number66 index65 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=StrToInt(</code>
<code class="delphi string">'$00'</code>
<code class="delphi plain">);</code>
</div>
<div class="line number67 index66 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number68 index67 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;&lt;&nbsp;KeyLen&nbsp;</code>
<code class="delphi keyword">Then</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;:=&nbsp;KeyPos&nbsp;+&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">else</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;:=&nbsp;</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number69 index68 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;SrcAsc&nbsp;</code>
<code class="delphi keyword">xor</code>&nbsp;
<code class="delphi plain">Ord(Key);</code>
</div>
<div class="line number70 index69 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">TmpSrcAsc&nbsp;&lt;=&nbsp;offset&nbsp;</code>
<code class="delphi keyword">then</code>
</div>
<div class="line number71 index70 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;</code>
<code class="delphi value">255</code>&nbsp;
<code class="delphi plain">+&nbsp;TmpSrcAsc&nbsp;-&nbsp;offset</code>
</div>
<div class="line number72 index71 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">else</code>
</div>
<div class="line number73 index72 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;TmpSrcAsc&nbsp;-&nbsp;offset;</code>
</div>
<div class="line number74 index73 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">dest&nbsp;:=&nbsp;dest&nbsp;+&nbsp;chr(TmpSrcAsc);</code>
</div>
<div class="line number75 index74 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=srcAsc;</code>
</div>
<div class="line number76 index75 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=SrcPos&nbsp;+&nbsp;</code>
<code class="delphi value">2</code>
<code class="delphi plain">;</code>
</div>
<div class="line number77 index76 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">until</code>&nbsp;
<code class="delphi plain">SrcPos&nbsp;&gt;=&nbsp;Length(Src);</code>
</div>
<div class="line number78 index77 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Result:=Dest;</code>
</div>
<div class="line number79 index78 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Result:=Copy(Result,</code>
<code class="delphi value">1</code>
<code class="delphi plain">,Length(Result)-</code>
<code class="delphi value">1</code>
<code class="delphi plain">);</code>
</div>
<div class="line number80 index79 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number81 index80 alt2">
   &nbsp;
</div>
<div class="line number82 index81 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">.</code>
</div>

</div>
<div>XE5</div>
<div>&nbsp;</div>
<div>
<div class="line number1 index0 alt2">
<code class="delphi keyword">unit</code>&nbsp;
<code class="delphi plain">ReCode;</code>
</div>
<div class="line number2 index1 alt1">
   &nbsp;
</div>
<div class="line number3 index2 alt2">
<code class="delphi keyword">interface</code>
</div>
<div class="line number4 index3 alt1">
<code class="delphi keyword">uses</code>
</div>
<div class="line number5 index4 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,</code>
</div>
<div class="line number6 index5 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Dialogs,AnsiStrings;</code>
</div>
<div class="line number7 index6 alt2">
   &nbsp;
</div>
<div class="line number8 index7 alt1">
   &nbsp;
</div>
<div class="line number9 index8 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JiaMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number10 index9 alt1">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JieMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number11 index10 alt2">
   &nbsp;
</div>
<div class="line number12 index11 alt1">
   &nbsp;
</div>
<div class="line number13 index12 alt2">
<code class="delphi keyword">implementation</code>
</div>
<div class="line number14 index13 alt1">
   &nbsp;
</div>
<div class="line number15 index14 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JiaMi(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number16 index15 alt1">
<code class="delphi keyword">var</code>
</div>
<div class="line number17 index16 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number18 index17 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number19 index18 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number20 index19 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest&nbsp;:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number21 index20 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number22 index21 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number23 index22 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number24 index23 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">IntTemp:</code>
<code class="delphi keyword">integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number25 index24 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAnsi:</code>
<code class="delphi keyword">PAnsiChar</code>
<code class="delphi plain">;</code>
</div>
<div class="line number26 index25 alt1">
<code class="delphi keyword">begin</code>
</div>
<div class="line number27 index26 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen:=Length(Key);</code>
</div>
<div class="line number28 index27 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number29 index28 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number30 index29 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Randomize;</code>
</div>
<div class="line number31 index30 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=Random(Range);</code>
</div>
<div class="line number32 index31 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest:=format(</code>
<code class="delphi string">'%1.2x'</code>
<code class="delphi plain">,);</code>
</div>
<div class="line number33 index32 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAnsi:=</code>
<code class="delphi keyword">PAnsiChar</code>
<code class="delphi plain">(</code>
<code class="delphi keyword">AnsiString</code>
<code class="delphi plain">(Src));</code>
</div>
<div class="line number34 index33 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">IntTemp:=&nbsp;Length(SrcAnsi);</code>
</div>
<div class="line number35 index34 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">for</code>&nbsp;
<code class="delphi plain">SrcPos&nbsp;:=&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">to</code>&nbsp;
<code class="delphi plain">IntTemp&nbsp;</code>
<code class="delphi keyword">do</code>
</div>
<div class="line number36 index35 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">begin</code>
</div>
<div class="line number37 index36 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=(Ord(SrcAnsi[SrcPos-</code>
<code class="delphi value">1</code>
<code class="delphi plain">])&nbsp;+&nbsp;offset)&nbsp;</code>
<code class="delphi keyword">MOD</code>&nbsp;
<code class="delphi value">255</code>
<code class="delphi plain">;</code>
</div>
<div class="line number38 index37 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;&lt;&nbsp;KeyLen&nbsp;</code>
<code class="delphi keyword">then</code>&nbsp;
<code class="delphi plain">KeyPos:=&nbsp;KeyPos&nbsp;+&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">else</code>&nbsp;
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number39 index38 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=&nbsp;SrcAsc&nbsp;</code>
<code class="delphi keyword">xor</code>&nbsp;
<code class="delphi plain">Ord(Key);</code>
</div>
<div class="line number40 index39 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">dest:=dest&nbsp;+&nbsp;format(</code>
<code class="delphi string">'%1.2x'</code>
<code class="delphi plain">,);</code>
</div>
<div class="line number41 index40 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=SrcAsc;</code>
</div>
<div class="line number42 index41 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number43 index42 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Result:=Dest;</code>
</div>
<div class="line number44 index43 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number45 index44 alt2">
   &nbsp;
</div>
<div class="line number46 index45 alt1">
<code class="delphi comments">//解密函数</code>
</div>
<div class="line number47 index46 alt2">
<code class="delphi keyword">Function</code>&nbsp;
<code class="delphi plain">JieMi&nbsp;(Src:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;&nbsp;Key:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">):</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number48 index47 alt1">
<code class="delphi keyword">var</code>
</div>
<div class="line number49 index48 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number50 index49 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number51 index50 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number52 index51 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest&nbsp;:</code>
<code class="delphi keyword">String</code>
<code class="delphi plain">;</code>
</div>
<div class="line number53 index52 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number54 index53 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number55 index54 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number56 index55 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range&nbsp;:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number57 index56 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAnsi:</code>
<code class="delphi keyword">PAnsiChar</code>
<code class="delphi plain">;</code>
</div>
<div class="line number58 index57 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">IntTemp,i:</code>
<code class="delphi keyword">Integer</code>
<code class="delphi plain">;</code>
</div>
<div class="line number59 index58 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">ByteArray:&nbsp;</code>
<code class="delphi keyword">array</code>&nbsp;
<code class="delphi keyword">of</code>&nbsp;
<code class="delphi keyword">Byte</code>
<code class="delphi plain">;</code>
</div>
<div class="line number60 index59 alt1">
<code class="delphi keyword">begin</code>
</div>
<div class="line number61 index60 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyLen:=Length(Key);</code>
</div>
<div class="line number62 index61 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyLen&nbsp;=&nbsp;</code>
<code class="delphi value">0</code>&nbsp;
<code class="delphi keyword">then</code>&nbsp;
<code class="delphi plain">key:=</code>
<code class="delphi string">'starlin'</code>
<code class="delphi plain">;</code>
</div>
<div class="line number63 index62 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">KeyPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number64 index63 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number65 index64 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number66 index65 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Range:=</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number67 index66 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=StrToInt(</code>
<code class="delphi string">'$'</code>
<code class="delphi plain">+&nbsp;copy(src,</code>
<code class="delphi value">1</code>
<code class="delphi plain">,</code>
<code class="delphi value">2</code>
<code class="delphi plain">));</code>
</div>
<div class="line number68 index67 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=</code>
<code class="delphi value">3</code>
<code class="delphi plain">;</code>
</div>
<div class="line number69 index68 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">IntTemp:=Length(Src)&nbsp;</code>
<code class="delphi keyword">div</code>&nbsp;
<code class="delphi value">2</code>
<code class="delphi plain">;</code>
</div>
<div class="line number70 index69 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">setlength(ByteArray,IntTemp);</code>
</div>
<div class="line number71 index70 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">i:=</code>
<code class="delphi value">0</code>
<code class="delphi plain">;</code>
</div>
<div class="line number72 index71 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">repeat</code>
</div>
<div class="line number73 index72 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">try</code>
</div>
<div class="line number74 index73 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=StrToInt(</code>
<code class="delphi string">'$'</code>
<code class="delphi plain">+&nbsp;copy(src,SrcPos,</code>
<code class="delphi value">2</code>
<code class="delphi plain">));</code>
</div>
<div class="line number75 index74 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">except</code>
</div>
<div class="line number76 index75 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcAsc:=StrToInt(</code>
<code class="delphi string">'$00'</code>
<code class="delphi plain">);</code>
</div>
<div class="line number77 index76 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number78 index77 alt1">
   &nbsp;
</div>
<div class="line number79 index78 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;&lt;&nbsp;KeyLen&nbsp;</code>
<code class="delphi keyword">Then</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;:=&nbsp;KeyPos&nbsp;+&nbsp;</code>
<code class="delphi value">1</code>&nbsp;
<code class="delphi keyword">else</code>&nbsp;
<code class="delphi plain">KeyPos&nbsp;:=&nbsp;</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number80 index79 alt1">
   &nbsp;
</div>
<div class="line number81 index80 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;SrcAsc&nbsp;</code>
<code class="delphi keyword">xor</code>&nbsp;
<code class="delphi plain">Ord(Key);</code>
</div>
<div class="line number82 index81 alt1">
   &nbsp;
</div>
<div class="line number83 index82 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">if</code>&nbsp;
<code class="delphi plain">TmpSrcAsc&nbsp;&lt;=&nbsp;offset&nbsp;</code>
<code class="delphi keyword">then</code>
</div>
<div class="line number84 index83 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;</code>
<code class="delphi value">255</code>&nbsp;
<code class="delphi plain">+&nbsp;TmpSrcAsc&nbsp;-&nbsp;offset</code>
</div>
<div class="line number85 index84 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi keyword">else</code>
</div>
<div class="line number86 index85 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">TmpSrcAsc&nbsp;:=&nbsp;TmpSrcAsc&nbsp;-&nbsp;offset;</code>
</div>
<div class="line number87 index86 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">ByteArray:=TmpSrcAsc;</code>
</div>
<div class="line number88 index87 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">i:=i+</code>
<code class="delphi value">1</code>
<code class="delphi plain">;</code>
</div>
<div class="line number89 index88 alt2">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">offset:=srcAsc;</code>
</div>
<div class="line number90 index89 alt1">
<code class="delphi spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>
<code class="delphi plain">SrcPos:=SrcPos&nbsp;+&nbsp;</code>
<code class="delphi value">2</code>
<code class="delphi plain">;</code>
</div>
<div class="line number91 index90 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi keyword">until</code>&nbsp;
<code class="delphi plain">SrcPos&nbsp;&gt;=&nbsp;Length(Src);</code>
</div>
<div class="line number92 index91 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">CopyMemory(@SrcAnsi[</code>
<code class="delphi value">0</code>
<code class="delphi plain">],@ByteArray[</code>
<code class="delphi value">0</code>
<code class="delphi plain">],IntTemp);</code>
</div>
<div class="line number93 index92 alt2">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">dest:=</code>
<code class="delphi keyword">string</code>
<code class="delphi plain">(AnsiStrings</code>
<code class="delphi value">.</code>
<code class="delphi plain">strpas(SrcAnsi));</code>
</div>
<div class="line number94 index93 alt1">
<code class="delphi spaces">&nbsp;&nbsp;</code>
<code class="delphi plain">Result:=Dest;</code>
</div>
<div class="line number95 index94 alt2">
   &nbsp;
</div>
<div class="line number96 index95 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">;</code>
</div>
<div class="line number97 index96 alt2">
   &nbsp;
</div>
<div class="line number98 index97 alt1">
<code class="delphi keyword">end</code>
<code class="delphi plain">.</code></div>

</div>

</div>
<div id="MySignature" role="contentinfo">
    好的代码像粥一样,都是用时间熬出来的<br><br>
来源:https://www.cnblogs.com/jijm123/p/14186934.html
頁: [1]
查看完整版本: Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结