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

用datasnap上载文件回来后,再处理时提示禁止访问

2013-01-20 
用datasnap下载文件回来后,再处理时提示禁止访问本帖最后由 ldjssoft 于 2012-10-23 00:39:31 编辑用datas

用datasnap下载文件回来后,再处理时提示禁止访问
本帖最后由 ldjssoft 于 2012-10-23 00:39:31 编辑 用datasnap下载文件一个jpg图片回来后,显示在image里面,在再上传回去时,报错提示“另一个程序正在使用此文件,进程无法访问”,连直接在文件夹里双击都不能打开这个图片,非得把我这个程序给关了,这个图片才能正常双击打开。 求助如何解决。

另外下载后,服务器上的那个文件也会进入死锁状态。代码如下请大家帮我看看是什么原因。



procedure TDtM.DownFile(fsName,FileMl,SaveMl: string;savefile:String='');
const
BufSize = $F000;
var
Stream, FS: TStream;
MyMemStream:TMemoryStream;
Buffer: TBytes;
ReadCount: Integer;
begin
  if savefile='' then
    savefile:=SaveMl+ExtractFileName(fsName);     //FileMl服务器上文件目录,保存到本地目录 SaveMl
  try
    Stream := aiapp.DownLoadFile(fsName,FileMl);
    FS := TMemoryStream.Create;
    MyMemStream:=TMemoryStream.Create;
    try
      if Stream.Size = -1 then // 大小未知则一直读取到没有数据为止
      begin
        SetLength(Buffer, BufSize);
        repeat
          ReadCount := Stream.Read(Buffer[0], BufSize);
          if ReadCount > 0 then
            FS.WriteBuffer(Buffer[0], ReadCount);
          if ReadCount < BufSize then
            break;
        until ReadCount < BufSize;
      end
      else // 大小已知则直接复制数据
        FS.CopyFrom(Stream, 0);
        MyMemStream.LoadFromStream(FS);
        MyMemStream.SaveToFile(savefile);
     //   showmessage('下载成功.');
    finally
      FS.free;
      MyMemStream.Free;
    end;
  finally

  end;
end;

[解决办法]
谢谢。虽然根本看不懂 !! 

热点排行