我用大字段对象的LoadFromFile/SaveToFile方法在表中保存了一些可执行文件,发现有些文件保存进去然后再取出来后就不能运行了(文件大小没有变)。出问题的文件的大小既不是最大的也不是最小的,我试了N多次,有几次取出来的文件也是好的。
真是奇怪,那位大侠遇到过这样的问题给小弟指点一二,先谢了!

解决方案 »

  1.   

    操作文件的类有好几种,每个类都有LoadFromFile/SaveToFile方法,你可能类使用错了
      

  2.   

    用的TBlobField类型,ORACLE816数据库。
      

  3.   

    用tfilestream来读取和保存文件。
      

  4.   

    LoadFromFile/SaveToFile肯定没有错,肯定是你自己的问题。我的软件数据存贮部分就是用的TField.LoadFromFile/SaveToFile,运行2年,数据40G了,很稳定,从没有出过你说的现象。建议你检查内存的申请、释放部分,以及软件运行环境
      

  5.   

    听一位高人说过,在Oracle中用文本字段、二进制字段来存数据时就会出现问题,
    只好用图片字段。所以我建议你把数据库中的大字段换成图片字段试试。
      

  6.   

    操作是这样的:
    TBlobField(Table1.FieldByName('Blob')).LoadFromFile('FileName');
      

  7.   

    问题解决了,原来是在将文件保存进数据库时出的问题。我听了一位大侠的指点,在往大字段中保存东西之前先给字段赋个初值:‘1’、‘2’、‘3’或‘a’、‘b’、‘c’等都行,然后再用LoadFromFile装载我想要保存的东西,就没有再出现错误。
    我想这是不是Delphi或Oracle的一个BUG,谁能帮我解释一下这是为什么吗?
      

  8.   

    恭喜你了CHENGXB(大山),这样我也学到新东西.这个解决方案,应该说是一种经验,如果真的要说出其中的理由,可能非常难了。
    不过我想问一下,我给你的方法试了没有呀?这个方法,我是听Kingron说的。
      

  9.   

    谢谢 blazingfire(烈焰) 的关注!
    我是用的BLOB类型,保存图片也可以用BLOB。ORACLE中保存大字段的有BLOB,CLOB,ROW等,我不知道你说的具体是哪一种类型。
    提起Kingron我倒想起来了,他的‘超级猛料’里是有一篇文章说的是保存大字段时改个类型的,不过好像是针对SQL SERVER数据库说的。在这我也要谢谢Kingron的‘超级猛料’,它给了我很大的帮助!结贴,结贴!