Delphi接口

本文介绍了一个使用Delphi编写的程序实例,包括单元文件的结构、组件使用及外部DLL调用的方法。通过示例代码展示了如何创建按钮响应事件、调用外部DLL中的函数,并解释了句柄的概念及其在窗口查找中的应用。

我的程序1,可以运行
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure ConnFilesM(pw,user,db,computer:string) stdcall;external 'bin\ConnDBDll.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   ConnFilesM('a','a','a','a');
end;

end.

 

http://bbs.youkuaiyun.com/topics/60297694

----------==========

 

http://hi.baidu.com/xingfupingguo/item/8735f87def880a28d6a89c20

 

定义常量可以在type上 ,变量可以在 private public 或者protect里定义。或者在implement上的var里定义全局变量搜索

 

 

unit PubSQL;

interface
uses Windows, Forms, PubParaLib, SysUtils, Dialogs, DB, ADODB, StdCtrls, PubDataModul;

type
TGetDataSet = procedure(var ADOQuery:TADOQuery; SQL:String); Stdcall;
TGetTextData = function(ID:Integer; StrList:Array of String):String; Stdcall;
TGetSQLText = Function(Sn, ID:Integer): String; Stdcall;
TStratDataList = Procedure(ADOConn: TADOConnection; UserName: String); Stdcall;

function _CuTextData(ID:Integer; StrList:Array of String):String;
function _CuSQLData(SQLType: TCuSQLServerType; ID: Integer): string;

procedure GetNewDataSet(var ADOQuery:TADOQuery; SQL:String);
function GetNewTextData(ID:Integer; StrList:Array of String):String;
function GetNewSQLText(Sn, ID:Integer):String;
Procedure OpenTextDataList;

var
TextHandle:THandle;

implementation

就是定义一个类型,跟字符串,整型等等一样,都是一种类型。不过它就一个函数类型,多用于属性。常看到的,例如你看OnClick事件,它是在TControl里这样定义的
property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored;
其中 TNotifyEvent 是这样定义的
TNotifyEvent = procedure(Sender: TObject) of object;
你在生成这个事件的时候,可以看到它会有一个OnxxxxClick,它的定义就是
procedure OnxxxxClick(Sender: TObject) ;
然后就这个事件就是跟那个OnClick关联起来的。只不过这里的是过程,而你提到的是函数。但其实是一样的。

----------==

 

源代码

procedure TfrmMain.SendCompass(Value : Double);
var
  ds:TCopyDataStruct;   
  hd:THandle; ************************* 1
  S: string;
begin
  S := FloatToStr(Value);
  ds.cbData:=length(S)+1;
  GetMem(ds.lpData,ds.cbData);   
  StrCopy(ds.lpData,PChar(S));
  hd:=FindWindow搜索(nil,'Compass');   *********************************2
  if hd<>0 then*********************************3
    SendMessage(hd,WM_COPYDATA,frmMain.Handle,Cardinal(@ds)); 
  FreeMem(ds.lpData);

该程序中1处 THandle 是什么类型 3处 为什么可以对他进行是否为0的条件判断?
如果是判定FindWindow(nil,'Compass')>0 又是什么意思? 

findwindow()是起什么功能的 ?

 

handle它就是个长整型,可以跟integer比较一下,
FindWindow(nil,'Compass')>0 说明能找到这个窗口的句柄,找不到则返回空/0,

FindWindow只是查找窗口,但是找到的窗口并不一定是当前窗口。

一个窗口有2个部分组成,1个是窗口的类名,一个是窗口的窗口名称。通常情况下,我们自己做的窗口类名和窗口名称都是知道的,因为是自己给它们加上去的。但对于模板窗口,我们一般是不知道它的类名的,但它的窗口名称是可以知道的,就是显示在标题栏中的标题,就是它的窗口名称。 
当有2个窗口在桌面上时,一个窗口有个编辑框,而另一个没有编辑框。当我们想要用那个有编辑框的窗口时,必须先得到那个窗口的句柄,FindWindow就是帮助我们取得这个窗口句柄。 
我们可以任意指定FindWindow中两个参数的其中一个,或同时2个都指定来找到那个带有编辑框的窗口,然后FindWindow就会返回这个窗口的句柄(hwnd)。 
窗口类名好比人的小名,窗口标题名称好比是人的大名。 
我们一般知道一个人的大名,但不太清楚他的小名如对话框的类名#32776。FindWindow给了我们两个参数,以便我们在不知道一个人小名的情况下,可以通过大名来找到该人。

 


 


【轴承故障诊断】加权多尺度字典学习模型(WMSDL)及其在轴承故障诊断上的应用(Matlab代码实现)内容概要:本文介绍了加权多尺度字典学习模型(WMSDL)在轴承故障诊断中的应用,并提供了基于Matlab的代码实现。该模型结合多尺度分析与字典学习技术,能够有效提取轴承振动信号中的故障特征,提升故障识别精度。文档重点阐述了WMSDL模型的理论基础、算法流程及其在实际故障诊断中的实施步骤,展示了其相较于传统方法在特征表达能力和诊断准确性方面的优势。同时,文中还提及该资源属于一个涵盖多个科研方向的技术合集,包括智能优化算法、机器学习、信号处理、电力系统等多个领域的Matlab仿真案例。; 适合人群:具备一定信号处理和机器学习基础,从事机械故障诊断、工业自动化、智能制造等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并掌握加权多尺度字典学习模型的基本原理与实现方法;②将其应用于旋转机械的轴承故障特征提取与智能诊断;③结合实际工程数据复现算法,提升故障诊断系统的准确性和鲁棒性。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注字典学习的训练过程与多尺度分解的实现细节,同时可参考文中提到的其他相关技术(如VMD、CNN、BILSTM等)进行对比实验与算法优化。
【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)内容概要:本文档围绕“可再生能源发电与电动汽车的协同调度策略研究”展开,旨在通过Matlab代码复现硕士论文中的核心模型与算法,探讨可再生能源(如风电、光伏)与大规模电动汽车接入电网后的协同优化调度方法。研究重点包括考虑需求侧响应的多时间尺度调度、电动汽车集群有序充电优化、源荷不确定性建模及鲁棒优化方法的应用。文中提供了完整的Matlab实现代码与仿真模型,涵盖从场景生成、数学建模到求解算法(如NSGA-III、粒子群优化、ADMM等)的全过程,帮助读者深入理解微电网与智能电网中的能量管理机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、智能电网、电动汽车等领域技术研发的工程人员。; 使用场景及目标:①用于复现和验证硕士论文中的协同调度模型;②支撑科研工作中关于可再生能源消纳、电动汽车V2G调度、需求响应机制等课题的算法开发与仿真验证;③作为教学案例辅助讲授能源互联网中的优化调度理论与实践。; 阅读建议:建议结合文档提供的网盘资源下载完整代码,按照目录顺序逐步学习各模块实现,重点关注模型构建逻辑与优化算法的Matlab实现细节,并通过修改参数进行仿真实验以加深理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值