我有一个函数,里面用了一个PChar变量CallerID
var
  CallerID: pchar;
begin
  TV_Initialize;  
  CallerID := ''; //下一次接听的时候,CallerID和上次的一样
  StatusBar.Panels[1].Text := '等待来电...';
  StatusBar.Repaint;
  repeat
    if aStart.Enabled = true then exit;
    if TV_RingDetect(C_Index) > 1 the   //检测到振铃
      TV_ReceiveCallingID(C_Index, CallerID, 16); //获取主叫号码
    FCallerID := String(CallerID);
    Application.ProcessMessages;
  until FCallerID <> '';
end;假设我第一次调用的时候CallerID是'1234567',到第二次我再调用的时候,执行CallerID := ''后,CallerID和第一次的一样.
请问怎么才能将CallerID初始化,怎么解决这个问题

解决方案 »

  1.   

    pchar实际上是一个指针,用完要释放。
      

  2.   

    CallerID:=StrAlloc(64*SizeOf(Char));//CallerID指向一个分配了63个字符的缓冲区StrPCopy(CallerID,'Delphi 5'); StrDispose(CallerID) ; ///清除缓冲区。
      

  3.   

    直接把CallerID := '';去掉
      

  4.   

    var
      CallerID: array[0..63] of char;
    begin
      TV_Initialize;  
      fillchar(CallerID,sizeof(Callerid),0); //下一次接听的时候,CallerID和上次的一样
      StatusBar.Panels[1].Text := '等待来电...';
      StatusBar.Repaint;
      repeat
        if aStart.Enabled = true then exit;
        if TV_RingDetect(C_Index) > 1 the   //检测到振铃
          TV_ReceiveCallingID(C_Index, CallerID, 16); //获取主叫号码
        FCallerID := CallerID;
        Application.ProcessMessages;
      until FCallerID <> '';
    end;
      

  5.   

    从你程序看你是要循环下一次时清空CallerID  
    CallerID =Pchar('');//相当于清空....
      

  6.   

    fillchar(CallerID,sizeof(Callerid),0);