【发布时间】:2012-07-03 08:36:53
【问题描述】:
在 Java 中,我们有类似 VarName.toString 的东西来识别 var 的名称。
我在 Delphi 中有一个代码,我需要实现相同的目标,因为我有一个 record 类型,其中包含许多我需要识别的子字符串:
type
THierarchyAccess = String; // receive the user permissions from the MySQL DB
THierarchy = record
MOD_HIERARQUIA : THierarchyAccess; // 'BROWSE_ONLY', 'MANAGE', 'NONE'...
MOD_OPERADORES : THierarchyAccess;
MOD_ESTATISTICAS : THierarchyAccess;
MOD_AUDITORIA : THierarchyAccess;
MOD_HOMEPAGE : THierarchyAccess;
MOD_HOTSITES : THierarchyAccess;
MOD_MATRIZ : THierarchyAccess;
MOD_NOTICIAS : THierarchyAccess;
MOD_VISITANTES : THierarchyAccess;
...
end;
...
function TAccess.IsAccessPermited(apNeed, apHave: String): Boolean;
begin
// HERE I need to know not only the content of "apHave",
// but if it came from THierarchy.MOD_HOTSITES or THierarchy.MOD_MATRIZ etc.
end;
...
if IsAccessPermited('BROWSE_ONLY', MyHierarchy.MOD_HOTSITES) then Form2.Open;
有没有一种优雅的方法来识别传递给函数的变量名是什么?
【问题讨论】:
-
不。
if MyHierarchy.MOD_HOTSITES = 'BROWSE_ONLY' then怎么了? -
如果我没有获得许可信息,我会向自己(支持)发送一封电子邮件,告诉我 MyHierarchy.???来自用户 XXXX 的信息不完整。
-
您可以在从数据库加载权限数据时发送电子邮件,而不是在检查您拥有的数据时发送电子邮件。然后你就有了数据库字段名称,并且可以使用它而不是尝试获取记录字段名称。
-
Java 中没有这样的 toString 方法。 Object#toString 返回对象的字符串表示形式,而不是保存该对象的变量的名称。
标签: delphi function variables parameter-passing delphi-2006