首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么调用其他单元函数

2013-01-07 
如何调用其他单元函数在cSwitchSchemeService.pas中定义了unit cSwitchSchemeService{$I VersionControl

如何调用其他单元函数
在cSwitchSchemeService.pas中定义了
unit cSwitchSchemeService;

{$I 'VersionControlOption.inc'}

interface

uses
  uSwitchConsts, cBTSInfo, cSwitchSchemeInfo, cSwitchSchemeDao, cNEBasicSrv,
  Classes, DB, DBClient;

type
  TSwitchSchemeService = class(TNEBasicSRV)
  private
    FSchemeDAO: TSwitchSchemeDao;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    public
        function UpdateToSwitchScheme(): Boolean;
  end;
然后在cMonitorService.pas中调用UpdateToSwitchScheme函数
unit cMonitorService;

{$I 'VersionControlOption.inc'}

interface

uses
  uCMUnifyGlobal, uSouthConsts, cDeviceInfo, uPubCtls, uParamCtls,
  DBClient,cSwitchSchemeService;

type
  TMonitorService = class
  private
  
  protected
       FSwitchSchemeSrv: TSwitchSchemeService;
    
    public
    constructor Create;
    destructor Destroy; override;
  function MonitorSrv: TMonitorService;
 end;

implementation
........
if FSwitchSchemeSrv = nil then  FSwitchSchemeSrv.Create;
       FSwitchSchemeSrv.UpdateToSwitchScheme;
........
结果程序运行期间到调用这个函数时就出现了Access violation at address的错误,是我调用的方式不对吗?还是什么原因,新手,望各位大侠多指教

[解决办法]
constructor Create(AOwner: TComponent); override;//这里不是有个参数么??
if FSwitchSchemeSrv = nil then  FSwitchSchemeSrv.Create;//你这里没有参数?
我的意思是你这里有个参数Owner: TComponent,但你创建时并没有传值进去。
2.有可能是你UpdateToSwitchScheme里面调用了为NIL的参数。
[解决办法]
FSwitchSchemeSrv:=TSwitchSchemeService.Create(nil);

热点排行