起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 238|回复: 9

【搞定】移动文件[请求]**

[复制链接]
发表于 2007-8-14 02:01:42 | 显示全部楼层 |阅读模式
我在平台里用OpenDialog打开一个硬盘上的文件(任意的,比如图片什么的),经过写代码可以保存到相应的数据库字段里.比如如下代码:

var
  lStream: TMemoryStream;
begin
  if OpenDialog1.Execute then
  begin
   lStream := TMemoryStream.Create;        //创建一个内存流
    try

      OleContainer3.CreateObjectFromFile(OpenDialog1.FileName,False);
      OleContainer3.SaveToStream(lStream);     //取到文件并写入流中
      DataSetBroker1.DataSet.Edit;       //设置数据集
      lStream.Position := 0;                      //设置流头
      TBlobField(DataSetBroker1.DataSet.FieldByName('WJ3')).LoadFromStream(lStream);              //把流写入数据库

    finally
      lStream.Free;                                           //释放流
    end;
  end;

我现在不需要将文件写入数据库,只要将他复制到硬盘的一个地方,比如,将D:\justep\x3.jpg    复制到  C:\Test\x3.jpg  .怎么实现呢?

谢谢啊
回复

使用道具 举报

发表于 2007-8-14 08:55:42 | 显示全部楼层
Borland.Delphi.Windows.CopyFile('c:\tmp.xls','c:\tmp1111.xls', False);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 15:12:28 | 显示全部楼层
Borland.Delphi.Windows.CopyFile('c:\tmp.xls','c:\tmp1111.xls', False)
中:
写明路径可以实现,用变量好象不好用.比如改成如下:

    OpenDialog.Execute;
    Borland.Delphi.Windows.CopyFile('OpenDialog.FileName '  ,  'D:\ss11.jpg', False);


我在下面放
Edit1.Text := OpenDialog.FileName;  显示路径,
但在 Borland.Delphi.Windows.CopyFile(  ..)  中好象没有值.

实现不了功能.
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:52:30 | 显示全部楼层
没有理解,你是说执行 CopyFile 后 没有产生文件?你看 Edit1.Text  这个值对不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 16:54:21 | 显示全部楼层
对   没有复制东西
Edit1.Text的值是路径加文件名  我跟踪是正确的.
,当路径文件名写出时是正确的,可行的,用'OpenDialog.FileName就不行.

要不你看看这个:


procedure TForm_YD.Button2Click(Sender: TObject);
begin
    OpenDialog.Execute;
    Edit1.Text := OpenDialog.FileName;
    Borland.Delphi.Windows.CopyFile('OpenDialog.FileName','D:\资料\ss11.jpg', False);
end;
回复 支持 反对

使用道具 举报

发表于 2007-8-14 17:01:02 | 显示全部楼层
Borland.Delphi.Windows.CopyFile('OpenDialog.FileName '  ,  'D:\ss11.jpg', False);

请吧'OpenDialog.FileName '  两边的单引号去掉
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 18:10:21 | 显示全部楼层
谢谢!

两边的单引号去掉后可以了.

要是文件从在,就提示,像在xp中复制粘贴一样,平台里怎么做呢?

我写了个if 语句,判断文件名是否相同,不太好用,只提示还是强制换掉,加了个中断, 编译不下去 谁有现成代码吗?

谢谢啊.
回复 支持 反对

使用道具 举报

发表于 2007-8-15 09:47:11 | 显示全部楼层
写了个if 语句,判断文件名是否相同,不太好用
你咋写的帖出来看看。
http://bbs.justep.com/forum.php?mod=viewthread&tid=15529
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 16:37:43 | 显示全部楼层
begin
   OpenDialog.Execute;
   SaveDialog1.Execute;
     while sysutils.FileExists(SaveDialog1.FileName) do
       begin
         if jsDialogs.ConfirmBox('此文件已存在,确定要替换它吗?','系统询问',2)then
           begin
            if jsDialogs.ConfirmBox('此文件正在使用,不能覆盖,是否退出?','系统询问',2)then
              //Edit1.Text :='a' ;   //退出测试值
              exit            //退出
            else
              SaveDialog1.Execute;
           end
         else
           begin
             SaveDialog1.Execute;
           end;
       end;

     if sysutils.FileExists(SaveDialog1.FileName) then
       begin
        // Edit2.Text :='a';           //复制失败测试值
           jsDialogs.MsgBox(0,'操作失败','提示',0);
       end
     else
       begin
       // Edit2.Text :='b';            //复制成功测试值
        Borland.Delphi.Windows.CopyFile(OpenDialog.FileName,SaveDialog1.FileName, False);
          DataSetBroker1.DataSet.FieldByName('字段1').AsString :=SaveDialog1.FileName;
          jsDialogs.MsgBox(0,'操作成功','提示',0);
     end;

以前的修改掉了,我也不知道了

上面那个是测试通的.可以用的.  大家看看  要是没有问题分享分享.
回复 支持 反对

使用道具 举报

发表于 2007-8-16 10:24:10 | 显示全部楼层
谢谢共享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-14 01:06 , Processed in 0.037776 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表