请看源码:
var
  myObject: TObject;
  _PChar: PAnsiChar;
begin
  New(_PChar);
  try
    myObject := TObject(_PChar);    if myObject <>nil then
    if myObject is TLabel then//这句话直接报异常了,不知道怎么回事
    begin
      ShowMessage('111');
    end
    else
    begin
      ShowMessage('222');
    end;

解决方案 »

  1.   

    New(_PChar);  //在堆中分配了长度为0的一个buffermyObject := TObject(_PChar);  //把_PChar指向的堆地址,传给myObject变量。myObject现在指向的堆地址的内容是完全随机的,对myObject的任何操作,都会产生不可预知的结果。
      

  2.   


    procedure TForm1.Button_1Click(Sender: TObject);
    var
      myObject: TObject;
      _PChar: PAnsiChar;
    begin
      New(_PChar);
      myObject := TObject(_PChar^);
      if myObject <>nil then
      if myObject is TObject then
      begin
        ShowMessage('111');
      end
      else
      begin
        ShowMessage('222');
      end;
    end;
      

  3.   

    procedure TForm1.Button_1Click(Sender: TObject);
    var
      myObject          : TObject;
      _PWord            : PWord;
      LWord             : Word;begin
      New(_PWord);
      LWord := 3;
      _PWord := @LWord;
      myObject := TObject(_PChar^);  if myObject <> nil then
        if myObject is TObject then
        begin
          ShowMessage('111');
        end
        else
        begin
          ShowMessage('222');
        end;end;我将 指针赋值后,还是报错啊 ,怎么回事?
    delphi 就不支持 指针强制转 对象?
      

  4.   

    不是支持不支持的问题,是能不能转得问题。
    因为delphi的对象本身就是一个指针,所以是支持对象转指针的。
    你的问题点在于你指针所指向的位置是不是对象的问题。