在delphi中有没有如下类似的数组或对象,数组的序号可以用字符串(如arr["sdsd"]): var arr = new Array();
arr["filename"] = imagename;
arr["width"] = width;
arr["height"] = height;
arr["filename"] = imagename;
arr["width"] = width;
arr["height"] = height;
调试欢乐多
=============================================================================自己写一个类,定义成上面的属性就行了,要达到搂住的要求,还得改一下:property arr[Idx: string]: Variant read GetArr write SetArr; default;
private
FName: string;
FValue: Variant;
public
procedure Assign(Source: TPersistent); override;
property Name: string read FName write FName;
property Value: Variant read FValue write FValue;
end; TArrs = class(TCollection)
private
FCount: Integer;
public
constructor Create(AClass: TCollectionItemClass);
function Add(Name: string): TArrItem;
property Arrs[Name: string]: TArrItem read GetArr write SetArr; default;
end;
Strings: TStrings;
begin
Strings := TStringList.Create;
Strings.Add('FileName');
Strings.Add('Width');
Strings.Add('Height');
Strings.Values['FileName'] := 'zyblotuszyb';
Strings.Values['Width'] := '123';
Strings.Values['Height'] := '321';
//看看结果
ShowMessage(Strings.Values['FileName']+'\'+Strings.Values['Width']+'\'+Strings.Values['Height']);
FreeAndNil(Strings);
end;
楼上的恐怕不合搂住意,楼主要求数据是任意类型的
//
呵呵。如果是任意类型当然您的TCollection,TCollectionItem是可以的(我说了有很多方法来实现),我不想评论。下面再给出一种方法(满足任意数据类型)type
TArr = (taFileName, taWidth, taHeight);
//前面加上ta有2个目的:
1、标准化枚举型值
2、避免与系统可能默认的变量(如Width,Height)发生混淆var
Arr: array[TArr] of Variant;
begin
Arr[taFileName] := 'zyblotuszyb';
Arr[taWidth] := 123;
Arr[taHeight] := Now;
end;上面的重点就是数组下标为枚举型