to kingron:
怎么说呢?实际上我想实现的是一个基于程序执行流程定制的软件。举个例子来说,对于一项任务的完成有三中不同的方法,对于每一种方法需要按一定的顺序调用同一函数集的相关的函数来执行,通过界面用户可以选择不同的执行方式,而应用程序就需要根据用户的选择来分别执行不同的流程。我想问如何实现这个设计思想。
我想过这样一个方法:将每种方法实现所用的函数名和相关参数变量以一定的格式存在一个INI文件或数据库中,在程序启动时调入内存中专门建立的一个记录结构中,然后可以根据执行顺序通过DLL调用函数。但是在一个执行流程中一个函数执行完毕后如何接着执行下一个函数呢,如何实现程序的顺序执行呢,是不是还需要一个调度模块来实现?我现在的思路很乱,想不明白。而且我觉得我这种方法总是有些怪怪的,想了解是否还有更好的方法?你能不能让我清醒一下?
不知我这么说你明白吗?
怎么说呢?实际上我想实现的是一个基于程序执行流程定制的软件。举个例子来说,对于一项任务的完成有三中不同的方法,对于每一种方法需要按一定的顺序调用同一函数集的相关的函数来执行,通过界面用户可以选择不同的执行方式,而应用程序就需要根据用户的选择来分别执行不同的流程。我想问如何实现这个设计思想。
我想过这样一个方法:将每种方法实现所用的函数名和相关参数变量以一定的格式存在一个INI文件或数据库中,在程序启动时调入内存中专门建立的一个记录结构中,然后可以根据执行顺序通过DLL调用函数。但是在一个执行流程中一个函数执行完毕后如何接着执行下一个函数呢,如何实现程序的顺序执行呢,是不是还需要一个调度模块来实现?我现在的思路很乱,想不明白。而且我觉得我这种方法总是有些怪怪的,想了解是否还有更好的方法?你能不能让我清醒一下?
不知我这么说你明白吗?
TMyProcess = procedure(........);
var
FirstFunc :TMyProcess;
SecondFunc:TMyProcess;
ThirdFunc :TMyProcess;
.
.case UserSelect of
1 : begin
FirstFunc := FuncA;
SecondFunc := FuncB;
ThirdFunc: := FuncC;
end;
2: begin
FirstFunc := FuncB;
SecondFunc:= FuncC;
ThirdFunc := FuncA;
end;
default: begin
FirstFunc := FuncC;
SecondFunc:= FuncA;
ThirdFunc := FuncB;
end;
FirstFunc(ParamList..);
SecondFunc(ParamList...);
ThirdFunc(ParamList...);
谢谢!不过在定义过程指针时参数的问题不好解决,由于要使用多个函数,总不能为每个函数定义一个过程指针吧!另外如果交由用户重组执行的流程,那时如何动态的使用CASE语句?不知道我理解的对不对,我没具体用过过程指针。不过我会给分的!