有用过MDaemon的吗?

Again 2001-02-08 02:26:00
MDaemon下面有一个Dll,有一份用VC写的头声明,我想把它转成pas,但是总是出错。有没有用过MDaemon的?
因为以前问过这个问题,但是没有解决所以先给20分,如果可以解决我再加分。
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ether 2001-02-09
  • 打赏
  • 举报
回复
我用Mdaemon,是MDUserImports.h吧?
下个http://www.drbob42.com/headconv下个*.h到*.pas的小软件,再手工修改吧。
Again 2001-02-09
  • 打赏
  • 举报
回复
http://www.drbob42.com/headconv没找到啊。

MD-API.html里有一段对MDaemon API的描述(见下边),我把它译成pas:

=====================================================vc=======
#define DOMAIN_LEN 45
#define MAILBOX_LEN 30
#define FULLNAME_LEN 30
#define MAILDIR_LEN 90
#define PASSWORD_LEN 20
#define MAXMESSAGECOUNT_LEN 4
#define MAXDISKSPACE_LEN 6
#define EMAIL_LEN MAILBOX_LEN+DOMAIN_LEN+1
#define FWDADDR_LEN 256
#define FWDHOST_LEN 64
#define FWDSENDAS_LEN 128
#define FWDPORT_LEN 8
#define USERDEFINED_LEN 256

struct MD_UserInfo
{
char Email[EMAIL_LEN+1];
char Mailbox[MAILBOX_LEN+1];
char Domain[DOMAIN_LEN+1];
char FullName[FULLNAME_LEN+1];
char MailDir[MAILDIR_LEN+1];
char Password[PASSWORD_LEN+1];
bool AutoDecode;
bool IsForwarding;
bool AllowAccess;
bool AllowChangeViaEmail;
bool KeepForwardedMail;
bool HideFromEveryone;
bool EncryptMail;
bool ApplyQuotas;
bool EnableMultiPOP;
bool LocalOnly;
long MaxMessageCount;
long MaxDiskSpace;
int WebConfig;
char FwdAddress[FWDADDR_LEN+1];
char FwdHost[FWDHOST_LEN+1];
char FwdSendAs[FWDSENDAS_LEN+1];
char FwdPort[FWDPORT_LEN+1];
char NTAccount[MAILBOX_LEN+1];
char MailFormat[MBXFORMAT_LEN+1];
char AutoRespScript[MAX_PATH+1];
char AutoRespProcess[MAX_PATH+1];
char AutoRespExclude[AUTORESPEXCLUDE_LEN+1];
char AddToList[EMAIL_LEN+1];
char RemoveFromList[EMAIL_LEN+1];
bool PassMessageToProcess;
long MaxUIDLCount;
long MaxMessageSize;
char UserDefined[USERDEFINED_LEN+1];
};

================================================Delphi====
unit Unit1;

interface

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

const
DOMAIN_LEN=45;
MAILBOX_LEN=30;
FULLNAME_LEN=30;
MAILDIR_LEN=90;
PASSWORD_LEN=20;
MAXMESSAGECOUNT_LEN=4;
MAXDISKSPACE_LEN=6;
EMAIL_LEN=MAILBOX_LEN+DOMAIN_LEN+1;
FWDADDR_LEN=256;
FWDHOST_LEN=64;
FWDSENDAS_LEN=128;
FWDPORT_LEN=8;
USERDEFINED_LEN=256;
MBXFORMAT_LEN=32;
AUTORESPEXCLUDE_LEN=5001;

type
MD_UserInfo=packed record
Email:array[0..EMAIL_LEN+0] of char;
Mailbox:array[0..MAILBOX_LEN+0] of char;
Domain:array[0..DOMAIN_LEN+0] of char;
FullName:array[0..FULLNAME_LEN+0] of char;
MailDir:array[0..MAILDIR_LEN+0] of char;
Password:array[0..PASSWORD_LEN+0] of char;
AutoDecode:boolean;
IsForwarding:boolean;
AllowAccess:boolean;
AllowChangeViaEmail:boolean;
KeepForwardedMail:boolean;
HideFromEveryone:boolean;
EncryptMail:boolean;
ApplyQuotas:boolean;
EnableMultiPOP:boolean;
LocalOnly:boolean;
MaxMessageCount:integer;
MaxDiskSpace:integer;
WebConfig:integer;
FwdAddress:array[0..FWDADDR_LEN+0] of char;
FwdHost:array[0..FWDHOST_LEN+0] of char;
FwdSendAs:array[0..FWDSENDAS_LEN+0] of char;
FwdPort:array[0..FWDPORT_LEN+0] of char;
NTAccount:array[0..MAILBOX_LEN+0] of char;
MailFormat:array[0..MBXFORMAT_LEN+0] of char;
AutoRespScript:array[0..MAX_PATH+0] of char;
AutoRespProcess:array[0..MAX_PATH+0] of char;
AutoRespExclude:array[0..AUTORESPEXCLUDE_LEN+0] of char;
AddToList:array[0..EMAIL_LEN+0] of char;
RemoveFromList:array[0..EMAIL_LEN+0] of char;
PassMessageToProcess:boolean;
MaxUIDLCount:integer;
MaxMessageSize:integer;
UserDefined:array[0..USERDEFINED_LEN+0] of char;
end;


TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function MD_AddUser(UserInfo:MD_UserInfo;Flags:integer):integer;stdcall;
external 'C:\MDaemon\App\MDUser.dll';

procedure MD_InitUserInfo(UserInfo:MD_UserInfo);stdcall;
external 'C:\MDaemon\App\MDUser.dll';

implementation

{$R *.DFM}

procedure let(var a:array of char;b:string);
var
i:integer;
begin
//setlength(a,length(b)-1);
for i:=0 to length(b)-1 do
a[i]:=b[i+1];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
UserInfo:MD_UserInfo;
ret:integer;
begin
// Copy new account defaults into structure
MD_InitUserInfo(UserInfo);

// copy data into UserInfo members
let(UserInfo.FullName,Edit1.Text);
let(UserInfo.Domain,Edit2.Text);
let(UserInfo.Mailbox,Edit3.Text);
let(UserInfo.MailDir,Edit4.Text);

ret:=MD_AddUser(UserInfo, 0);
showmessage(inttostr(ret));
end;

end.

可是一调 MD_InitUserInfo(UserInfo);
就出错。问题出在哪啊?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧