打开数据库中存的文件(字段image 型)TBlobField(FieldByName('content')).SaveToFile(文件名)//存为临时文件再用 ShellExecute(handle,'open',Pchar(文件名),nil,nil,sw_show)打开临时文件,打开临时文件后自动删除怎么实现?

解决方案 »

  1.   

    一个文件打开后一般好像不能删除了吧,会不会有冲突?可以再shellexecute后面使用删除巴。
      

  2.   

    你指的临时文件只存放在内存中,而你指的删除掉它,只需要释放这块内存资源就可以了。所以应该是用获得TBlobField(...)这个句柄的变量,执行.free等这类操作就可以了。
      

  3.   

    我想用户关闭文件时,文件自动删除,有没有那位知道?
    关闭文件触发的事件是什么?ShellExecute(handle,'open',Pchar(filepath),nil,nil,sw_show);
    DeleteFile(filepath);
    这样我试了不行?
      

  4.   

    try
    ShellExecute(handle,'open',Pchar(filepath),nil,nil,sw_show);
    finally
    if MessageDlg('是否删除?',...)=mrOK then
       DeleteFile(filepath);
    end;
    上面有点BUG,你可以这样处理:
    先不删除文件
    TBlobField(FieldByName('content')).SaveToFile(文件名)
    ShellExecute(handle,'open',Pchar(文件名),nil,nil,sw_show)
    在Form的OnClose中:
      DeleteFile(filepath);
      

  5.   

    jianke5555(剑客)说的有理,但form 的onclose 是程序的onclose而不是临时文件的onclose
    列如我存了一word临时文件,打开浏览后,可能修改,我在关闭此文件时把文件保存到数据库,然后自动删除。如果有临时文件 的onclose事件就好了!!
      

  6.   

    TBlobField(FieldByName('content')).SaveToFile(文件名)//存为临时文件
    //是图象还是文本?
    再用 ShellExecute(handle,'open',Pchar(文件名),nil,nil,sw_show)打开临时文件,打开临时文件后自动删除怎么实现?
    //为何不用控件打开?如果你不想文件存在,可以SAVETOSTREAM吗,然后在LOAD!
      

  7.   

    TBlobField(FieldByName('content')).SaveToFile(文件名)//存为临时文件
    //是图象还是文本?!!!!有图象有文本,各种各样的文件,甚至还有MP3  AVI
    如果AVETOSTREAM怎么LOAD ,我的MP3怎么LOAD ,我的WORD 文档怎么LOAD?谢谢!小弟不明白!!