【发布时间】:2019-07-23 13:05:17
【问题描述】:
我有一个类,其中包含我的一个项目的配置文件信息,其中包含大量信息,称为 PROFILE。为了轻松访问此配置文件的所有不同属性,我有一个索引默认属性。这个默认属性(TCHANNELLIST)是一个记录,它又包含一些属性以及另一个记录(TCHANNELPARAMETER)。属性 CHANNEL 是默认属性 TCHANNELLIST 的默认属性(索引)。
现在我在构造这些属性的设置器时确实遇到了问题。 (澄清:读取功能不是问题!请不要打扰,除非可以找到解决方案)。
问题:如何构造属性/过程/函数以运行以下代码
MyProfile[i][j].Name := 'Thanks_for_the_help';
Since more is more 这里是我使用的记录结构。如果有更好的方法我也愿意改变一般结构,所以我愿意提出建议。
TChannelParameter = record
// each channel gets one record for itself
public
channelType : TKanalTyp;
display_number : Integer;
Name : string;
// and a few other but you will get the idea...
end;
TChannelList = record
private
FChannelparameter_List : array of TChannelParameter ;
function GetChannelParameter(Index: Integer): TChannelParameter ;
procedure SetChannelParameter(Index: Integer); //Here I need some help
public
property Channal_GlobalNumber[index: Integer]: TChannelParameter read GetChannelParameter write SetChannelParameter; //Here I need some help
end;
说实话,我只是不知道(我在网上找不到任何帮助)来运行那行代码。阅读所有内容不是问题,但将内容写入索引默认属性的“子项”对我来说是个谜。这里用这个没关系
A_Channel_list[i].name := 'aName';
或
MyProfile[i][j].name := 'aName';
到目前为止,这两个 setter 都没有构建!由于我缺乏这样做的基本知识! (此外我没有包括该类,因为处理应该是相同的)
如果我让一个运行另一个应该不再是问题。也许有人知道这种操作是不可能的,也请告诉我!然后我将重建我的班级和记录。
【问题讨论】:
-
将记录更改为类 因为记录是值类型,所以这永远不会起作用。
-
再解释一下:当您编写 MyProfile[i] 时,您将获得该 TChannelList 记录的副本。后面的一切都是在那个副本上完成的,所以它不会进入原始数据结构。
-
好的!我会记下这些笔记然后去上课!非常感谢你!嵌套记录似乎有效(在第一次试用中阅读下面的内容)但我会仔细检查!
-
好的,所以我尝试将记录更改为类,但总体概念仍不清楚。由于我想在需要使用属性的级别之间进行一些操作。但是我找不到告诉子项的解决方案,例如ChannelParameter.name要更改,因为我无法获取setter函数setchannelparamter,对。任何具体的想法如何解决这个问题?