为什么我的动态连接库不能用 create(self) (100分)

  • 主题发起人 主题发起人 meiguibao
  • 开始时间 开始时间
M

meiguibao

Unregistered / Unconfirmed
GUEST, unregistred user!
Function PutFile(host:string;remotefile:string;localfile:string;username:string;pwd:string):integer;
var
cSourFile : String;
lResult : integer;
MyFtp : TIdFTP;
begin
lResult := 1;
cSourFile := 'D:/ftp/ftp.txt';
MyFtp := TIdFTP.Create(self); ///////出错的地方 [Error] MyFtp.dpr(18): Undeclared identifier: 'self'
MyFtp.Host := '192.168.168.201';
MyFtp.User := 'ftpuser';
MyFtp.Password := 'ftp';
try
MyFtp.Connect();
MyFtp.Put(cSourFile,'ftp.txt',False);
except
lResult := 0;
end;
MyFtp.Abort;
MyFtp.Quit;
Result := lResult;
end;

 
你的函数定义不在类内部,即你的SELF是不存在的,一般如果你定义TFORM的成员函数,
函数的SELF就表示TFORM的实例,解决方法:1 将SELF改成NIL 2 传递一个参数,用参数
做parent
 
用 Create(nil)
 

MyFtp := TIdFTP.Create(nil);
 
Function Put_File(host:string;remotefile:string;localfile:string;username:string;pwd:string):integer;export;stdcall;
var
MyFtp : TIdFTP;
begin
MyFtp := TIdFTP.Create(nil);
MyFtp.Host := Trim(host);
MyFtp.Username := Trim(username);
MyFtp.Port := 21;
MyFtp.Password := Trim(pwd);
try
MyFtp.Connect();
except
MyFtp.Abort;
MyFtp.Quit;
Result := 2;
EXIT;
end;
try
MyFtp.Put(Trim(localfile),Trim(remotefile),True);
// MyFtp.Put('D:/person/ftp/readme.txt','readme.txt',False);
except
MyFtp.Disconnect();
MyFtp.Abort;
MyFtp.Quit;
Result := 3;
Exit;
end;
MyFtp.Disconnect();
MyFtp.Abort;
MyFtp.Quit;
Result := 1;
end;
exports
Put_File;

用VFP调用时死机,不知道是那的错

请指教
 
晕,self是这个类本身,你这个函数是静态函数怎么可以有self,
估计是抄袭代码抄的太过头了,不知其所以然。。。
 
对不起,写错了
 
用MyFtp.Put(Trim(localfile),Trim(remotefile),false);
 
类的方法才有Self默认参数......
 
第一个问题已解决,那位仁兄告诉我第二个问题,是怎么回事,

即VFP调用我这个动态连接库死机
 
多人接受答案了。
 
后退
顶部