当前位置:主页>仓库管理软件> 列表

关于函数的引用问题

企业管理软件版1楼: 我在unitA里面的public里面声明了一个函数DBExist,我想在unitB里面引用它,应该怎么做.
我把uses 里面加入了unitB,是不是首先要把unitA对象初始化,请各位指点

2楼: 把uses 里面加入了unitB
就可以了 实在不行试试unitB.DBExist 如好用财务软件

3楼: 不用,你直接调用UnitA对应的Form(假如是Form1)就可以了,这样做:
Form1.DBExist( );
如果是无窗体的Unit,建议你这样写函数:
unit UnitA;

interface

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

procedure MyInformation(MyMessage: String);

implementation

procedure MyInformation(MyMessage: String);
begin
MessageBox(GetForegroundWindow(),pchar(MyMessage),''提示'',MB_ICONINFORMATION+MB_OK);
end;

end.

使用时,在Use 了 UnitA后,直接调用
MyInformation(''这样就行了!'');

4楼: 在unitB中,要增加如下代码:

public
A : unitA


begin
if A = nil then
A := unitA.Create(nil);
try
A.DBExist();
finally
A.Free;
end;
end;

如果A已经创建,按照如下的方式引用:
begin
A.DBExist();
end;

5楼: uses unitA;

6楼: 你在unitA里面的public里面声明一个函数DBExist,想在unitB里面引用它,则可以在
unitB里面 uses unitA,然后直接用类的对象变量调用此函数。
比如你的unitA里面定义的类为MyClass,你的DBExist是这个类的public函数,在unitB里
uses unitA,并有 var AClass :MyClass,则可以直接用AClass.DBExist进行调用,但这里
要注意几点:
1。函数可以通过对象变量调用,如果DBExist是静态函数,则可以不用创建(初始化)对象
AClass而直接调用,但如果DBExist是虚函数(即声明为 virtual),则要创建对象后才
能调用(即通过对象实例进行函数调用);
2。如果对象还没创建就用对象变量调用DBExist,则要确保函数DBExist里面访问的数据
都是合法的,也就是如果DBExist里有访问对象成员的代码,要确保该对象成员已经
实例化,否则将出现内存访问错误;如果函数里访问的数据是基本数据类型,则要
初始化,否则访问的数据是没有意义的随机数。