怎样字符串取变量名(100分)

  • 主题发起人 主题发起人 YuD
  • 开始时间 开始时间
Y

YuD

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个单元里定义了一些字符串变量并赋值,如
C_a:='.....';
C_c:='.......';
c_sdf:='.......';
变量名称没有规律,变量内容是创建表的SQL语句,在C_后边的是数据库表名称

在另一个单元的一个过程中定义字符串变量Creat_table变量,用来创建表,
在变量值为'C_表名称',我想通过变量值 ‘C_表名称’ 对应创建数据表的响应变量,
把创建表的变量赋值给Creat_table变量。例如
Creat_table:='C_a';
..(变量转换).....
Creat_table:=C_a;
请问中间的转换过程该怎样些?
 
先建一结构体
type ddd=eee;
aa:string
//c_a,c_b,...
bb:string
//sql语句
end;
再建一数组
type ff:array[1..x] of ddd;

变量转换
for i:=1 to x do
if creat_table:=ff.aa then
begin
creat_table:=ff.bb;
break;
end;
 
用字符串取变量名应该不行的,因为变量需要定义的,你在什么地方定义呢?

可以用字符串在创建类的实例,条件是这个类已经注册。
 
to 西山居士
目前我也是类似的方法实现的
type tCrea_Scrip=Record
Name:String;
Value:String;
end;

var
Crea_Scrip:array[0..18] of tCrea_Scrip;
i:integer;
for i:=0 to 18 do begin
if Crea_Scrip.Name='c_a' then begin
Create_Scrip:=Crea_Scrip.Value;
Break;
end;
end;

请各位朋友想一想还有没有更好的办法
 
var
SValueList: string =
'C_a=select * from a' + #13#10 +
'C_c=select * from b' + #13#10 +
'c_sdf=update x set f=1';

ValueList: TStringList;

begin
ValueList := TStringList.Create;
ValueList.Text := SValueList;
//...
ShowMessage(ValueList.Values['C_a']);
ShowMessage(ValueList.Values['C_b']);
ShowMessage(ValueList.Values['c_sdf']);
//...
ValueList.Free;
end;

 
更正betar的错误,应该是手误:
ShowMessage(ValueList.Values['C_b']);->ShowMessage(ValueList.Values['C_c']);

beta真是牛人一个!
 
谢谢各位的指导。
 

Similar threads

回复
0
查看
866
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
后退
顶部