delphi自定义函数该怎么声明?

作者&投稿:褒古 (若有异议请与网页底部的电邮联系)
Delphi自定义函数声明及调用问题!~

很幸运能帮到你。自定义函数声明可以放在窗体内,也可以放在窗体外的单元文件内。两种都可以。
一、按一般的情况,公共函数放到窗体外的单元文件Pas文件内声明。如下代码正确:
var
frm_main: Tfrm_main;
Function Get_item_list(tbname, fdname: String; alist: TStrings): Boolean;//在这里声明不出错,但函数功能实现不了!
然后实现代码也没错。
最后调用时分两种情况:
1,在别的单元文件内的其他窗体内调用。需要在其他单元文件内implementation关键字后加上引用该单元文件:uses uni_main;然后在使用的地方直接Get_item_list('tb资料设置_客户', '所属省份',quprovince.Items );并不需要加uni_main.因为他在窗体对象之外声明,是公共函数。引用了该单元文件后,这个调用能够找到该函数声明和实现。
2,在本单元文件内调用。这样简单。只需要一步。直接Get_item_list('tb资料设置_客户', '所属省份',quprovince.Items );并不需要加uni_main.这个引用。因为这个自定义函数不属于窗体对象。

二、按特殊情况,这个自定义函数要放到窗体内部。那么,声明用:
public
{ Public declarations }
pubEmpNo,pubEmpName:string;
procedure CopyDbDataToExcel(Target: TDbgrid);
Function Get_item_list(tbname, fdname: String; alist: TStrings): Boolean; // 在这里声明的话出错!



end;

这个也没错。但是函数体的实现部分应该是加上uni_main.这个引用。注意下列代码的函数头部分加上该引用(其他地方不变):
函数如下:
Function uni_main.Get_item_list(tbname, fdname: String; alist: TStrings): Boolean;
Begin
alist.BeginUpdate;
alist.Clear;
Try
Try
With TADOQuery.Create(Nil) Do
Begin
Try
Close;
LockType := ltReadOnly;
Connection := DM.AdoConn;
Sql.Clear;
//SQL.Add(Format('select %s from %s where %s is not null', [fdname, tbname, fdname]));
SQL.Add(Format('select %s from %s', [fdname, tbname]));
Open;
While Not Eof Do
Begin
alist.Add(FieldByName(fdname).AsString);
Next;
End;
Close;
Finally
Free;
End;
End;
Except On E: Exception Do
Begin
Application.MessageBox(PChar(E.Message), 'msg', 64);
End;
End;
Finally
alist.EndUpdate;
End;
End;

如果在另一个单元文件调用的时候,注意在另一个单元文件的implementation关键字后同样uses uni_main;然后调用时候也要加上(uni_main包含窗体名字).Get_item_list(参数1,。。。。);这样你编译就会通过了。

TForm2.去掉

定义函数,放到全局变量前面去;


delphi函数一共有多少个??
至于delphi究竟有多少函数,这个恐怕连编写DELPHI的人也难说清楚,再说搞清这个问题也没有什么意义,谁去数一本英汉词典中的词条呢?知道就用,不知道就查。函数与过程相比,不同是函数的作用是通过返回值来体现的,而过程就是直接产生某种动作。自定义函数就是你自己写的函数,就叫自定义函数,有时懒得...

Delphi程序的时限和加密方法
程序第一次运行就写入其运行时间 应用期限为 天 超过 天就不再运行 全局变量NoRegistry SpareDays来分别判断是否注册和剩余期限 自定义函数Encrypt为用户名到 密码的变换函数 一 程序启动时 通过搜索注册表 判断是否第一次运行和是否注册 来确定程序是否运行 procedure TForm FormCreate(Sender: TObject);...

Delphi中自己定义的procedure中调用exit显示为什么不可以。、exit相当于...
以下供参考:一、在 delphi 里,exit 用于退出当前的函数。二、自定义过程或函数,如果没有特殊要求,通常将这个函数定义在类窗体里比较方便一些,比如,上面的函数可以用以下代码来定义:procedure TForm1.dfs1(step:Integer);三、从代码中来看,变量 n 和 a 并没有在函数体内部定义,那么就只能是...

delphi中cannot find implementation of method edit2chang.
您好,出现这个错误的原因应该是您忘记了给这个edit2chang自定义函数作声明。这个错误信息从字面上翻译就是“无法找到方法edit2chang的实现。”在Delphi中使用一个自定义的函数之前,首先要在代码中的implementation区域给函数做一个声明,具体的做法就是在那些编译器自动添加的方法(如按钮消息处理函数)后面...

DELPHI基础教程:Delphi自定义部件开发(一)[1]
Delphi除了支持使用可视化部件所见即所得地建立应用程序外 还支持为开发应用而设计自己的部件 在本章中将阐述如何为Delphi应用程序编写部件 这一章将达到两个目的 ● 教你如何自定义部件 ● 使你的部件成为Delphi环境的有机组合部分 Delphi部件原理 什么是部件 部件是Delphi应用程序的程序构件 尽管大多数部件...

请问Delphi高手,控制台程序里使用函数,不用Type声明吗?
是的,不用type声明,用type的话代表数据类型,当声明数据类型时用它;函数和过程可以直接写,例如:function addit(a,b):integer;var x1,x2:integer begin result:=x1+x2;end;函数嵌套是在原有函数的基础上再嵌套一个或几个函数,其声明和实现和第一个一样,你也可以在多个单元中声明不同的...

Delphi如何发送自定义消息
发送自定义消息与发送系统消息没多大区别,仅仅是消息内容不一样。例如:const WM_DO_SOMETHING = WM_USER + 100;...PostMessage(Form2.Handle, WM_DO_SOMETHING, 0, 0);注意:如果自定义消息的发送者和接受者不是在同一个应用程序里面,那么需要先调用API函数RegisterMessage来注册这个自定义消息。

DELPHI基础教程:Delphi自定义部件开发(二)[4]
Delphi部件库定义了将所有Windows消息(包括用户自定义消息)直接转换到对象方法调用的消息派送系统 一般没有必要改变这种消息派送系统 只要建立消息处理方法 ⑴Windows消息中有什么? Windows消息是包含若干有用的域的数据记录 记录中最重要的是一个整型大小的值 该值标识消息 Windows定义了大量的消息 库单元Messages声明了...

DELPHI 创建自定义类对象必须要Txxx.Create吗?我不这样也能用怎么回事...
1.Txxx.create表示用这个类的构造方法 实例化这个对象,就好比java 一样,只是java的构造函数是跟类同名,java 用 new xxxx()2,你说的直接edit1 : TEdit 的情况 是 你拖动一个edit 到 窗口上,然后发现声明了一个edit1 : TEdit ,对吧。其实 ,在你拖动的过程中delphi 帮你在后台做...

delphi程序问题 下面的代码什么意思?
看见列出的代码应该是 dataset 的吧, 具体应该是想描述怎么清空数据集的,此处作答为本人个人理解 具体分析如下:CheckActive 检测活动开启状态,如果 State = dsInactive 既激活错误 SDataSetClosed 数据集关闭,if State = dsInactive then DatabaseError(SDataSetClosed, Self);CheckBrowseMode 浏览模式...

兴山县15112148544: delphi自定义函数该怎么声明? -
驹雅更年: 定义函数,放到全局变量前面去;

兴山县15112148544: delphi如何声明函数 -
驹雅更年: 函数和过程的区别在与函数有返回值,而过程没有~参数是可有可无的~function aa():string //返回字符串procedure as();//过程

兴山县15112148544: delphi中怎样自定义函数 -
驹雅更年: ...... interfaceuses...... function aaa(abc: string): Boolean; // 这一句是函数声明,告诉编译器说你声明了名叫aaa的函数im....function aaa(abc: string): Boolean; beginif abc = '' then Result := Trueelse Result := False; end; // 是不是很简单呢?

兴山县15112148544: delphi自定义函数写在那里? -
驹雅更年: 在private或USES内声明 然后在implementation的地方写实现代码 ;再或单独放在一个unit单元文件里,在uses引用,然后直接引用即可.

兴山县15112148544: 在DELPHI中怎样定义函数 -
驹雅更年: 在 delphi 里定义函数可以使用关键字 function,如果不需要返回值的,可以使用 procedure.函数定义的示例如下: function aaa(abc:string):Boolean;function 函数名(参数1名称:参数类型; 参数2名称:参数类型......) : 返回值类型.

兴山县15112148544: delphi如何声明函数
驹雅更年: function MyFunction(): Boolean;

兴山县15112148544: delphi7中,自定义函数在程序中什么编写 -
驹雅更年: 给你个列子 声明一个函数 //ping网络 function fucPing(url: String): Boolean;函数实现//ping网络function fucPing(url: String): Boolean;var aIdICMPCl...

兴山县15112148544: 如何在delphi中的class下面添加自己定义的procedure或FUNCTION -
驹雅更年: TMyObject=class private FID: Integer; function DoFun1: Integer; protected procedure DoProc1; virtual; public procedure DoProc2; published property ID: Integer read FID write FID; end 类似这样的类型定义,就包含了函数的声明,你需要加强基础的学习

兴山县15112148544: delphi 自定义一个有四个输入参数,有两个相同类型的返回结果的函数,如何定义 -
驹雅更年: 比如你想写个函数func,按照你的说法,在delphi中应该定义为procedure而非function,具体写法如下:procedure func(EDate,SDate:TDatetime; i, k:Integer; var BSDate,BEDate:TDatetime);

兴山县15112148544: delphi 如何声明这个函数?? -- 在线等待!
驹雅更年: type TArrayStirng = array of string; TArrayString8 = array of string;function f(mArr: TArrayString8): TArrayString;begin//....end;//....var A: TArrayString8; B: TArrayString;begin B F(A);end;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网