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

请教下边的Delphi代码怎么转为C++Builder

2012-02-08 
请问下边的Delphi代码如何转为C++Builder?procedureTFTPServer.IdFTPServer1StoreFile(ASender:TIdFTPServ

请问下边的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

----

这是引用参数,在这里,应该是返回给调用者的,由调用者释放

热点排行