delphi中函数的声明和调用是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中函数的声明和调用是啥意思?相关的知识,希望对你有一定的参考价值。
初学Delphi,经常看到资料上写声明一个什么什么函数,然后怎样怎样调用,我不知道声明函数是在干什么,怎么声明,又怎么调用呢,而且声明函数的位置是否唯一?我看到有的说在type下面,有的在$R *.dfm下面,这是怎么回事?希望高手指点一下,最好能帮我举个小例子,谢谢。
都可以的就纯单元文件而言(不是窗体的pas)
举例
unit Global;
interface
uses
Windows,Forms,Dialogs,SysUtils,DB, ADODB;
Function Connection:Integer; //申明一个连接数据库函数
var
AppConfig:TIniFile; //配置文件读 0写对象
implementation
function readconfig:boolean;
begin
读取数据库配置文件
end;
Function Connection:Integer; // 连接数据库函数的具体实现
Begin
if readconfig then
begin
连接数据库代码
end
else
begin
showmessage('读取配置文件失败');
end;
end;、
里面有2个函数 Connection就是在type下 readconfig就是在implementation下
区别就是Connection这样申明可以被其他单元条用 而 readconfig就只能被它下面的代码和函数条用。
因为这个是纯pas文件 所以没有$R *.dfm
如果是在窗体的pas里
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
私有函数可以声明在这儿 只能被本pas调用
public
公有函数可以声明在这儿 可以被其他pas调用
end;
var
Form1: TForm1;
implementation
$R *.dfm
局部函数可以声明在这儿。可以被以下的函数调用
以上说明2种pas 调用方式 前者只要引用pas 然后直接执行Connection即可
而后者因为函数式属于TForm1 这个类下面的 所以调用要引用这个单元文件后
执行 Form1.函数名 例如 form1.sss;
另外还可以在函数内部再声明函数‘
例如 过程sss内部还有个getid函数 只能被sss里面的代码调用
procedure TForm1.sss;
function getid:integer;
begin
result:=111;
end;
var
k:integer;
begin
k:=1;
showmessage(inttostr(getid+k));
end; 参考技术A delphi采用PASCAL语言,它是一个与C语言类似的语言,是一个规范化的语言,它要求任何变量都必须先声明、定义,再使用。所以任何函数也都是先声明、创建,在被调用。 参考技术B 函数声明一般是声明外部的函数,一般是来用调用外部的库文件,位置可以是implementation之前或者之后
type主要是类或者类型的定义关键字,
$R *.dfm其中 $R 是一个编译指令, 用来链接资源文件的
例:
type
TAAAA = class
private
procedure Setxxx(Value: Integer);
end; 参考技术C
这个不是几句话能说清楚的,你看看下面Delphi的单元结构:
看点资料,弄懂这个结构你就什么都清楚了,这也是学习Delphi必须。实现部分也还可以有单元引用,上图漏了。这里的“局部”还不是函数或过程中局部变量之类的“局部”,是指只有本单元后面的函数或过程才能使用的局部量。Delphi的窗体单元同样遵循这个结构。
本回答被提问者采纳这个函数声明中 -> List[int] 是啥意思? [复制]
【中文标题】这个函数声明中 -> List[int] 是啥意思? [复制]【英文标题】:What is the meaning of -> List[int] in this function declaration? [duplicate]这个函数声明中 -> List[int] 是什么意思? [复制] 【发布时间】:2019-10-23 15:38:15 【问题描述】:想看懂这个函数的声明:->List[int]:
我已经学习了 Python 的基础知识,以前从未见过这样的函数声明
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
【问题讨论】:
python.org/dev/peps/pep-3107/#id32 【参考方案1】:这是一个所谓的“类型提示”(或“函数注释”;这些从 Python 3.0 开始可用)。
-> List[int]
表示函数应该返回一个整数列表。
nums: List[int], target: int
表示 nums
应为整数列表,target
应为整数。
不过,这不是硬性要求,也就是说,您仍然可以使用为这些参数传递的不同类型的对象调用函数,并且该函数还可以返回与整数列表不同的东西(与 Java 等其他语言不同,提供错误的类型会导致编译错误)。换句话说:类型提示与程序执行无关,它们在运行时被忽略(忽略类型提示只是默认行为,但它们在运行时通过__annotations__
可用,所以你可以 和他们做点什么)。
类型提示可以表达作者的意图,并且可以在程序执行之前通过mypy 等工具进行检查(例如,这些可以检查一个函数是否仅使用正确类型的参数调用并返回正确类型的内容) .
请注意,List
在标准命名空间中不可用(与 list
不同),但(至少在 Python 3.9 之前)需要从 typing
导入,这也是
Set
、Dict
、Tuple
、Callable
等。
允许定义自己的类型
提供其他类型的类型化版本,例如 NamedTuple
而不是 namedtuple
从 Python 3.9 开始,也可以使用标准的 list
构造函数作为类型提示,请参阅 here。
【讨论】:
我是新手,这是一个深入的解释。谢谢,我很感激【参考方案2】:这是 3.5 版的新功能。您可以查看文档。https://docs.python.org/3.5/library/typing.html
【讨论】:
以上是关于delphi中函数的声明和调用是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
delphi中调用一函数function(Index :OleVariant),其中Index :OleVariant应该填写啥,OleVariant是啥