可否象array[x]一样引用TRect中的成员名。(200分)

  • 主题发起人 主题发起人 qgzhang
  • 开始时间 开始时间
Q

qgzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
I have a Record
ARMA= ^RMA;
RMA= Record
RMANo:String;
Qty:Integer;
end;


How can I use ARMA[1] replace ARMA.RMANo so that I can make a
more universal program regardless the change of TRect.
 
RMANo: array[0...I] of String, I为数组成员个数。
参看帮助文件中有关动态数组的内容。
 
var
A :array of string;
begin
SetLength(A,长度);
Fillchar(..);
....
A := nil;
end;
 
不能,这样不是挺好的,数组是具有同一种类型的变量结合在一起。
 
Hi, SuperMMX:
Yes , I know that the array is a set of the same variable while the TRect is not. But I don't know why it can use component[x] to disignate a object while the TRect can not. Is delphi don't support this method?
Because I always need to sort or display the information stored in the TList(contained a set of TRect), I don't want to change the TRect.ItemName every time with the change of TRect difinetion.
 
Hi, SuperMMX:
Yes , I know that the array is a set of the same variable while the TRect is not. But I don't know why it can use component[x] to disignate a object while the TRect can not. Is delphi don't support this method?
Because I always need to sort or display the information stored in the TList(contained a set of TRect), I don't want to change the TRect.ItemName every time with the change of TRect difinetion.

是 components 吧? 那是一个数组。
明白你的意思了,不管 TList 里面是什么类型的记录,
用同样的方法访问它的域, 对吗?

不太清楚, delphi 里指针的用法挺严格的。
 
>>I don't want to change the TRect.ItemName every time with the change of TRect difinetion.

稍微泼点儿冷水,产生这种想法本身就有问题,如果RMA的定义变成了:
RMA= Record
RMANo:Integer;
Qty:Integer;
就算你能用RMA[1]访问RMANO,可是他已经是整数了,如果你的程序中把他
当作string处理,一样出错的。因此这种做法无非是取巧,省了一点点编程
的劳动,没什么实际意义。

而且,这种需求的产生在于不断修改RMA中成员的名称,
实在想不出这有什么必要性,编着编着程序突然觉得不顺眼?

如果你是指TList中可能加入不同类型的记录,就象SuperMMX说的,那么你只能
把他定义成为类,然后用多态的方式来访问不同子类对象的共有属性。

Components中的i和你说的RMA[1]的下标也不是同一种含义,正如SuperMMX所说,
那是一个数组。
 
多人接受答案了。
 
后退
顶部