Delphi的基础研究记录
当我们熟悉了一个第一语言后去学习另一种语言,往往但会想到 第一语言的功能。Delphi这门语言基于 VB 和 VC++ 之间的一个语言,非常不错,很快上手了。
下面定义个自定义模块。不过我喜欢叫 单元模块。 因为 Delphi 的程序代码是 由N个单元构成,其实这里的单元就是 VB里面的模块差不多。下面的这个单元模块,里面没有对象实现。但是函数和过程,还有全局变量和全局变量初始化和全局常量。
这里有一个错误比较特殊,就是 当你写了关键字后,但是没有 写接下来的匹配的代码他就会提示
Identifier expected but 'PROCEDURE' found错误
Identifier expected but 'function' found错误
比如你写了uses但是没写 单元模块名,那就直接给你报错。
你写了 var 但是没写 变量声明,那也直接给你报错。
unit MyMode; //本单元模块名 为 MyMode ,如果要使用本单元模块中的全局变量 或 函数 过程 可以 将本单元模块名 写到 uses 关键字下面 即可。
//接口部分
interface
//引用其他单元模块
uses
Dialogs;
// 声明函数或过程
function TestA(s:string): string;
procedure TestB(s:string);
procedure TestC();
//声明全局变量
var // var 关键字下无 变量 声明,就不要写! 会造成Identifier expected but 'PROCEDURE' found错误 或 Identifier expected but 'function' found错误
g_abc:string = 'g_abc=模块中全局变量测试'; //声明全局常量,同时赋值
g_efg:string ;
const //全局常量的声明
g_hij:string = 'g_abc=模块中全局常量测试'; //声明全局常量,同时赋值
//实现
implementation
//一、实现函数 TestA
function TestA(s:string):string;
var
a: String;
begin
a:='提示内容为 ';
g_efg:= 'g_efg=模块中的全局变量已被修改'; //这个只是测试,说明政府变量是全局的,不仅可以再本单元里面可以被修改,还可以被外部的程序所修改
// ShowMessage( a+s) ;
result:=g_abc;
end;
//二、实现函数 TestB
procedure TestB(s:string);
begin
ShowMessage('你好 '+s);
end;
//三、实现过程 无参数的过程
procedure TestC();
begin
ShowMessage('你好');
end;
end.
那么以上的函数和变量 是要在 From1窗体里面被调用的,我们怎么调用了。下面的代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,MyMode;
//如果你将一个 按钮 放进一个窗体,你就自动地使用了StdCtrls单元,因为TButton构件在StdCtrls中定义
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ret:string;
begin
ret := MyMode.TestA('111');
ShowMessage(ret); // ShowMessage 这个函数在 Dialogs 这个单元模块里面
end;
// API函数调用
procedure TForm1.Button2Click(Sender: TObject);
var
a:HWND; //Delphi 也有 句柄这个数据类型
begin
a:= 0;
MessageBoxA(a,'今天天气不错','侠客提示',0); // MessageBoxA 函数在 Windows这个单元模块里面
end;
procedure TForm1.Button3Click(Sender: TObject);
var
ret:string;
begin
MyMode.
MyMode.g_abc := '1111111111111111111';
ret := MyMode.g_abc ; //这个据说是常量,但是我这边可以修改
ShowMessage(ret); // ShowMessage 这个函数在 Dialogs 这个单元模块里面
end;
end.