的明顯的問題是下面的註釋行,在那裏你創造的東西叫做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;
這是什麼語言?我從你的問題歷史中假設德爾福。 – Charles
其中一個對象是'nil'。使用調試器找出它是哪一個。 –
在第一次調用此事件方法後(至少第一次點擊按鈕後),至少'FBuscarRequisicion'將成爲懸掛指針。 – TLama