gpt4 book ai didi

delphi - 带有流字段的重复 TADODataSet 组件?

转载 作者:行者123 更新时间:2023-12-01 19:21:27 27 4
gpt4 key购买 nike

我有一个与 this 非常相似的代码复制 TADODataSet 组件及其事件。

因此,如果我有一个 ADODataSet1,我想创建一个新实例 ADODataSet2 作为前一个组件的精确重复组件。

一切正常,但我仍然无法复制流字段(ADODataSet1PollIDADODataSet1TitleADODataSet1Description):

object ADODataSet1: TADODataSet
Connection = ADOConnection1
CursorType = ctStatic
AfterOpen = ADODataSet1AfterOpen
CommandText = 'select top 10 * from Polls'
Parameters = <>
Left = 224
Top = 40
object ADODataSet1PollID: TGuidField
FieldName = 'PollID'
FixedChar = True
Size = 38
end
object ADODataSet1Title: TWideStringField
FieldName = 'Title'
Size = 255
end
object ADODataSet1Description: TWideStringField
FieldName = 'Description'
Size = 4000
end
end

我遇到的另一个问题是,如果将 ADODataSet1 设置为 Active=True,那么当我调用 ms.ReadComponent(Dest) 时,Active Connection 之前,并引发异常缺少连接或 ConnectionString ”。在编写 ms.WriteComponent(Source) 后,如何将 Active 设置为 False? (解决方法是在复制之前设置 ADODataSet1.Active := False)。

注意:我不想想要clone the cursor/recordset在数据集(TADODataSet.Clone)上,所以请不要将其视为“重复问题”。

最佳答案

试试这个:

Procedure registerAllClass(CMP: TComponent);
var
I:Integer;
begin
if (CMP is TPersistent) then begin
RegisterClass(TPersistentclass(cmp.ClassType));
end;
for I:=0 to CMP.ComponentCount-1 do
registerAllClass(cmp.Components[i]);
end;

function DuplicateComponent(Component: TComponent): TComponent;
var
MemStream: TMemoryStream;
oldname:String;
begin
oldname:=component.Name;
try
registerAllClass(Component);
Component.Name:='CopyOf'+Component.Name;
MemStream := TMemoryStream.Create;
try
MemStream.WriteComponent(Component);
MemStream.Position := 0;
result:=MemStream.ReadComponent(nil);
finally
MemStream.Free;
end;
finally
Component.Name:=oldname;
end;
end;

function DuplicateDataset(Dataset:TDataset):TDataset;
var
oldActive:Boolean;
begin
if Dataset=nil then
result:=nil
else begin
oldActive:=Dataset.Active;
try
Dataset.Active:=false;
result:=DuplicateComponent(Dataset) as TDataSet;
finally
Dataset.Active:=oldActive;
end;
end;
end;

关于delphi - 带有流字段的重复 TADODataSet 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com