我在一个按钮的ONClick事件中有如下代码:
var
  pc:PChar;
  buf:array[0..3]of char;
begin
  buf[0]:='1';
  buf[1]:='1';
  buf[2]:='2';
  buf[3]:='3';
 getmem(pc,4);
move(buf[0],pc^,4)
memo1.lines.add(pc);
end;
我的意思是在MEMO1控件中显示1234但结果总是1234?多了一个问号,哎,不知谁能指点,哪错了

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    pc:PChar;
    buf:array[0..3]of char;
    begin
    buf[0]:='1';
    buf[1]:='1';
    buf[2]:='2';
    buf[3]:='3';
    getmem(pc,4);
    move(buf[0],pc^,4);
    Memo1.Lines.Add(pc);//少了分号哦~~
    end;
      

  2.   

    我测试的结果:第一次按BUTTON显示:1123
    第二次及以后按BUTTON显示:1123?
    1123?
    1123?
    1123?
      

  3.   

    var
    pc:PChar;
    buf:array[0..3]of char;
    begin
    buf[0]:='1';
    buf[1]:='1';
    buf[2]:='2';
    buf[3]:='3';
    getmem(pc,4);
    move(buf[0],pc^,4);
    Memo1.Lines.Add(pc);
    freemem(pc,4);
    end;
      

  4.   

    发现一个细节 只要move里的偏移量大于2 就不会出错..