把tclientdataset传入dll后,不能访问fields[i]的displayformat,原因是判断if clientdataset.fields[i] is tfloatfield then
begin
end时,clientdataset.fields[i]永远不是tfloatfield,就算它是。就算强行设置所不行:
try
  strFormat:=(clientdataset.fields[i] as tfloatfield).displayformat;
except
end;但 clientdataset.Fields[i].ClassName 就正确,会显示为tfloatfield等。请问把tclientdataset传入dll后,它的类的属性会有所变化?

解决方案 »

  1.   

    if clientdataset.fields[i] is 'tfloatfield' then
    或者用if clientdataset.fields[i] in [tfloatfield,..,..];
      

  2.   

    又来了!
    你的EXE与DLL工程有没有选择Build with runtime packages编译选项?如果否,则100%不能使用is操作符。
      

  3.   

    你在主程序处看一下,可能tclientdataset.Fields[i]不是tfloatfield类型的?
      

  4.   

    试试tfloatfield(tclientdataset.Fields[i])。displayformat
      

  5.   

    感谢 hunter_zxy(hunter)!!!为什么用 as 不行呢? 用tclass()这样的方式就可以呢?真奇怪!(明天再加分)