1.如何增加字符到PCHAR?如:
p:pchar
GetWindowText(p....)
想在前面加上个'D'如何加?
(不要用STRING转换)2.Delphi中最大数值类型是什么?
n:int64;
n:=24*256*256*256+19*256*256+204*256+26
编辑报错!! 如何解决?

解决方案 »

  1.   

    function CharAddToPchar(p:pchar;c:char):pchar;
    var
       arr:array of char;
       pIndex:integer;
       pTemp:Pchar;
    begin
       setlength(arr,length(p)+1);
       for pIndex:=0 to length(p)-1 do
           arr[pIndex]:=p[pIndex];
       arr[length(p)]:=c;
       result:=@arr[0];
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
       p:pchar;
    begin
       p:=pchar('abcdef');
       showmessage(strpas(CharAddToPchar(p,char('a'))));
    end;
      

  2.   

    上面是我对第一个问题的回答。其中,函数内部变量声明了一个pTemp是多余的,请删去。
      

  3.   

    重新改写了一个:
    Procedure CharAddToPchar(var p:pchar;c:char);
    var
       arr:array of char;
       pIndex:integer;
    begin
       setlength(arr,length(p)+1);
       arr[0]:=c;
       for pIndex:=1 to length(p) do
           arr[pIndex]:=p[pIndex-1];
       p:=@arr[0];
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
       p:pchar;
    begin
       p:=pchar('abcdef');
       CharAddToPchar(p,char('D'));
       showmessage(strpas(p));
    end;与我在前面给出的那个有以下不同:
    1、按楼主要求,把字符D加在了PCHAR指向的字串的前面;
    2、使用了引用传值(最选给出的是函数,靠创建一个Pchar副本返回;而现在这个过程是直接改变原Pchar。
    错误之处,请指正。
      

  4.   

    1.如何增加字符到PCHAR?如:
    p:pchar
    GetWindowText(p....)
    想在前面加上个'D'如何加?
    (不要用STRING转换)PCHAR是个指向字符的指针,如果它指向一串字符串,那我们操作它所指的值时,可以通过指针访问.
    如:
    var
      p:pchar;
      str:string;
    begin
      str:='test';
      p:=@str[1];
      showmessage(p^);//---显示第一个字符
      inc(p);
      showmessage(p^);//---显示第二个字符
    end;如果要操作这个串,要用缓冲的办法,因为重新分配内空间才可以........
    正如这样:(lihuasoft(学习低调做人) ( ) 信誉:100    Blog 所写函数)
    重新改写了一个:
    Procedure CharAddToPchar(var p:pchar;c:char);
    var
       arr:array of char;//--这个就是新的缓冲区.....
       pIndex:integer;
    begin
       setlength(arr,length(p)+1);
       arr[0]:=c;
       for pIndex:=1 to length(p) do
           arr[pIndex]:=p[pIndex-1];
       p:=@arr[0];
    end;
    2.Delphi中最大数值类型是什么?
    n:int64;
    n:=24*256*256*256+19*256*256+204*256+26
    //--24*(2^24)+19*(2^16)+204*(2^8)+26
    编辑报错!! 如何解决?int64    8bytes  表示2的64次方;
    Int64 -2^63..2^63-1 signed 64-bit
      

  5.   

    谢谢!趁机再问1个小问题:(回答后立即结帐)
    用POP3指令UIDL及RECR得到的MAIL内容好象都是编码后的例如(tbiBAdFOkBz86iTmgAAsd)
    这种是什么编码方式? 如何解码??
      

  6.   

    奇怪!
    为何pwidechar一用strlen就报错?
    有何解决办法?