变量的引用 以下示例在delphi中是不允许的,但有没有实现类似功能的用法 Val1 := 'abc' ; Val2 := Ary[Val1] ; //则 Val2 = 'abc' ; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Ary[Val1] <-- 不是太明白这个写法的含义。 不好意思,一时心慌,出错了,应该是这样: var ary:array ['abc'..'def'] of string ; ary['abc'] := '12345' ; ary['def'] :='23456' ; Val1 := 'abc' ; Val2 := Ary[Val1] ; //则 Val2 = '12345' ; 我知道有Delphi这样的数组下标是非法的,但有没有实现类似于这样的变量引用的方法呢? 用TStringList吧!procedure TForm1.Button1Click(Sender: TObject);var S: TStrings; Val1: String;begin S := TStringList.Create; try S.Values['abc'] := '12345'; S.Values['def'] := '23456'; Val1 := 'abc'; ShowMessage(S.Values[Val1]); finally S.Free; end;end; procedure TForm1.Button1Click(Sender: TObject);type TAlphaBeta = (abc, bcd, cde, def);var ary: array[0..3] of string; var1: TAlphaBeta;begin ary[integer(abc)] := '1234'; ary[integer(bcd)] := '2345'; var1 := abc; Showmessage(ary[integer(abc)]);end; 可以用TStrings来实现类似的功能:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private AIndex, AValue : TStrings; procedure AddValue(sIndex, sValue: String); function GetValue(sIndex: String): String; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin AIndex := TStringList.Create; AValue := TStringList.Create; AddValue('abc', '12345'); AddValue('def', '67890');end;procedure TForm1.FormDestroy(Sender: TObject);begin FreeAndNil(AIndex); FreeAndNil(AValue);end;procedure TForm1.AddValue(sIndex, sValue: String);var iIndex : Integer;begin iIndex := AIndex.IndexOf(sIndex); if iIndex >=0 then AValue.Strings[iIndex] := sValue else begin AIndex.Add(sIndex); AValue.Add(sValue); end;end;function TForm1.GetValue(sIndex: String): String;var iIndex : Integer;begin iIndex := AIndex.IndexOf(sIndex); if iIndex >=0 then Result := AValue.Strings[iIndex] else Result := '';end;procedure TForm1.Button1Click(Sender: TObject);var Val1, Val2: String;begin Val1 := 'abc'; Val2 := GetValue(Val1); ShowMessage (Val2);end;end. 我的软件10年 请问象CAD里面那样的跟随鼠标移动的十字线是怎么作出来的? 如何得到此链接的控件http://www.800j.com.cn/800j/emap/ditbox.asp 大家还是熟悉下。net吧,包括工具 关于怎样提高查询速度的问题? 如何利用DELPHI的 Tseversocket Tclientsocket 实现一个bmp文件的传输?急需答复!谢! 在sql server 中如何实现同一条记录中两个字段值的交换??? 溺水待毙,WHO援以手? delphi image 问题 学什么好呢???????? SQL复制问题,广告之后回来结贴(帮顶都谢) 想提取字符 ’ 怎么办
var
ary:array ['abc'..'def'] of string ;
ary['abc'] := '12345' ;
ary['def'] :='23456' ;
Val1 := 'abc' ;
Val2 := Ary[Val1] ; //则 Val2 = '12345' ;
我知道有Delphi这样的数组下标是非法的,但有没有实现类似于这样的变量引用的方法呢?
var
S: TStrings;
Val1: String;
begin
S := TStringList.Create;
try
S.Values['abc'] := '12345';
S.Values['def'] := '23456';
Val1 := 'abc';
ShowMessage(S.Values[Val1]);
finally
S.Free;
end;end;
type
TAlphaBeta = (abc, bcd, cde, def);
var
ary: array[0..3] of string;
var1: TAlphaBeta;
begin
ary[integer(abc)] := '1234';
ary[integer(bcd)] := '2345'; var1 := abc;
Showmessage(ary[integer(abc)]);
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
AIndex, AValue : TStrings;
procedure AddValue(sIndex, sValue: String);
function GetValue(sIndex: String): String;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
AIndex := TStringList.Create;
AValue := TStringList.Create;
AddValue('abc', '12345');
AddValue('def', '67890');
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(AIndex);
FreeAndNil(AValue);
end;procedure TForm1.AddValue(sIndex, sValue: String);
var
iIndex : Integer;
begin
iIndex := AIndex.IndexOf(sIndex);
if iIndex >=0 then
AValue.Strings[iIndex] := sValue
else begin
AIndex.Add(sIndex);
AValue.Add(sValue);
end;
end;function TForm1.GetValue(sIndex: String): String;
var
iIndex : Integer;
begin
iIndex := AIndex.IndexOf(sIndex);
if iIndex >=0 then
Result := AValue.Strings[iIndex]
else
Result := '';
end;procedure TForm1.Button1Click(Sender: TObject);
var
Val1, Val2: String;
begin
Val1 := 'abc';
Val2 := GetValue(Val1);
ShowMessage (Val2);
end;end.