在delphi中有没有如下类似的数组或对象,数组的序号可以用字符串(如arr["sdsd"]): var arr = new Array();
arr["filename"] = imagename;  
arr["width"] = width;  
arr["height"] = height;

解决方案 »

  1.   

    没有, 不过有属性类似property arr[Idx: string]: Variant read GetArr write SetArr;
      

  2.   

    楼上,这是什么的属性?
    =============================================================================自己写一个类,定义成上面的属性就行了,要达到搂住的要求,还得改一下:property arr[Idx: string]: Variant read GetArr write SetArr; default;
      

  3.   

    给一个框架参考:  TArrItem = class(TCollectionItem)
      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;
      

  4.   

    有很多方法来达到你的目的,不过对于你这个“懒人”只好给最省事的啦::):)var
      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;
      

  5.   

    //回maozefa
    楼上的恐怕不合搂住意,楼主要求数据是任意类型的
    //
    呵呵。如果是任意类型当然您的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;上面的重点就是数组下标为枚举型
      

  6.   

    还有许许多多的办法,就不一一列出了。不知上面的一些处理方法能不能满足zyblotuszyb的要求?