2013-11-28 58 views
-2

我有這個問題,我可以通過拋出這個錯誤來解決這個問題,兄弟我按下了一個調用表單Cencillo進行搜索的按鈕。錯誤如下。訪問衝突地址爲09A878EE的模塊

消息:訪問衝突在模塊地址09A878EE 'Almacen.pgi'。讀地址00000000

,按鍵,給了我這個錯誤是如下代碼:

procedure TfListaEntregaBodegas.SBBuscarClick(Sender: TObject); 
begin 
    inherited; 
    FBuscarRequisicionBodega := TFBuscarRequisicionBodega.Create(Application); 
    FBuscarRequisicionBodega.dsRequisicionBodega.DataSet:=qListaRequisiciones; 
    FBuscarRequisicion.ShowModal; 
    FBuscarRequisicion.Free; 
    dbgListaRequisiciones.Setfocus; 
end; 
+1

這是什麼語言?我從你的問題歷史中假設德爾福。 – Charles

+0

其中一個對象是'nil'。使用調試器找出它是哪一個。 –

+0

在第一次調用此事件方法後(至少第一次點擊按鈕後),至少'FBuscarRequisicion'將成爲懸掛指針。 – TLama

回答

3

的明顯的問題是下面的註釋行,在那裏你創造的東西叫做TFBuscarRequisicionBodega和分配上它給一個名爲FBuscarRequisicionBodega的變量並設置了一些屬性FBuscarRequisicionBodega。然後,您撥打ShowModal上的完全不同的變量,並將其命名爲FBuscarRequisicion,然後將其釋放。你現在已經成爲孤兒FBuscarRequisicionBodega(沒有任何東西可以釋放它),並且同時在你沒有提供代碼的東西(FBuscarRequisicion)上調用ShowModal,然後釋放它。然後再次點擊該按鈕,然後在上次釋放的東西上調用ShowModal

這個問題似乎很清楚察覺,甚至沒有閱讀的變量名 - 只是檢查的這兩行代碼:

FBuscarRequisicionBodega.dsRequisicionBodega.DataSet:=qListaRequisiciones; 
    FBuscarRequisicion.ShowModal; 

如何看變量名長度不匹配? (.不排隊,因爲第一個字母比第二個字母多六個字母。)

在您發佈的代碼中仔細閱讀變量名稱,問題看起來非常清楚。 (調試器需要兩秒鐘才能確定;您應該學會使用它)。

procedure TfListaEntregaBodegas.SBBuscarClick(Sender: TObject); 
begin 
    inherited; 

    // You create something and assign it to one variable here. 
    // Set debugger breakpoint on next line (F5, click the grey 
    // gutter to the left of the editor line numbers, or right-click 
    // the line and choose Debug->Toggle Breakpoint, run your app (F9), 
    // and step through the code with F8. 
    FBuscarRequisicionBodega := TFBuscarRequisicionBodega.Create(Application); 
    FBuscarRequisicionBodega.dsRequisicionBodega.DataSet:=qListaRequisiciones; 

    // You then call ShowModal on a totally different variable here, then 
    // free it after ShowModal returns. 
    FBuscarRequisicion.ShowModal; 
    FBuscarRequisicion.Free; 
    dbgListaRequisiciones.Setfocus; 
end; 
相關問題