我正在尝试将类中的数组传递到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
有人可以帮忙吗?
答案 0 :(得分:3)
我怀疑你的问题是你在不同的单位中两次声明这些类型。这样做会导致不同的,不兼容的类型。
您需要做的是:
A
添加到uses
子句中。答案 1 :(得分:2)
var
badArray: array of TScout;
begin
badArray := ScoutSQL.SendRecords;
这不起作用。 array of TScout
和TScoutArray
,后者是SendRecords返回的,是Delphi / Pascal中的不同类型。
var
niceArray: TScoutArray;
begin
niceArray := ScoutSQL.SendRecords;