type
  PData = ^Tdata;
  TData = record
    S: string;
  end;var
  Data: PData;procedure TForm2.FormCreate(Sender: TObject);
begin
  Data := New(PData);
  Data.S := 'abc';
  Form2.Caption := Data.S;
  Data := nil;
  if @Data <> nil then
    DisPose(Data);
end;怎么判断Data为空

解决方案 »

  1.   

    if Data <> nil then
        DisPose(Data);
      

  2.   

    if Data <> nil then
        DisPose(Data);
      

  3.   

    Data := New(PData);
      Data.S := 'abc';
      Caption := Data.S;
      if Data <> nil then
      begin
        DisPose(Data);
        Data := nil;
      end;
      

  4.   

    如果要知道记录大小怎么办,我是要把这个记录类型通过socket传到服务端的,服务端在建立这个大小的缓存,然后把数据读出来.所以我想知道记录的大小.以前我用SizeOf(Data)来得到大小,可是我认为这样是不行的.
      

  5.   

    不要用STRING,用PCHAR,然后还要检查PCHAR长度,
    一般用CHAR数组来完成,多看看MS的定义。