枚举类变量列表(200分)(200分)

  • 主题发起人 主题发起人 g_xl@21cn.com
  • 开始时间 开始时间
G

g_xl@21cn.com

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]请请各位大虾:
有什么办法可以枚举出一个类的内部除属性以外的所有变量,类似delphi编辑器内的弹出下拉列表框内的内容
[/red]
 
你要对整个类的文件进行分析。没有什么技术难度但是很麻烦。你问这种问题不会有人给你提供现成的源代码的,我只能把思路告诉你,还是自己写吧。
 
列出枚举类型所有值的例子:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, TypInfo, StdCtrls;

type
TEnum = (One, Two, Three, Four, Five);

TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
t: PTypeInfo;
d: PTypeData;
i: Integer;
begin
t:=TypeInfo(TEnum);
d:=GetTypeData(t);
for i:=0 to d.MaxValue do
ListBox1.Items.Add(GetEnumName(TypeInfo(TEnum), i))
end;

end.
 
不知你实在运行期还是在设计期实现此想法,也不知变量是如果是在属于哪一部分
运行期
只有published的变量才能得到其名称和类型,其他部分是没有运行期信息的
在DCU和DCP中到有此信息(仅限于protected往后),但这是编译期信息,用起来十分的麻烦,剩下的也只有分析源码的方式实现了
 
To
Kevin.C,pr80:我是想在运行时用,用于设计一个类似Delphi设计环境的工具,因为我的类是从TObject继承过来的,我想看有什么可以偷懒的办法;
LeeChange:你可可能理解错我的意思了;
谢谢大家的支持
 
《Delphi5 开发人员指南》中有你想要的。下载一个找找看。
 
你的变量是指哪些?不会是函数内部的局部变量也算吧?
 
据我的经验,你的想法是行不通的
 
还是那句话很麻烦,你目前做的工作其实是borland编译器所作的预处理工作。你要对整个类文件进行分析,安照语法进行处理还要对语人为的语法错误进行错误提示,还要保证你的程序在遇到人为的语法错误时不会崩溃......这只是一些最基本的工作。如果不是商业项目我还是劝你不要去动它
 
后退
顶部