如何在运行期根据名称(string)得到值,有函数么?(50分)

  • 主题发起人 主题发起人 天堂鸟6420
  • 开始时间 开始时间

天堂鸟6420

Unregistered / Unconfirmed
GUEST, unregistred user!

const
x='123'
y= '456'
一个Edit1输入框
根据输入的字符'x'或者'y' showmessage相应的值
类似FindComponent
 
普通的类型编译后就变成了一个地址,变量名信息已经没有了。
所以作不到(no way)。
 
可以!不过不能单纯的象你这样做;你用记录指针;下面是代码:
type
TInfo = packed record
AName: string;
Text: string;
end;
PInfo = ^TInfo;
private
AList:TList;
p:PInfo;
procedure TForm1.FormCreate(Sender: TObject);
begin
AList:=TList.Create(nil);
new(p);
p.Aname:='x';
p.text:='123';
Alist.add(p);
new(p);
p.Aname:='y';
p.text:='456';
Alist.add(p);
end;
var
i:integer;
begin
new(p);
For i:=0 to Alist.Count-1 do
begin
p:=AList.items;
if Trim(Edit1.text)=p.Aname then
begin
showmessage(p.Text);
end;
end;
end;
最后在 procedure TForm1.FormClose里面 加入 Alist.free;
随手写的!应该可以;绝对满足你的要求!给分吧!
 
这么简单就好了,也怪我说得不清楚
我的实际解决问题是,有50或者更多的函数(过程)分别命名为GetXXXXCalc
一个输入框,只要输入对应的XXXX就调用对应的函数执行
还有一点就是每个GetXXXXCalc都在不同的单元
实在不行就只有考虑做成dll了
 
函数过程都有地址。调用时。按地址
 
能否考虑将这50或者更多的函数(过程)设计为若干个类,每个类中都有同名的一个类过程,class get×××,然后在edit框中输入的名称作为类名去调用这个类过程来返回值。
如果可行参考函数:function FindClass(const ClassName: string): TPersistentClass;
 
请参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=2420610

可能有帮助
 
to fenian:能不能再说详细点,编个例子最好,还有就是调用的方法有参数的
本人水平不够,只能如下方法达到部分功能,还不知道如何把参数带进去
var
vTestEvent: TNotifyEvent;
begin
Pointer((@@vTestEvent)^) := self.MethodAddress(edit1.Text);
if Pointer((@@vTestEvent)^) = nil then
showmessage(pchar('没有找到指定函数:'+ Edit1.Text))
else
begin
Pointer(Pointer(Integer(@@vTestEvent) + 4)^) := Pointer(Self);
vTestEvent(nil);
end;
end;
 
var
A: TNotifyEvent;
begin
@A := Self.MethodAddress(Edit1.Text);
if @A <> nil then
A(nil);
end;
 
楼上说的跟我的有什么区别吗?
var
vTestEvent: TNotifyEvent;
begin
Pointer((@@vTestEvent)^) := self.MethodAddress('MyProc');
if Pointer((@@vTestEvent)^) = nil then
showmessage(pchar('没有找到指定函数:'+ 'MyProc')) //如何传入X,y
else
begin
Pointer(Pointer(Integer(@@vTestEvent) + 4)^) := Pointer(Self);
vTestEvent(nil);
end;
end;

published
procedure MyProc(x,y:Integer);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
504
import
I
后退
顶部