定义函数(100分)

  • 主题发起人 主题发起人 wangyuwen
  • 开始时间 开始时间
W

wangyuwen

Unregistered / Unconfirmed
GUEST, unregistred user!
with modbyr1e10do
begin
Lock_bcdm38.First;
while not Lock_bcdm38.eofdo
begin
if save_flag = False then
Break;
Lock_bcdm38.Edit;
Lock_bcdm38rectp.value := '9';
save_flag := Cancel_bcdm38;
Lock_bcdm38.Next;
end;
if save_flag = False then
begin
Result := False;
Exit;
end;
将上述程序断定以为函数或过程,有关说明如下:
modbyr1e10 :DataModule;
Lock_bcdm38:TQuery;
Lock_bcdm38rectp:TStringField;
Cancel_bcdm38:Function;
save_flag :boolean;
 
type
C_func = function : Boolean;
function MyFunc(qr: TQuery;
fld: TStringField;
cancelfunc: C_func;
save_flag: boolean): boolean;
begin
result := save_flag;
qr.First;
while not qr.eofdo
begin
if not save_flag then
Break;
qr.Edit;
fld.value := '9';
save_flag := Cancefunc;
qr.Next;
end;
result := save_flag;
end;

调用:
with modbyrle10do
myfunc(lock_bcdm38, lock_bcdm38rectp, cancel_bcdm38, true);
 
with modbyr1e10do
begin
Lock_bcdm38.First;
while not Lock_bcdm38.eofdo
begin
if save_flag = False then
Break;
Lock_bcdm38.Edit;
Lock_bcdm38rectp.value := '9';
save_flag := Cancel_bcdm38;
Lock_bcdm38.Next;
end;
end;
我有一个程序需要将上述程序段,写一个函数,其中modbyr1e10定义了Lock_bcdm38:TQuery;Lock_bcdm38rectp:TStringField;
Cancel_bcdm38:Function;如何做一个函数来传递上述modbyr1e10:TDataModule;
Lock_bcdm38:TQuery;Lock_bcdm38rectp:TStringField
;Cancel_bcdm38:Function;

 
劝您别传datamodule. 标准datamodule中并没有什么lock_bcdm38等等东西.
要传datamodule得直接操作typeinfo数据才能实现
或者用if datamodule is TModbyr1e10 then
... else
if .... else
....
调用时指定datamodule又简单又直观而且程序量不大
 
Another_eYes您好!
按您提供的方法,在编译时出现下面的出错信息:
Incompatible types:regular procedure and method pointer
 
调用:
with modbyrle10do
myfunc(lock_bcdm38, lock_bcdm38rectp, @cancel_bcdm38, true);
顺便问一句, 您的cancel_bcdm38是function还是function of object? (类内
还是类外?)
 
cancel_bcdm38是function
 
myfunc(lock_bcdm38, lock_bcdm38rectp, @cancel_bcdm38, true);
 
能否请教一下当cancel_bcdm38是function of object时,它和Function 在定义和调用上有何不同
 
接受答案了.
 

Similar threads

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