gpt4 book ai didi

delphi - 为什么两个看似相同的动态数组类型被视为赋值不兼容?

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

只是一个小问题,我没有找到具体的答案,所以我想在这里问可能会更快。

编译器拒绝以下代码并出现以下错误:

incompatible types 'dynamic array' and 'array of string'

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;

我做错了什么?两者都是字符串数组,所以我不明白为什么其中一个似乎是动态的。

最佳答案

您无法轻松分配给 MailTextAnhang,因为您无法声明具有兼容类型的另一个对象。这是因为您在记录声明中使用了内联动态数组类型。您确实需要使用可以命名的类型。为了更好地说明,请考虑以下内容:

X: array of Integer;
Y: array of Integer;

现在 XY 是不同的类型,并且 X := Y 无法编译。

另一个问题是你的开放数组参数。开放数组参数的赋值与任何内容都不兼容。您可以逐个元素复制,但不能一次性分配数组。

解决这个问题的最佳方法是像这样声明该字段:

MailText,
Anhang: TArray<string>;

并将函数中的开放数组参数更改为该类型。

然后您需要决定是否要复制引用或数组:

MailText := aMailText; // copy reference, or
MailText := Copy(aMailText); // copy array

关于delphi - 为什么两个看似相同的动态数组类型被视为赋值不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818618/

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