全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1528
推到 Plurk!
推到 Facebook!

access violation錯誤訊息,應該如何改正,請指導

尚未結案
w_1
一般會員


發表:9
回覆:1
積分:2
註冊:2004-11-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-22 16:15:31 IP:218.94.xxx.xxx 未訂閱
代碼如下: void __fastcall TForm1::SampleGrabber1Buffer(TObject *sender,       double SampleTime, Pointer pBuffer, int BufferLen) { HRESULT hr; PBitmapInfoHeader BIHeaderPtr; TAMMediaType *MediaType; HBITMAP hBmp; Pointer DIBPtr; PVideoInfoHeader VideoInfoHeader; TJPEGImage *jpg; TMemoryStream *memStream; Image1->Canvas->Lock(); try{  hr=SampleGrabber1->SampleGrabber->GetConnectedMediaType(MediaType);  //hr := Grabber.SampleGrabber.GetConnectedMediaType(MediaType);  if(hr!=S_OK )  {   exit(1);  }  try{  if(IsEqualGUID(MediaType->majortype, MEDIATYPE_Video))   BIHeaderPtr=NULL;   if(IsEqualGUID(MediaType->majortype,FORMAT_VideoInfo));   {    if(MediaType->cbFormat==sizeof(TVideoInfoHeader))    {  BIHeaderPtr=&(PVideoInfoHeader(MediaType->pbFormat))->bmiHeader; } if(BIHeaderPtr==NULL) { exit(1); } hBmp=CreateDIBSection(0,(PBitmapInfo)BIHeaderPtr,DIB_RGB_COLORS,&DIBPtr,0,0);  if(hBmp!=0)  {   if(DIBPtr==NULL)   {   exit(1);   }      if(BufferLen>(int)BIHeaderPtr->biSizeImage)   {     BufferLen=BIHeaderPtr->biSizeImage;   }     Move(pBuffer,DIBPtr,BufferLen);    Image1->Picture->Bitmap->Handle=hBmp;  }   }  }__finally  {  FreeMediaType(MediaType);  } memStream= new TMemoryStream; jpg=new TJPEGImage; jpg->Assign(Image1->Picture->Bitmap); jpg->CompressionQuality=10; jpg->JPEGNeeded(); jpg->Compress(); jpg->SaveToStream(memStream); jpg->Free(); if(IdTCPClient1->Connected())  {   try{  IdTCPClient1->WriteInteger(memStream->Size);  IdTCPClient1->WriteBuffer(memStream->Memory, memStream->Size,True); }__except(1) { }  }   memStream->Free(); }__finally {  Image1->Canvas->Unlock(); } } 報錯信息如圖 請高手在百忙之中指導一下小弟,如何脩改代碼!此問題可以解決!謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-22 18:29:08 IP:210.68.xxx.xxx 未訂閱
您好:    PO程式碼的方式與版規說明請參考下面連結,煩請修改謝謝您的配合 >
bearmaster
一般會員


發表:36
回覆:45
積分:16
註冊:2004-05-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-24 12:47:04 IP:210.208.xxx.xxx 未訂閱
Hi w_1,    我不確定那段程式主要功用是什麼, 但似乎是要顯示在螢幕上並且存成 jpeg file. 如果是要顯示及存檔可參考下列方式.     
// 假設顯示影像在 Image1 上    void __fastcall TForm1::SampleGrabber1Buffer(TObject *sender,
      double SampleTime, Pointer pBuffer, int BufferLen)
{
    if (!BufferLen) return;
    SampleGrabber1->GetBitmap(Image1->Picture->Bitmap, pBuffer, BufferLen);
    Application->ProcessMessages();
}    // 建議不要將存檔或大量運算寫在 SampleGrabber1Buffer() 內, 若要連續 存檔可用 Timer.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Timer1->Enabled=false;        // 存成 jpeg file.
    TJPEGImage  *jpg=new TJPEGImage();
    jpg->Assign(Image1->Picture->Bitmap);
    jpg->CompressionQuality=90;//設定 Jpeg 的壓縮品質
    jpg->SaveToFile("存檔名稱");
    delete  jpg;        // 存成 bmp file.
    Image1->Picture->SaveToFile("存檔名稱");         Timer1->Enabled=true;
}    
系統時間:2024-05-11 17:38:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!