调用其他窗体函数问题
现在有一个被调用 MDaemonAPI_Impl.pas 文件,
主窗体fServerForm,
我想在主窗体fServerForm调用MDaemonAPI_Impl的函数,
已经做了以下两点
1: 在主窗体已经引用被调用文件
2: 被调用的文件的函数已经设置成publi 或者 published都不行
现在可以访问被调文件的部分内容(比如 MDaemonAPI_Impl.TMDaemonAPI.create()),想调函数AddUser()却不行
见主窗体的/*调试行*/ 行代码,那里的adduser怎么也出不来,
何故?
源文件如下
被调用文件
unit MDaemonAPI_Impl;
{$I RemObjects.inc}
interface
uses
{$IFDEF FPC}LResources,{$ENDIF}
{vcl:} Classes, SysUtils,
{RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
{Required:} uRORemoteDataModule,
{Generated:} MDaemonAPILibrary_Intf;
type
{ TMDaemonAPI }
TMDaemonAPI = class(TRORemoteDataModule, IMDaemonAPI)
private
sMessage: AnsiString;
public
{ IMDaemonAPI methods }
function AddUser(const FullName: AnsiString; const UserName: AnsiString; const Password: AnsiString; const Domain: AnsiString): Integer;
function ChangePassword(const Email: AnsiString; const NewPassword: AnsiString): Boolean;
function DeleteUser(const Email: AnsiString): Boolean;
function GetMessage: AnsiString;
end;
implementation
{$IFNDEF FPC}
{$R *.dfm}
{$ENDIF}
uses
{Generated:} MDaemonAPILibrary_Invk, MDUSERCOMLib_TLB;
procedure Create_MDaemonAPI(out anInstance : IUnknown);
begin
anInstance := TMDaemonAPI.Create(nil);
end;
{ MDaemonAPI }
function TMDaemonAPI.AddUser(const FullName: AnsiString; const UserName: AnsiString; const Password: AnsiString; const Domain: AnsiString): Integer;
begin
{内容略}
end;
function TMDaemonAPI.ChangePassword(const Email: AnsiString; const NewPassword: AnsiString): Boolean;
begin
{内容略}
end;
function TMDaemonAPI.DeleteUser(const Email: AnsiString): Boolean;
begin
{内容略}
end;
function TMDaemonAPI.GetMessage: AnsiString;
begin
result:= sMessage;
if AddUser('a','bb','c','d')>0 then
begin
end;
end;
var
fClassFactory: IROClassFactory;
initialization
{$IFDEF FPC}
{$I MDaemonAPI_Impl.lrs}
{$ENDIF}
fClassFactory := TROClassFactory.Create('MDaemonAPI', Create_MDaemonAPI, TMDaemonAPI_Invoker);
// RegisterForZeroConf(fClassFactory,'_MDaemonAPI_rosdk._tcp.');
finalization
UnRegisterClassFactory(fClassFactory);
fClassFactory := nil;
end.
主窗体代码如下
unit fServerForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer,
uROSOAPMessage, uROIndyHTTPServer, ExtCtrls, Menus, ImgList, uROIndyTCPServer;
type
TServerForm = class(TForm)
ROMessage: TROSOAPMessage;
ROServer: TROIndyHTTPServer;
TrayIcon1: TTrayIcon;
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
Exit1: TMenuItem;
Button1: TButton;
Timer1: TTimer;
Label1: TLabel;
Button2: TButton;
N1: TMenuItem;
About1: TMenuItem;
PopupMenu2: TPopupMenu;
inputaccount1: TMenuItem;
addacount1: TMenuItem;
OpenDialog1: TOpenDialog;
procedure Timer1Timer(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure TrayIcon1DblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure inputaccount1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ServerForm: TServerForm;
implementation
uses MDaemonAPI_Impl;
{$R *.dfm}
procedure TServerForm.About1Click(Sender: TObject);
begin
MessageDlg('MDaemon API Server v1.0'#13#10'Service to mail user management for OA.'#13#10'(c)Copyright 2010, samland.gx@gmail.com', mtInformation, [mbOK], 0);
end;
procedure TServerForm.Button1Click(Sender: TObject);
var
r: Integer;
begin
end;
procedure TServerForm.Button2Click(Sender: TObject);
begin
end;
procedure TServerForm.Exit1Click(Sender: TObject);
begin
end;
procedure TServerForm.FormCreate(Sender: TObject);
begin
end;
procedure TServerForm.inputaccount1Click(Sender: TObject);
var
CsvLines, CommaStr: TStringList;
i,j:integer;
begin
if OpenDialog1.Execute then
begin
CsvLines := TStringList.Create;
CommaStr := TStringList.Create;
CsvLines.LoadFromFile(OpenDialog1.FileName); //读取
for i := 0 to CsvLines.Count - 1 do
begin
CommaStr.CommaText := CsvLines[i];
for j := 0 to CommaStr.Count - 1 do
begin
showmessage(CommaStr[j]);
/*调试行*/ if (MDaemonAPI_Impl.TMDaemonAPI.AddUser...) then
begin
end;
end;
end;
CsvLines.Free;
CommaStr.Free;
end;
end;
procedure TServerForm.Timer1Timer(Sender: TObject);
begin
end;
procedure TServerForm.TrayIcon1DblClick(Sender: TObject);
begin
Show;
end;
end.