【发布时间】:2011-06-27 06:48:54
【问题描述】:
我正在尝试将一个数组从一个类传递到我在 Delphi 中的主程序中。我在数据类型方面遇到了一些麻烦,并且在网上搜索了一个小时没有发现任何帮助我。听起来有点奇怪,但答案越复杂越好(这是针对大学项目的)。
我有一个连接到 SQL 的类,它将一个 SQL 查询读入一个记录类型声明的数组中(抱歉,如果现在有点混乱):
Type TScout = Record
SNum, FName, SName, Gender, Address, HomeNum, MobNum,
SEmail, STel, Hikes, Nights, Med, Diet : String;
DoB, DoJ : String;
End;
Type TScoutArray = Array of TScout;
Type TScoutSQL = Class
Public
Procedure InitSQL;
Procedure GetRecords;
Function SendRecords : TScoutArray;
Private
ScoutsArray : TScoutArray;
ScoutConnection : TSQLConnection;
ScoutQuery : TSQLQuery;
End;
所以整个“函数 SendRecords : TScoutArray;”不起作用,因为另一方面我有相同的 2 种类型(TScout 和 TScoutArray)声明完全相同,我调用该函数:
ScoutArray := ScoutSQL.SendRecords;
我得到:
[Error] MembersUnit.pas(51): Incompatible types
谁能帮忙?
【问题讨论】:
-
记录类型声明表示记录,对吧?因此,您从 DBMS 读取数据,将其存储在记录中并尝试传递动态记录数组。您还应该提供更多代码,例如 ScoutArray 的类型。这是因为
TScoutArray和array of TScout在 Pascal/Delphi 中是不同的类型。 -
我做 TScoutArray 是因为我读到你不能只从一个类中传递一个数组,你必须创建自己的数据类型,但它仍然不起作用,所以我在这里问跨度>
-
如果您找到了答案,您应该将其标记为已接受,或者如果我们不理解,请提供更多详细信息。
-
@David Heffernan 对此表示歉意。现在标记答案。感谢您以我容易理解的方式快速回答。