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

 

    摘要: 我用jb7做成exe后,对mssql的数据库包找不到,就是msbase.jar,mssqlserver.jar,msutil.jar。(class。forname出错)我把 这三个包防在%java_home%\lib\下,classpath也设了,就是不行。在dos下,jb下到是可以的。 ......
    摘要: 有点恐怖:( ......


分数不多,清囊相赠只求各位大侠帮我看看这代码为什么会造成out of memory

void   __fastcall   TPlayer::FormCreate(TObject   *Sender)  
  {  
                  MediaPlayer1->FileName="";  
                  TrackBar1->Enabled=false;  
                  InitShow();  
  }  
   
  void   TPlayer::InitShow()  
  {  
                  if   (MediaPlayer1->FileName!="")  
                  {  
                                  MediaPlayer1->Open();  
                                  TrackBar1->Enabled=true;  
                                  UpdataTrackBar();  
                                  TrackBar1->SetFocus();  
                                  MediaPlayer1->Frames=1;  
                                  Label1->Caption=String(MediaPlayer1->StartPos);  
                                  Label2->Caption=String(MediaPlayer1->Length/2);  
                                  Label3->Caption=String(MediaPlayer1->Length);          
                  }  
                  else  
                  {  
                                  Label1->Caption="";  
                                  Label2->Caption="";  
                                  Label3->Caption="";  
                                  Label4->Caption="";  
                  }  
  }          
   
  void   TPlayer::UpdataTrackBar()  
  {  
                  TrackBar1->Min=MediaPlayer1->StartPos;  
                  TrackBar1->Max=MediaPlayer1->Length;  
                  TrackBar1->Position=MediaPlayer1->Position;  
                  Label4->Caption="当前位置:"+String(MediaPlayer1->Position);  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TPlayer::FormClose(TObject   *Sender,   TCloseAction   &Action)  
  {  
                  MediaPlayer1->Close();  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TPlayer::openClick(TObject   *Sender)  
  {  
                  char   time[100];  
                  int   n;  
                  MediaPlayer1->Close();  
                  TrackBar1->Enabled=false;  
                  Label1->Caption="";  
                  Label2->Caption="";  
                  Label3->Caption="";  
                  Label4->Caption="";  
                  if   (OpenDialog1->Execute())  
                  {  
                                  MediaPlayer1->FileName=OpenDialog1->FileName;  
                                  strcpy(time,(MediaPlayer1->FileName).c_str());  
                                  n=strlen(time);  
                                  Edit3->Text=DateToStr(Date())+"   "+time[n-12]+time[n-11]+":"+time[n-9]+time[n-8]+":"+time[n-6]+time[n-5];  
                                  InitShow();  
   
                                  MediaPlayer1->Play();  
                  }  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TPlayer::TrackBar1Change(TObject   *Sender)  
  {  
                  MediaPlayer1->Position=TrackBar1->Position;  
                  Label4->Caption="当前位置:"+String(MediaPlayer1->Position);  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TPlayer::newjClick(TObject   *Sender)  
  {  
                bitmap   =   new   Graphics::TBitmap;  
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TPlayer::photoClick(TObject   *Sender)  
  {  
                  TCanvas   *Desk=new   TCanvas;  
                  Desk->Handle=GetDC(0);  
                  TRect   WindowRect=Rect(Left+Panel1->Left+2,+Panel1->+2,Left+Panel1->Left+2+638,+Panel1->+2+478);  
                  bitmap->Width=638;  
                  bitmap->Height=478;  
                  bitmap->Canvas->CopyRect(bitmap->Canvas->ClipRect,Desk,WindowRect);  
                  ReleaseDC(0,Desk->Handle);  
   
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TPlayer::saveClick(TObject   *Sender)  
  {  
                  int   id;  
                  DataMod->ADOQuery1->Active=true;  
                  DataMod->ADOQuery1->Last();  
                  id=DataMod->ADOQuery1->FieldValues["ID"];  
   
                  if   (ComboBox2->Text!=""&&Edit2->Text!=""&&ComboBox1->Text!=""&&bitmap->Empty==false&&bitmap1->Empty==false&&bitmap2->Empty==false&&bitmap3->Empty==false&&bitmap4->Empty==false&&bitmap5->Empty==false)  
                  {  
   
                  DataMod->ADOQuery1->Append();  
                  TMemoryStream   *pmem=new   TMemoryStream();  
                  pmem->Seek(0,soFromBeginning);  
                  bitmap->SaveToStream(pmem);  
                  ((TBlobField   *)DataMod->ADOQuery6->FieldByName("照片"))->LoadFromStream(pmem);  
                  delete   bitmap;  
                  delete   pmem;  
   
                  DataMod->ADOQuery1->FieldValues["ID"]=id+1;  
                  DataMod->ADOQuery1->FieldValues["照片概述"]=Edit2->Text;  
                  DataMod->ADOQuery1->Post();  
                  }  
     
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TPlayer::quitClick(TObject   *Sender)  
  {  
                  Close();                  
  }  
  //------------------------------------------------------------------------数据库我采用的是SQLserver   2000,为什么存入一定记录后就出现内存不足的错误提示呢?如果我将数据库中的记录全部清空后,就没有问题了。我存的照片是640*480的分辨率。大概存入600多的字段就报内存不足了。请大侠们帮忙,分数少了点,但是我确实是清囊了,等我分数多了还可以给大家补上!!  
 

NO.1   作者: qibo999

数据库部分没看,你一共new了3次:  
    bitmap   =   new   Graphics::TBitmap;  
    TCanvas   *Desk=new   TCanvas;  
  TMemoryStream   *pmem=new   TMemoryStream();  
   
  都delete了吗?他们是配对的吗?

NO.2   作者: qiuafa

对呀,只见你new没见你delete,多搞几次,当然就不行了。

NO.3   作者: bobbycn

new和delete最好在同一段代码中!  
  bitmap在newjClick()代码中new,却在saveClick()中delete。  
  你能保证一定是先newjClick()再saveClick(),并且次数相同?!  
  还有只见TCanvas   *Desk=new   TCanvas;没见delete   Desk;  
 

NO.4   作者: zahuifan

最好   new   一个   bitmap,保存之,就马上   delete。

NO.5   作者: ljianq

你保存的数据在ADOQuery1中,它也是在内存中的。  
  不知你的ADOQuery1的SQL属性是如何设置的?  
  当ADOQuery1打开时请不要读取过多的记录。  
 


    摘要: 我们需要药品、有效的检测工具和足够的钱来控制非典的急剧蔓延。 如果中国政府认为这样的沉重负担不是中国目前的经济条件所能承受的,请向国际社会求援!!!! 相信可以得到帮助。关键是政府是否肯放下架子! ......
» 本期热门文章:

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