使用指標後,造成access violation… |
答題得分者是:cmf
|
kan0515
中階會員 發表:56 回覆:120 積分:50 註冊:2002-06-24 發送簡訊給我 |
請問一下,各位前輩
我利用spcomm1來收發訊息,
傳送與接受的資料皆為hex碼
當SPComm1ReceiveData此事件沒有未曾觸發時,
滑鼠的事件CSU0PanelMouseDown是執行OK的
但是當SPComm1ReceiveData後…
若按下滑鼠左鍵或右鍵
就會出現ACCESS VIOLATION的錯誤訊息
程式也就呈現當掉的狀態
麻煩各位前輩幫我看看,
程式是否有不妥的地方
或是使用了錯誤的方法
導致程式的錯誤,謝謝~~
procedure TForm1.SPComm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var PT:Pbyte; i,j:integer; tmp:byte; begin GetMem(PT,SizeOf(pointer)); DataCount:=BufferLength; IF DataCount<10 then begin DataFlag:=False; end ELSE begin move(buffer^,PT^,BufferLength); SetLength(ByteReceive,Datacount); i:=0; j:=0; //protocol中規定,遇到10會重覆…所以將重覆的10拿掉 while j<=DataCount-1 do begin ByteReceive[i]:=PT^; IF (j>=3) AND (j<=DataCount-3) then begin Inc(PT); tmp:=PT^; IF (ByteReceive[i]=$10) AND (tmp=$10) then begin j:=j 1; Inc(PT); end; end Else Inc(PT); i:=i 1; j:=j 1; end; DataCount:=i-1; For I:=0 to bufferLength-1 do Dec(PT); FreeMem(PT); DataFlag:=True; end; end; procedure TForm1.CSU0PanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin whoclick:=0; X:=Form1.Left Panel1.Left CSU0Panel.Left 30; Y:=Form1.Top Panel1.Top CSU0Panel.Top 30; Case Integer(Button) of 1:PopupMenu1.Popup(X,Y); //按右鍵顯示MENU 0:MovePanel; //移動圖示的位置 end; end; |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
kan0515
中階會員 發表:56 回覆:120 積分:50 註冊:2002-06-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |