高手请进!一个转换问题! ( 积分: 100 )

  • 主题发起人 系统管理员
  • 开始时间

系统管理员

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:如何将一个字符串(如:'abcd';或者是一个String型变量的值)转换成一个变量名???
代码:
procedure XXX();
var aString1: String;
aString2: String;
aString3: String;
aString4: String;
aIndex: Integer;
begin
for aIndex := 1 to 4 do
begin
转换函数(Format('aString%d',[aIndex])) := IntToStr(aIndex);
end;
end;


得到的结果是:
aString1的值是1
aString2的值是2
aString3的值是3
aString4的值是4
 
问题:如何将一个字符串(如:'abcd';或者是一个String型变量的值)转换成一个变量名???
代码:
procedure XXX();
var aString1: String;
aString2: String;
aString3: String;
aString4: String;
aIndex: Integer;
begin
for aIndex := 1 to 4 do
begin
转换函数(Format('aString%d',[aIndex])) := IntToStr(aIndex);
end;
end;


得到的结果是:
aString1的值是1
aString2的值是2
aString3的值是3
aString4的值是4
 
procedure XXX();
var aString:array[1..4] of String;
aIndex: Integer;
begin
for aIndex := 1 to 4 do
begin
aString[aIndex] := IntToStr(aIndex);
end;
end;
或者:
procedure XXX();
type PString=^String;
var aString1: String;
aString2: String;
aString3: String;
aString4: String;
aIndex: Integer;
aString:array [1..4] of PString;
begin
aString[1]:=@aString1
aString[2]=@aString2
aString[3]:=@aString3
aString[4]:=aString4;
for aIndex := 1 to 4 do
begin
aString[aIndex]^ := IntToStr(aIndex);
end;
end;
 
如果只是序号不同的话
procedure XXX();
var aStrings: array [1..4] of String;
aIndex: Integer;
begin
for aIndex := 1 to 4 do
begin
aStrings[aIndex]:= IntToStr(aIndex);
end;
end;
 
用数组aString : array [1..4] of string
 
我写的那个只是个例程,而实际使用时可能些不一样,不希望用数组!只想找到纯转换的函数或方法!
 
楼主,我怎么看也不向是你有问题要问啊,而是在向人展示一个问题的解决啊!

能说的明白点吗?
 
详细看每一句话!就能找到问题了!
 
在编译器中,根本不会记录你变量的名称,只是引用变量的地址而已。所以你的这个问题是一个无法解决的问题,而且没有什么意义。
如果你真的要使用动态的变量,那么请使用数组或动态数组。
 
变量只是编程时的助记符,编译时转换成了地址,在exe文件中,是没有aString1之类的名称记录的,所以,楼主,你的问题……

ps:楼主,你的名字太牛了
 
乱写一个
直接转换我想不大可能 只能先保存一下地址

procedure TForm1.Button1Click(Sender: TObject);
var
aString1: String;
aString2: String;
aString3: String;
aString4: String;
aIndex: Integer;

v_list: TStrings;


begin
v_list:= TStringList.Create;
v_list.AddObject('aString1',@aString1);
v_list.AddObject('aString2',@aString2);
v_list.AddObject('aString3',@aString3);
v_list.AddObject('aString4',@aString4);

for aIndex := 0 to 3 do
String(Pointer(v_list.Objects[v_list.IndexOf(Format('aString%d',[aIndex+1]))])^) := IntToStr(aIndex+1)+'zaasgdgsrg';


ShowMessage(aString3);
v_list.Free;
end;
 
还有没有人可以做答呀!
 
都写得挺详细的吧;
 
试试用变体类型
 
关注.......................
 
vb
有callbyname 函数,
 
我记得我文过类似的问题,不过我问的是控件的名称,当时有人回答我可以定义TObject类型的变量,不知道可否供以参考………………
(小弟初学,不对的话见笑了)
 
反正MATLAB编程是可以的!但DELPHI好像不行!在MATLAB中直接就可以变量也是字符串如:
a连接函数'1'与变量a1是一样的用!DELPHI却不行,郁闷
 

Similar threads

S
回复
0
查看
950
SUNSTONE的Delphi笔记
S
S
回复
0
查看
774
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部