ID: integer;
sName: string;
UpdateTime: TDateTime;  Pointer(fList^[Result].ID) := nil;
  Pointer(fList^[Result].sName) := nil;
  Pointer(fList^[Result].UpdateTime) := nil;TDateTime的类型用Pointer会编译错误。那要使用TDateTime类型应该怎么做了?
请大家帮帮忙。谢谢。

解决方案 »

  1.   

    另外如果我Pointer的是一个记录类型,即
    TRec = record
      ID: integer;
      sName: string;
      UpdateTime: TDateTime;
    end;我现在需要对每个变量都单独进行一次Pointer,即
      Pointer(fList^[Result].ID) := nil;
      Pointer(fList^[Result].sName) := nil;
      Pointer(fList^[Result].UpdateTime) := nil;
    有没有方法一条语句搞定啊。
      

  2.   

    目前学习中
    我是参考TStringList的源码
    TStringList在Add一个string时,会先执行一句
    Pointer(fList^[Result].String) := nil;
    我曾经测试过,如果去掉这句代码,后面的赋值会出现错误。
    不知道这句是什么意思,希望各位大大能帮忙解释下。。
      

  3.   

    TStringList在Add一个string时,会先执行一句
    Pointer(fList^[Result].String) := nil;
    ------------------------
    上面的意思应是初始化给字符分配的空间。  Pointer(fList^[Result].ID) := nil;
      Pointer(fList^[Result].sName) := nil;
      Pointer(fList^[Result].UpdateTime) := nil;-----------------------------------------------
    上面的Pointer(fList^[Result].ID) := nil;是错误的,并没有将ID设置为NIL,面是将ID这个数字所指的位置设置为NIL,整数是可以强制转换成指针的,因为指针本身就是整数类型的。
    Pointer(fList^[Result].sName) := nil;字符串本质上来说也是指针,所以这是可能通过编译的,怛也是错误的,造成了内存泄露;
    Pointer(fList^[Result].UpdateTime) := nil;日期类型本质上是一个DOUBLE类型,所以并不能强制转换成指针类型的。你的意思是在列表中保存一个结构体吗?初始化应这样写:
      fList^[Result].ID := 0;
      fList^[Result].sName := ‘’;
      fList^[Result].UpdateTime:= 0;