• Delphi自定义单元模块和调用_全局函数、全局过程、全局变量、全局常量定义


    Delphi的基础研究记录

     

    当我们熟悉了一个第一语言后去学习另一种语言,往往但会想到 第一语言的功能。Delphi这门语言基于 VB 和 VC++ 之间的一个语言,非常不错,很快上手了。

    下面定义个自定义模块。不过我喜欢叫 单元模块。 因为 Delphi 的程序代码是 由N个单元构成,其实这里的单元就是 VB里面的模块差不多。下面的这个单元模块,里面没有对象实现。但是函数和过程,还有全局变量和全局变量初始化和全局常量。

    这里有一个错误比较特殊,就是 当你写了关键字后,但是没有 写接下来的匹配的代码他就会提示

    Identifier expected but 'PROCEDURE' found错误 

    Identifier expected but 'function' found错误  

    比如你写了uses但是没写 单元模块名,那就直接给你报错。

    你写了  var 但是没写 变量声明,那也直接给你报错。

    1. unit MyMode; //本单元模块名 为 MyMode ,如果要使用本单元模块中的全局变量 或 函数 过程 可以 将本单元模块名 写到 uses 关键字下面 即可。
    2. //接口部分
    3. interface
    4. //引用其他单元模块
    5. uses
    6. Dialogs;
    7. // 声明函数或过程
    8. function TestA(s:string): string;
    9. procedure TestB(s:string);
    10. procedure TestC();
    11. //声明全局变量
    12. var // var 关键字下无 变量 声明,就不要写! 会造成Identifier expected but 'PROCEDURE' found错误 或 Identifier expected but 'function' found错误
    13. g_abc:string = 'g_abc=模块中全局变量测试'; //声明全局常量,同时赋值
    14. g_efg:string ;
    15. const //全局常量的声明
    16. g_hij:string = 'g_abc=模块中全局常量测试'; //声明全局常量,同时赋值
    17. //实现
    18. implementation
    19. //一、实现函数 TestA
    20. function TestA(s:string):string;
    21. var
    22. a: String;
    23. begin
    24. a:='提示内容为 ';
    25. g_efg:= 'g_efg=模块中的全局变量已被修改'; //这个只是测试,说明政府变量是全局的,不仅可以再本单元里面可以被修改,还可以被外部的程序所修改
    26. // ShowMessage( a+s) ;
    27. result:=g_abc;
    28. end;
    29. //二、实现函数 TestB
    30. procedure TestB(s:string);
    31. begin
    32. ShowMessage('你好 '+s);
    33. end;
    34. //三、实现过程 无参数的过程
    35. procedure TestC();
    36. begin
    37. ShowMessage('你好');
    38. end;
    39. end.

    那么以上的函数和变量 是要在 From1窗体里面被调用的,我们怎么调用了。下面的代码

    1. unit Unit1;
    2. interface
    3. uses
    4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5. Dialogs, StdCtrls,MyMode;
    6. //如果你将一个 按钮 放进一个窗体,你就自动地使用了StdCtrls单元,因为TButton构件在StdCtrls中定义
    7. type
    8. TForm1 = class(TForm)
    9. Button1: TButton;
    10. Button2: TButton;
    11. Button3: TButton;
    12. procedure Button1Click(Sender: TObject);
    13. procedure Button2Click(Sender: TObject);
    14. procedure Button3Click(Sender: TObject);
    15. private
    16. { Private declarations }
    17. public
    18. { Public declarations }
    19. end;
    20. var
    21. Form1: TForm1;
    22. implementation
    23. {$R *.dfm}
    24. procedure TForm1.Button1Click(Sender: TObject);
    25. var
    26. ret:string;
    27. begin
    28. ret := MyMode.TestA('111');
    29. ShowMessage(ret); // ShowMessage 这个函数在 Dialogs 这个单元模块里面
    30. end;
    31. // API函数调用
    32. procedure TForm1.Button2Click(Sender: TObject);
    33. var
    34. a:HWND; //Delphi 也有 句柄这个数据类型
    35. begin
    36. a:= 0;
    37. MessageBoxA(a,'今天天气不错','侠客提示',0); // MessageBoxA 函数在 Windows这个单元模块里面
    38. end;
    39. procedure TForm1.Button3Click(Sender: TObject);
    40. var
    41. ret:string;
    42. begin
    43. MyMode.
    44. MyMode.g_abc := '1111111111111111111';
    45. ret := MyMode.g_abc ; //这个据说是常量,但是我这边可以修改
    46. ShowMessage(ret); // ShowMessage 这个函数在 Dialogs 这个单元模块里面
    47. end;
    48. end.

  • 相关阅读:
    ZYNQ从放弃到入门(十二)- AMP — Zynq 上的非对称多核处理器
    Docker -- 01实践:使用Docker 快速安装Jenkins
    小满网络模型&http1-http2 &浏览器缓存
    什么是指针的指针和指向函数的指针?
    interview review
    Llama3-8B到底能不能打?实测对比
    双十一报告:服饰企业借助团队管理工具飞项高效协作
    CSS 笔记
    PHP基于thinkphp的网上图书管理系统#毕业设计
    计算机毕业设计django基于python爬虫系统(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/i735740559/article/details/128186763