dll中动态建立TTable有两种方法:
1. 调用dll时把调用者的form当作一个参数传递给dll. 例如:
procedure CallMyDll(OwnerForm: TForm);
stdcall;
export;
....
DllTable := TTable.Create(OwnerForm);
.....
..... // 设置table各项属性
DllTable.Open;
.... // 进行处理
2. 用nil当TTable的owner:
DllDataBase := TDataBase.Create(nil);
DllDataBase.DataBaseName := 'DB'+inttostr(random(9999));
// 不重复的名字
...... // 设置Database各项属性, AliasName, LoginPrompt, Params,....
DllSession := TSession.Create(nil);
DllSession.SessionName := 'SESSION'+Inttostr(Random(9999));
DllTable := TTable.Create(nil);
DllTable.SessionName := DllSession.SessionName;
DllTable.DataBaseName := DllDataBase.DataBaseName;
........ // 设置Table的属性, 比如TableName
DllTable.Open;
..... // 进行处理
最后别忘记释放.
上述方法使用起来没有问题