Ich habe einen Absatz geschrieben, unter der Adresse unten, Delphis großer Fehler, Sie müssen sich nicht die Mühe machen, ihn zu lesen, ich werde ihn hier wiederholen.
Aber ich denke, Sie können einen Blick auf die Kommentare unten werfen.
http://www.csdn.net/Develop/read_article.asp?id=12525
Der Originalcode sieht so aus:
PROzedur TForm1.Button1Click(Sender: TObject);
var
Zeichenfolgen :TStringList;
beginnen
wenn nicht Assigned(strings), dann
beginnen
Zeichenfolgen :=TStringList.Create;
// ShowMessage('sfdasfd'); Wenn Sie diesen oder jenen Satz hinzufügen, gibt es sonst kein Problem, haha.
Ende;
strings.free;
Zeichenfolgen := Null;
Ende;
Tatsächlich gibt es nur eine Zeile, auf die ich mich konzentrieren möchte, und das ist die Zeile strings.Free;
Aber es gibt auch andere Codes, die viel unnötigen Ärger verursachen. Ich habe es mehrmals betont, aber der Kerncode wird immer noch von anderen Girlanden verdeckt. Und es führt immer zu Missverständnissen
Ich schreibe den Code wie folgt um:
procedure TForm1.Button1Click(Sender: TObject);
var
Zeichenfolgen :TStringList;
beginnen
strings.free;
Ende;
Tatsächlich kann die TStringList-Klasse in diesem Code durch jede beliebige Klasse ersetzt werden, die Sie ausprobieren möchten.
Auf diese Weise können Sie Dinge finden, wenn Sie das CPU-Überwachungsfenster verwenden. Wenn Sie es jedoch nicht verwenden, drücken Sie einfach Strg+F2
Beenden Sie das Programm.
Ich weiß nicht, ob dieser Titel auch etwas Dummes bedeutet, aber er ist sowieso auf Chinesisch. Sie und ich verstehen beide.
Tatsächlich besteht der Zweck dieses Codes darin, Sie daran zu erinnern, auf die korrekte Verwendung von Objekten zu achten. Was den Grund für den Fehler in diesem Code betrifft,
Ich denke, es ist tatsächlich ein Versäumnis des Compilers, aber wenn Sie keine Forschung zur Speicherstruktur von Klassen und Objekten haben, empfehle ich Ihnen: Lassen Sie es erstens los und studieren Sie es zweitens.