帮忙想个方法用整型实现枚举的可读性(标题很学术, 呵呵)
是这样的, 我写了一个执行存储过程的类继承TADOStoredProc, 存储过程是有很多输入参数的嘛, 这些参数的读写是通过Index的方式的, 比如
TMyStoredProc.Params[Index] = Value,
问题来了, Index一般都是1, 5, 6, 9这样没有意义的数字, 现在我的想法是用枚举来做Index, 比如
Type Param = (Name, Age, Height);
那我这可以这么用
TMyStoredProc.Params[Name] = Value
当然Params的Write Procedure的签名就变了
由SetParams(I: Inetger; V: Variant) -> SetParams(I: Param; V: Variant)
这样显然就不能把俺写的类做成一个通用的类了, 因为每个具体存储过程实现我都需要定义一个不同的枚举!
有木有同学给个方案! 分不多, 100送上!
谢谢
M.
[解决办法]
整型可以转化成枚举啊
[解决办法]
var
p: Param;
id: Integer;
begin
id := Ord(Param);
end;
[解决办法]
// 不知是不是要表达这个意思
type
Param = (Name, Age, Height, Width); // 可以随意定义这个枚举
var
p: TParameter;
stored: TMyStoredProc;
begin
stored := TMyStoredProc.Create(nil);
p := stored.Parameters.AddParameter;
p.Name := 'Name';
p.Value := '阿扁';
p := stored.Parameters.AddParameter;
p.Name := 'Age';
p.Value := '50';
p := stored.Parameters.AddParameter;
p.Name := 'Height';
p.Value := '100cm';
p := stored.Parameters.AddParameter;
p.Name := 'Width';
p.Value := '10000kg';
// 通过参数名来访问参数值
ShowMessage(stored.Parameters.ParamByName('Name').Value);
ShowMessage(stored.Parameters.ParamByName('Age').Value);
ShowMessage(stored.Parameters.ParamByName('Height').Value);
ShowMessage(stored.Parameters.ParamByName('Height').Value);
stored.Free;
end;