delphi – 为什么两个看似相同的动态数组类型被认为不兼容?
发布时间:2020-12-15 04:24:33 所属栏目:大数据 来源:网络整理
导读:只是一个小问题,我没有找到具体的答案所以我猜这可能会更快在这里问. 编译器拒绝以下代码,并出现以下错误: incompatible types ‘dynamic array’ and ‘array of string’ TMailInfo = record FileName,MailAdresse,MailBCC,MailCC,MailBetreff: string; M
只是一个小问题,我没有找到具体的答案所以我猜这可能会更快在这里问.
编译器拒绝以下代码,并出现以下错误:
TMailInfo = record FileName,MailAdresse,MailBCC,MailCC,MailBetreff: string; MailText,Anhang: array of string; MailAcknowledge,MailTXT: Boolean end; class function TEMail.SendOutlookCOMMail(aFileName,aMailAdresse,aMailBCC,aMailCC,aMailBetreff: string; aMailText,aAnhang: array of string; const aMailAcknowledge,aMailTXT: Boolean): Boolean; var mailInfo: TMailInfo; begin ... mailInfo.MailBetreff := aMailBetreff; // these two lines cause the error mailInfo.MailText := aMailText; ... end; 我究竟做错了什么?两者都是字符串数组,所以我不明白为什么一个似乎是动态的. 解决方法
您无法轻松分配给MailText和Anhang,因为您无法声明具有兼容类型的其他对象.那是因为你在记录声明中使用了内联的动态数组类型.您确实需要使用可以命名的类型.为了更好地说明,请考虑以下事项:
X: array of Integer; Y: array of Integer; 现在X和Y的类型不同,X:= Y不能编译. 另一个问题是你的开放数组参数.开放数组参数与任何内容都不兼容.您可以逐个元素复制,但不能一次性分配数组. 最好的方法是声明这样的字段: MailText,Anhang: TArray<string>; 并将函数中的open数组参数更改为该类型. 然后,您需要决定是要复制引用还是数组: MailText := aMailText; // copy reference,or MailText := Copy(aMailText); // copy array (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |