Delphi函数和过程
过程无返回值,函数有返回值。
procedure MyProc(m,n : Integer; o : String; p : Single = 2.5; q : String = 'Delphi');
如上例所示,过程声明和定义中,多个参数是用分号隔开的,但在调用时是用逗号隔开的 。eg:
MyProc(3, 4, 'me', 3.14);
上例中省略了最后一个参数,当指定一个参数的缺省值后,其后的所有参数都必须指定一个缺省值,如上面的声明中的参数 p 和 q 。或者说,应该把所有指定默认值的参数放在参数列表的后面。
Delphi函数的值有两种方式返回,第一:把值赋给函数名;第二:把值赋给Result。而Result实际上是函数名的一个别名,同时它也是每一个函数内部自动隐含的局部变量,其类型跟函数的返回类型相同。
一般情况下,使用Result方式返回函数值,而不用函数名来返回。因为在调用一个无参数的函数时只写函数名就可以调用,不像C语言等其它语言一样即使无参数也要在函数名后加上括号,这样很容易不小心就写成递归调用,进入死循环。另外,有时候在coding过程中可能需要修改已经定下的函数名,此时如果用Result返回函数值的话就不需要再修改函数体了。
function Add:Integer;
var
i:Integer;
begin
Result := 0;
for i := 1 to 100 do
Add := Add + i; //死循环
ShowMessage(IntToStr(Result););
end;
需要注意的是,Delphi和其他一些语言不同,它的函数在返回值的时候并不中止函数本身,它总会执行到函数的最后一条语句。如果需要提前退出,可以用 Exit;语句。
相关文档:
相对用第三方控件,CDO发送邮件还是很简洁方便的
注:CDONTS为CDO的子集,仅支持WinNT/Win2K,WinXP以上请用CDO;
单元引用ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
VCDOMessage:oleVariant;
begin
vCDOMessage:=CreateOleObject('CDO.Message');
vcdomessage.from:='MR.F'+'< ......
在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的
DLL或是Pas了。
在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。
示例代码
procedure TForm1.Button1Click(Sen ......
{-----------------------------------------------------------------------------
Unit Name: HashTable
Author: LiuHeng
Date: 2010-04-13
Purpose: 封装Delphi的HashTable
History:
------------------------------- ......
unit MyADO;
interface
uses
SysUtils, Classes,ADODB,DB,Variants,StdCtrls,Dialogs;
type
TMyADO = class(TComponent)
private
Connection: TADOConnection;
Query: TADOQuery;
Table: TADOTable;
FConnectio ......
转载自:http://www.cnblogs.com/jdmei520/archive/2009/06/17/1505053.html
Webservice技术的出现将各种开发技术和语言完全的融合了,下面就这种融合在C#和delphi之间的交互做一次全面的体现
1.使用C#创建一个Webservice服务。
使用vs2005的模板创建C#的webservice非常容易。原文件如下:
[WebService(Namespace  ......