请问下边的Delphi代码如何转为C++Builder?
procedure TFTPServer.IdFTPServer1StoreFile( ASender: TIdFTPServerThread;
const AFilename: string; AAppend: Boolean; var VStream: TStream ) ;
begin
if FileExists( translatepath( AFilename, ASender.HomeDir ) ) and AAppend then
begin
VStream := TFileStream.create( translatepath( AFilename, ASender.HomeDir ) , fmOpenWrite or fmShareExclusive ) ;
VStream.Seek( 0, soFromEnd ) ;
end
else
VStream := TFileStream.create( translatepath( AFilename, ASender.HomeDir ) , fmCreate or fmShareExclusive ) ;
end;
关键是这句VStream = new TFileStream(...);行不行?那在哪里delete呢?
这是Indy9的FTPServer Demo,我在里面没有找到destroy的调用啊
不懂Delphi,高手莫笑
[解决办法]
sfile=TransLatePath(AFileName,ASender.HomeDir);
if (FileExists(sfile) && AAppend){
VStream=new TFileStream(sfile,Sysutils::fmOpenWrite | Sysutils::fmShareExclusive);
VStream-> Seek(0,soFromEnd);
}else{
VStream=new TFileStream(sfile,Classes::fmCreate | Sysutils::fmShareExclusive);
}
VStream的释放由Indy负责
[解决办法]
var VStream: TStream
----
这是引用参数,在这里,应该是返回给调用者的,由调用者释放