给解释下delphi的一个自定义函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给解释下delphi的一个自定义函数相关的知识,希望对你有一定的参考价值。

//获取数据表某个字段全部值函数的实现
function GetFieldValue(const tblTableName:TDataSet;strFieldName: string):TStrings;
var
TableRecordNum: Integer;
begin
Result:=TStringList.Create;//创建字符串列表
Result.Clear;//清空字符串列表
TableRecordNum := tblTableName.RecNo;//数据表记录数
tblTableName.First;
while not tblTableName.EOF do
begin
Result.Add(tblTableName[strFieldName]);//向字符串列表添加只段值
tblTableName.Next;
end;
tblTableName.MoveBy(TableRecordNum);
end;

TStringList怎么来的?在哪定义的?什么意思?
tblTableName.RecNo中的RecNo是什么意思?
Result呢?
tblTableName.MoveBy(TableRecordNum);呢?
谢谢高手。

Result:=TStringList.Create;//创建字符串列表
因为你看你这个函数的返回值是TStrings,而tstrings是一个抽象类,不能实例化的,所以必须用它的子类来实例化,所以这里采用了TStringList。不信你去看一下vcl继承关系就能给看出来了。
你把鼠标放在TStringList上选择帮助就可以查看,这是系统定义的类,这个语句表示建立一个这个类的实例(变量)并初始化。

tblTableName是你的程序定义的一个变量,这个变量具体有RecNo等哪些字段要看你自己的程序,是什么含义更好全面分析你的程序,写程序的人知道。
参考技术A Result:=TStringList.Create;//创建字符串列表
你把鼠标放在TStringList上选择帮助就可以查看,这是系统定义的类,这个语句表示建立一个这个类的实例(变量)并初始化。

tblTableName是你的程序定义的一个变量,这个变量具体有RecNo等哪些字段要看你自己的程序,是什么含义更好全面分析你的程序,写程序的人知道。

javascript中的自执行函数

学习es6的时候遇到了自执行函数,感觉有必要写下来,一方面加深自己的记忆,另一方面还能分享给大家。

什么是自执行函数?

自执行函数就是为了不污染全局变量命名空间的一中匿名函数,相当于自己创建了一个作用域,下面我来说一下它的原理:

function foo() {...}     // 这是定义,Declaration;定义只是让解释器知道其存在,但是不会运行。
foo();                   // 这是语句,Statement;解释器遇到语句是会运行它的。

上面的函数就是传统的函数,它写起来有点啰嗦,而且会污染全局命名空间,这样对我们来说并不友好,所以自执行函数就出现了,写法如下:

(function foo() {...})();
(function foo() {...}());//推荐使用这种形式

上面的代码块就是自执行函数的两种形式,推荐使用下面的这种形式,具体好在哪我也不清楚,也许是因为包裹起来更像封装了一个函数,大家可以这么理解。传统的函数比如:function foo(...){} ,它其实是一种声明,对于解释器来说,就好像你写了一个字符串 "function foo(...){}",它需要使用解析函数,比如 eval() 来执行它才可以。所以把 () 直接放在声明后面是不会执行,这是错误的语法。如何把它变得正确?说起来也简单,只要把 声明 变成 表达式(Expression) 就可以了。也就是上述代码块中的函数。

希望大家能理解,我也就不胜荣幸了。

  

 

 

 

 




以上是关于给解释下delphi的一个自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

Delphi自定义函数声明及调用问题!

FastReport调用Delphi中的自定义函数

Delphi 高手 自定义公式

vue自定义指令,包装函数节流。

delphi 自定义公式

Delphi中Stringlist的自定义排序(将函数地址做为参数)