当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 环境:win2ksp4,vc6sp5 小弟有个程序,从其他地方copy了一个test.rc和一个resource.h文件。 把这两个文件都加入header files中。 在一个函数内 #include "res\resource.h" 下面 return dialogboxparam(m_instance, makeintresource(idd_filetransf......
 ·mirenys (葳薇) 进来领分    »显示摘要«
    摘要: 我们都是中国人 ......


我的图片为什么就不能存取呀。。好心人来看看呀

我的表结构Testpic(id   char(2),   pic     Image   )  
   
  保存图片的程序如下,但是每次运行只能插入该信息的ID   字段,而在插入图片的时候,程序总是感觉死掉了。这是怎么回事??好心人帮一下啦:))  
   
   
  string   ls_docname,   ls_named,   ls_list_code  
  integer   li_value,   li_cnt,li_loop,li_counter,li_filenum  
  blob     lb_pic,lb_our_pic  
  long   ll_filelen,ll_bytes_read,ll_new_pos  
   
  //显示一个打开文件的对话框  
  li_value   =   GetFileOpenName("选择图象文件",   &  
  +   ls_docname,   ls_named,   "JPG",   &  
  +   "JPEG   files   (*.JPG),*.JPG,"   &  
  +   "BMP   files   (*.BMP),*.BMP,"   &  
  +   "Windows   metafiles   (*.WMF),*.WMF,"   &  
  +   "GIF   Files   (*.GIF),*.GIF")  
   
  IF   li_value   <>   1   THEN    
  return  
  end   if  
   
  //获得文件的大小  
  ll_filelen   =   FileLength(ls_docname)  
   
  //获得文件的句柄  
  li_filenum   =   FileOpen(ls_docname,   StreamMode!,READ!,LOCKREAD!)  
  if   li_filenum   =   -1   then  
  MessageBox(提示信息,   打开文件+ls_docname+失败)  
  end   if  
   
  //因为FileRead函数只能获得32765长度,因此需要判断循环次数  
  IF   ll_filelen   >   32766   then    
  li_loop   =   ((ll_filelen   -   1)/32766)+1  
  else    
  li_loop   =   1  
  end   if    
   
  //读取图象文件到Bolb变量中  
  for   li_counter   =   1   to   li_loop  
  ll_bytes_read   =   FileRead(li_filenum,   lb_our_pic)  
  lb_pic   =   lb_pic+lb_our_pic  
  ll_new_pos   =   ll_new_pos   +   ll_bytes_read  
  FileSeek(li_filenum,ll_new_pos,FROMBEGINNING!)  
  next  
  FileClose(li_filenum)  
   
  //将图像文件显示到图片控件中  
  p_cover.picturename   =   ls_docname  
   
  //将图像存入数据库  
  //ls_list_code   =   dw_1.getitemstring(dw_1.getrow(),"id")  
  ls_list_code   =   sle_1.text  
  select   count(*)   into   :li_cnt   from   testpic   where   id=   :ls_list_code;  
  if   li_cnt   =   0   then  
  insert   into   testpic(id)   values   (:ls_list_code);  
  IF   sqlca.sqlcode   <>   0   THEN  
  MessageBox(提示信息,   存盘失败+sqlca.sqlerrtext)  
  rollback;  
  else  
  commit;  
  end   if  
  end   if  
  UPDATEBLOB   testpic   SET   pic   =   :lb_pic   WHERE   id   =   :ls_list_code;  
  IF   sqlca.sqlcode   <>   0   THEN  
  MessageBox(提示信息,   存盘失败+sqlca.sqlerrtext)  
  rollback;  
  else  
  commit;  
  MessageBox(提示信息,   存盘成功)  
  END   IF  
   
 

NO.1   作者: SevenDrop

FileRead()函数读取出的是字符串,需要转换成Blob类型  
   
  lb_pic   =   lb_pic+lb_our_pic     后面一个变量是不是有问题,类型不对哦.  
  lb_pic   =   lb_pic   + blob(ls_read)     //自己定义一个ls_read,保存FileRead的字符串内容  
 

NO.2   作者: CodeMagic

我用SqlServer试了一下,可以保存成功的,没什么问题。但没有把数据取出来验证一下。

NO.3   作者: klbt

程序总是感觉死掉了?  
   
  你可以用PB的端点跟踪功能,跟踪一下

NO.4   作者: thelazyman

//从文件中读取图片  
   
  integer   li_FileNum,   loops,   i  
  long   flen,   bytes_read,   new_pos  
  blob   b,   tot_b  
   
  flen   =   FileLength(sle_filename.Text)  
  li_FileNum   =   FileOpen(sle_filename.Text,   &  
  StreamMode!,   Read!,   LockRead!)  
   
  IF   flen   >   32765   THEN  
  IF   Mod(flen,   32765)   =   0   THEN  
  loops   =   flen/32765  
  ELSE  
  loops   =   (flen/32765)   +   1  
  END   IF  
   
  ELSE  
  loops   =   1  
   
  END   IF  
   
  new_pos   =   1  
   
  FOR   i   =   1   to   loops  
  bytes_read   =   FileRead(li_FileNum,   b)  
  tot_b   =   tot_b   +   b  
   
  NEXT  
   
  FileClose(li_FileNum)


 ·word问题    »显示摘要«
    摘要: word 页面设置时,死机 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE