procedure  Move( const Source; var Dest; count : Integer );
var
  S, D: PChar;
  I: Integer;
begin
  S := PChar(@Source);//取内存地址
  D := PChar(@Dest);//取内存地址
  if S = D then Exit;
  if Cardinal(D) > Cardinal(S) then
    for I := count-1 downto 0 do
      D[I] := S[I]
  else
    for I := 0 to count-1 do
      D[I] := S[I];
end;请问在这个函数中S := PChar(@Source);中的PChar是什么作用?

解决方案 »

  1.   

    类型转化S := @Source; 就这样就可以了。个人觉得,坐等高手
      

  2.   

    在这个函数里,这句话的意思就是把Source的指针地址赋值给S(PChar类型),PChar也是一种指针
    然后下面就是将S(Source)指针所指向的数据拷贝到D(Dest),长度为Count
      

  3.   

    把什么强制转换为PCHAR类型,变量S吗?  这个转换对S是有影响,还是没有影响,是在S后面加上一个#0吗?
      

  4.   

    pchar(str)将str强制转换⒈数值的类型强制转换 
    您可以把一种类型的数值强制转换成另一种类型的数值,语法如下:
    类型标识符(表达式)
    数值的类型强制转换首先要指定一个类型标识符,然后把要转换的表达式用()括起来,例如:
    Integer('A')
    Char(48)
    分别把字符A转换成一个整数,把一个整数48转换成字符。
    Object Pascal规定,类型标识符和括号内的表达式要么同时是有序类型,要么同时是指针类型。
    ⒉变量的类型强制转换 
    您也可以把一种类型的变量强制转换成另一种类型的变量,包括过程类型的变量,语法如下
    类型标识符(变量引用)
    变量的类型强制转换是针对变量引用而言的,Object Pascal规定,要转换的变量类型的长度必须与目
    标类型的长度一一致,如果不一致将引起异常。如果类型强制转换是通过As操作符进行的,As操作符能在转换前先进行是否赋值兼容的检查。如果是通
    过类型标识符进行类型强制转换 ,则不进行检查。示例:
    Type Func=Function (X:Integer):integer;
    Var
      F:Func;
      P:Pointer;  F:=Func(P);
      {把指针类型的变量P转换成func类型的变量F}
      Func(P):=F;
      {首先把指针的变量P转换成Func类型,然后把一个func类型的值赋给转换后的变量P。}
      

  5.   

    Character pointersThe fundamental types PAnsiChar and PWideChar represent pointers to AnsiChar and WideChar values, respectively. The generic PChar represents a pointer to a Char (that is, in its current implementation, to an AnsiChar). These character pointers are used to manipulate null-terminated strings. 楼主的键盘上的 F1 按键是否还非常新?
      

  6.   


    把什么强制转换为PCHAR类型,变量S吗? 这个转换对S是有影响,还是没有影响,是在S后面加上一个#0吗?
      

  7.   

    PChar是一个指针, 它的大小只有32位. 定义时由Delphi自动填0. 要将PChar作为字符串 使用的话必须自己分配内存用完必须自己释放. PChar型字符串由#0表示字符串结尾。 
    Delphi所提供的相关PChar字符串的操作都是判断#0来决定字符串的结尾的。 
    因为PChar是指针,所以它能指向任何地方(也就是说它不一定非要指向字符串不可). 
      

  8.   

    PChar是一个类型名,不是函数
    S := PChar(@Source),是取Source的地址,作为一个PChar赋值给S