【发布时间】:2011-05-13 06:52:25
【问题描述】:
我有这样的记录:
Tcustomer=record
Name: string;
IDNumber: Integer;
IsMarried: boolean;
end;
我有一个TCustomers_Manager 类,用于存储所有客户的列表。是否可以有这样的程序:
Procedure ChangeCustomer(CustomerIndex: integer; field: string; value);
设置该特定字段的值。例如:
ChangeCustomer(1, 'Name','John');
我该如何实现?
更新:澄清一下,我的问题基本上分为两部分:
1) 如何将字段名称(字符串)映射到记录中的实际字段?
2) 是否可以传递具有不同类型的值?或者我应该传递一个单一的类型并对其进行类型转换(比如传递一个字符串然后使用strtoint())
【问题讨论】:
-
是的,您可以在最新版本的 Delphi 中使用运行时类型信息执行此操作。但是,放弃静态类型系统并不总是一个好主意。您确定需要这样做吗?
-
你指的是哪个“特定领域”?您必须确定您的客户。你使用 IDNumber 吗?这个 IDNumber 是唯一的吗? ChangeCustomer 必须知道要更改哪个客户。您还需要一个“AddCustomer”。 “客户名单”是什么意思? TList 还是数组?我会使用一个小型数据库(可能在内存中)来完成您的任务。
-
@Andreas:请...这只是我有问题的代码的一部分,而不是整个项目!我的班上有一个 TList
。我将在 ChangeCustomer 中传递客户索引。我显然有 AddCustomer() 程序。不,这太简单了,无法使用数据库。