gpt4 book ai didi

delphi - 什么是 TFDDatSRow?

转载 作者:行者123 更新时间:2023-12-03 15:53:38 25 4
gpt4 key购买 nike

我使用Delphi 10.3。我尝试创建一个内存数据库,向其中添加数据并在其中查找数据。

我引用其他人的代码编写了以下代码,效果很好。

procedure TForm1.DataAppendFind;
var
_FieldDef: TFieldDef;
_FDDatsRow: TFDDatSRow;
i: Integer;
begin
_FieldDef := FDMemTable1.FieldDefs.AddFieldDef;

_FieldDef.Name := 'field1';
_FieldDef.DataType := ftInteger;

_FieldDef := FDMemTable1.FieldDefs.AddFieldDef;

_FieldDef.Name :='field2';
_FieldDef.DataType := ftString;
_FieldDef.Size := 10;

FDMemTable1.CreateDataSet;

FDMemTable1.Append;

FDMemTable1.FieldValues['field1'] := 1;
FDMemTable1.FieldValues['field2'] := 'one';

FDMemTable1.Append;

FDMemTable1.FieldValues['field1'] := 2;
FDMemTable1.FieldValues['field2'] := 'two';

FDMemTable1.First;

for i := 0 to FDMemTable1.RecordCount - 1 do
begin
_FDDatsRow := FDMemTable1.GetRow;

if _FDDatsRow.Values['field1'] = 2 then
begin
Caption := _FDDatsRow.ValueS['field2'];
end;

FDMemTable1.Next;
end;
end;

我无法理解 TFDDatSRow,我尝试通过 Delphi 引用文献和 google 搜索它。但对此并没有明确的文件。我可以猜测它与行类似,但不是行,因为它有一个又长又复杂的名称,而不仅仅是一个 tROW。

什么是 TFDDatSRow,为什么没有关于它的引用资料,我在哪里可以获得有关它的正确信息?最后,上面的代码正确吗?

最佳答案

是的,您的代码工作正常。我承认我没有遇到过 TFDDatSRow在你的 q 之前,但是看过它之后,它的用途就很明显了。

FireDAC 的数据集组件均源自 TDataSet,因此符合及其对数据集操作进行建模的方式,也就是说,虽然数据集打开时,它有一个逻辑游标,该游标恰好“位于”数据集中的一条记录上正是该记录,Delphi 术语中的“事件”记录,可以对其进行诸如 EditPostFieldByName 等操作,等发生。这工作正常,但使一些操作变得不可能,例如工作同时记录两个记录,例如当你想在两个人之间交换值(value)时不同的记录,因为它们不能同时是数据集的事件记录。

我说 TFDDatSRow 的用途非常明显,一件事就是允许正是这种对 2 个或更多记录的并发访问成为可能。

例如这段代码

  FDMemTable1.First;
FDDatsRow1 := FDMemTable1.GetRow;
FDMemTable1.Next;
FDDatsRow2 := FDMemTable1.GetRow;

FDDatSRow1.BeginEdit;
FDDatSRow1.Values['Field2'] := FDDatSRow2.Values['Field2'];
FDDatSRow1.EndEdit(False);

使数据能够以以下方式从第二行传输到第一行:如果没有 TFDDatSRow,这是不可能的。

为什么没有记录?不知道,问EMBA。

我如何找到它的方法?很简单,我声明了一个变量

 var FDDatSRow1 : TFDDatSRow;

然后输入

  FDDatSRow1.

IDE 的代码完成将它们弹出。

此外,选择TFDDatSRow并按住Ctrl键单击可以看到它的声明在 FireDac.DatS 单元中。往里看,明显是 FireDAC 的作者记住的内容比我的示例中显示的要多得多。

关于delphi - 什么是 TFDDatSRow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091817/

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