我寫了一個段落,在下面這個地址,Delphi的大Bug,您不用費神去看,我在此重複。
但我覺得後面的評論您可以一瞧。
http://www.csdn.net/Develop/read_article.asp?id=12525
原來的程式碼是這樣,
PRocedure TForm1.Button1Click(Sender: TObject);
var
strings :TStringList;
begin
if not Assigned(strings) then
begin
strings :=TStringList.Create;
// ShowMessage('sfdasfd');如果加上這樣或那樣的句子就沒有問題,否則,哈哈.
end;
strings.free;
strings := nil;
end;
實際上,我要說的重點只有一行,那就是strings.Free;這一行。
但剛好有別的程式碼存在,引起了很多不必要的麻煩,我也曾經強調過幾次,但是核心的程式碼還是被其餘的花環罩住了。而且總是會引起誤會,所以
我重寫一遍程式碼,如下所示:
procedure TForm1.Button1Click(Sender: TObject);
var
strings :TStringList;
begin
strings.free;
end;
事實上,這個程式碼中的TStringList類別可以替換成任何您想要去試一試的類別。
這樣,如果您使用CPU觀察視窗就能發現東西,但是如果不使用它,您就按下Ctrl+F2
終止程序吧。
這個標題是否也有點笨蛋的意思,我不知道,反正是中文。您和我都能看懂。
實際上這段程式碼的主旨在於提醒您注意物件的正確使用,至於這段程式碼出錯的原因,
我想,確實是編譯器的一個疏漏,但是如果您對類別和物件的記憶體結構沒有什麼研究的話,我建議您:一、放任,二、鑽研它。