请问怎样把字符串转化为一个类?(0分)

  • 主题发起人 主题发起人 forgot2002
  • 开始时间 开始时间
F

forgot2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个过程Procedure Test1(AClass:TClass);如果这样调用Test1(TButton)肯定一点
问题都没有,但如果我用字符串变量存储类名,应该怎样调用呢?
象这样:
Var TClass_name:String;
begin
TClass_name:='TButton';
Test1(TClass_name);//这句肯定编译不通过,问题应该怎么改呢?
end;
Test1过程我是不会改的,所以不要叫我改Test1的参数。
 
呆呵。你要作什么。。。
 
Test1(TClass(TClass_name));//
 
什么意思?
 
今天看到你回答我的MMTools的问题,才发现你有问题有一个我遇到过。
呵呵,用这个:
function FindComponent(const AName: string): TComponent;
 
以前看到过类似的问题,就是根据用户输入的类名创建对象,可以用RegisterClasses这个
函数,但是程序中还是要将待注册的类名写进去,也不能做到由程序随意控制。

你全文检索一下RegisterClasses,就能找到那些帖子了。
 
楼上的兄弟说的我全知道,xiaoer所说的只是找Component,而且还要是Form上的,显然不
符合我所提的问题,象dirk兄所说的,我根本不用提这个问题了,写RegisterClass累不累
呀?我要的是通用过程,自己也不知道会转换什么类,比如说“Thello”,是转换不了的,
给出出错提示,"TFont"是可以转换的,Delphi采用什么机制在启动时就注册自己所认识的
所有类呢?
 
Var TClass_name:String;
begin
if TForm(Self).FindComponent(TClass_name) <> nil then Begin
Test1(Self.FindComponent(TClass_name));//这句肯定编译通过,问题已经解决请给分
end;
end;
 
楼上的兄弟真是莫名其妙,我不是一早说过不行了吗?FindComponent函数只是找Component,而且还要是Form上的,显然不
符合我所提的问题
 
我老觉得可以做。但我没有做过。
我还不大明白你的意思。

forgot2002
你以前在CSDN吗?
 
不可能的,你的要求已经是一个编译器的工作了,你要做编译器吗?

即使编译器,没有uses类所在的unit,也无法做到你要求的“通用转换”。

如果你要做,也许你该看api,好像有个函数可以创建类,要传入类结构描述。

工作量应该不小!
 
就是因为难解决,我才放上来讨论的呀!
 
type
TClass_name = class(String)
end;
var
cn: TClass_name;


Test1(cn)
 
为得设想是完全可以的,
不过作起来可是很复杂的,
我就稍说一下我的思路,

可以在程序中生成一个PAS文件,
里面写有需要运行期生成类的定义,
这个也可是早写好的,也可是运行期生成的。

反正你的这个单元文件中得有你想执行的东西,
这时,当然要对它进行编译了,但不用担心,
根本不用自己写编译器的,因为Delphi自己有呀,
就在BIN目录下,是一个命令行编译器,
你就调用它,来给你刚设计好的单元文件编译,

当然不是只编译单独的单元文件了,
同时生成相应的项目文件了,可能是Dll项目文件,
也可以是BPL的项目文件,

我想一定有不少人明白我这是什么意思了,
就是把它们写成插件,用一起发行的Delphi编译器一同发行,
在你需要什么新的东西时,就由自己的程序去生成相应的Delphi程序,
并调用Delphi命令行编译器把它编译成插件,由软件动态调用,并使用它,

不知这样好不好玩,但我知道一定是挺麻烦的,
呵呵,有谁作出来了,可不要忘了分给我一份,
我不收创意费的,

其实我对这种方式,已构思了很久了,只是没时间作作试试。
 
再向上顶顶
 
类名的实例化java和c#可以轻松实现,换语言吧.
 
to 程云:
命令行编译器是bin下面的那个make.exe吗?就这一个文件吗?能不能说说怎么用。
不会用,make + 一个dpr文件,或pas文件,都说不能打开,怎么用呢?
 
to dirk:
是一个叫dcc32.exe的那个文件。

它是用命令参数,或.cfg文件来控制编译的。
你可在命令行中键入dcc32.exe/?来查看参数的具体含义
或参看一样介绍这个的文章。
 
多谢,程云。
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部