图河三舍周运豹 發表於 2021-11-16 23:08:41

Pascal Move的用法

<p>System单元的Move过程用来把指定内存段的数据整块复制到另一内存段中,它通常用来成批移动数组元素。Move的格式是Move(var Source, Dest; Count: Word),Source是数据源,Dest是目标内存段,Count是复制的字节数。你不必担心源内存段会和目标内存段重叠或者重合,在这种情况下Move仍然能够正确工作,参考下面的样例:</p>
<div class="jb51code">
<pre class="brush:delphi;">
var
I: Integer;
P: array of Longint;

begin
   for I := 0 to 9 do P := I;
   Move(P, P, 4 * 6);
   //从P移6个longint 到P
   for I := 0 to 9 do Writeln(P: 4);
end.
</pre>
</div>
<p>0123<span style="color: #ff0000">456789</span> à 01<span style="color: #ff0000">456789</span>89</p>
<p>值得注意的是Count的大小,这与identifier的类型(所占字节数)有关,以下给出参考</p>
<p>
<tr>
</tr>
<td></td>
&nbsp;
<table>
    <tbody>
      <tr>
            <td>
            <p>byte,shortint</p>
            </td>
            <td>&nbsp;<wbr></wbr>1</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>word,integer</p>
            </td>
            <td>&nbsp;<wbr></wbr>2</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>longint</p>
            </td>
            <td>&nbsp;<wbr></wbr>4</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr></td>
            <td>&nbsp;<wbr></wbr></td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>single</p>
            </td>
            <td>&nbsp;<wbr></wbr>4</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>real</p>
            </td>
            <td>&nbsp;<wbr></wbr>6</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>double,comp</td>
            <td>&nbsp;<wbr></wbr>8</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>extended</p>
            </td>
            <td>&nbsp;<wbr></wbr>10</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr></td>
            <td>&nbsp;<wbr></wbr></td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>char</p>
            </td>
            <td>&nbsp;<wbr></wbr>1</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>boolean</td>
            <td>&nbsp;<wbr></wbr>1</td>
      </tr>
      <tr>
            <td>&nbsp;<wbr></wbr>
            <p>string</p>
            </td>
            <td>&nbsp;<wbr></wbr>
            <p>1(per char)*</p>
            </td>
      </tr>
    </tbody>
</table>
</p>
<p>&nbsp; *例 Var a:string 'a:='123<span style="color: #ff0000">45</span>'; move(a,a,2); a="<span style="color: #ff0000">45</span>345"</p>
<p>基本上Pascal里常用的就这些了</p>
<p>另外,所占字节数不同不能move(不是数组,Count选字节数大的,有时也是可以的),不同类型不能move,否则会搞得乱七八糟,而往往因move错误地使用造成的 答案错误、死循环 很难发现!</p>
                           
                            <div class="art_xg">
                              
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: Pascal Move的用法