delphi – 传递记录参数,而不首先将其声明为变量
发布时间:2020-12-15 10:13:40 所属栏目:大数据 来源:网络整理
导读:如果我尝试调用一个具有记录类型(而不是对象)作为参数的过程,是否可以以某种方式传递参数“inline”的详细信息,而不必首先声明该类型的变量? 例如假设我有这个简单的记录类型: type TMyRecord = record AString: string; AnInt: Integer;end; 和这个程序
如果我尝试调用一个具有记录类型(而不是对象)作为参数的过程,是否可以以某种方式传递参数“inline”的详细信息,而不必首先声明该类型的变量?
例如假设我有这个简单的记录类型: type TMyRecord = record AString: string; AnInt: Integer; end; 和这个程序声明: procedure MyProcedure(Rec: TMyRecord); 如果我想调用MyProcedure,我必须声明一个类型为TMyRecord的变量,或者我可以这样做: MyProcedure(TMyRecord("Test",10)); 这不起作用(XE2)(得到一个编译器错误,它期待一个“)”)。 那么,我可以这样做吗?或不可能。 谢谢 解决方法
可以使用先进的记录结构。
有关高级记录的更多信息,请参阅Delphi帮助中的Records (advanced) section。 这是一个小原型,可以看到它在您的情况下如何在函数/过程调用中预先初始化记录: Type TRecord = record AString : String; AnInt : Integer; Constructor Create( Const s : String; i : Integer); end; constructor TRecord.Create(const s: String; i: Integer); begin AString := s; AnInt := i; end; procedure DoSomething( theRec : TRecord); begin WriteLn(theRec.AString,' ',theRec.AnInt); end; begin DoSomeThing( TRecord.Create('S',1)); ReadLn; end. 看看Delphi RTL,请参阅单元system.types(XE2)中记录类型TPoint和TRect的定义。它们定义了一些重载的Create构造函数,这些构造函数在很多地方使用,可以在函数/过程调用中预先初始化记录结构。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |