今天又遇到一怪事, FDQuery 在服务器 savestream 传回了客户端。 客户端接收后 loadfromstream 接收都正常。 但当我把客户端封装成 dll 时,loadfromstream 就会报错: Invalid class typecast .
{-------------------------------------------------------------------------------}
procedure TFDStorage.Open(AResOpts: TObject; AEncoder: TObject;
const AFileName: String; AStream: TStream; AMode: TFDStorageMode);
begin
FResOpts := AResOpts as TFDBottomResourceOptions;
FEncoder := AEncoder as TFDEncoder;
ASSERT((AStream <> nil) or (AFileName <> ‘‘) or
(FResOpts <> nil) and (FResOpts.PersistentFileName <> ‘‘));
FMode := AMode;
.....
....
跟踪后发现停在这个转换上(红字)
unit FireDAC.Stan.Storage; 这个单元
折腾了半天,最后发现, 问题出在从外界传入的 TFDQuery 实例,该实例在使用时,必须引用单元 FireDAC.dApt
哎,这种搞得太隐蔽了,既然需要编译时报出来多好。。。。
在Dll中使用 TFDQuery 的 LoadFromStream 方法注意问题
原文:http://www.cnblogs.com/zhenfei/p/4323487.html