J'ai écrit un paragraphe, à l'adresse ci-dessous, le gros bug de Delphi, vous n'avez pas besoin de le lire, je le répète ici.
Mais je pense que vous pouvez jeter un œil aux commentaires ci-dessous.
http://www.csdn.net/Develop/read_article.asp?id=12525
Le code d'origine est comme ça,
PRécédure TForm1.Button1Click(Expéditeur : TObject);
var
chaînes :TStringList;
commencer
si ce n'est pas attribué (chaînes), alors
commencer
chaînes :=TStringList.Create;
// ShowMessage('sfdasfd'); Si vous ajoutez telle ou telle phrase, il n'y aura pas de problème, sinon, haha.
fin;
strings.free;
chaînes := nul;
fin;
En fait, il n’y a qu’une seule ligne sur laquelle je souhaite me concentrer, et c’est la ligne strings.Free ;
Mais il se trouve qu'il existe d'autres codes qui causent beaucoup de problèmes inutiles. Je l'ai souligné à plusieurs reprises, mais le code principal est toujours couvert par d'autres guirlandes. Et ça provoque toujours des malentendus, alors
Je réécris le code comme suit :
procédure TForm1.Button1Click(Expéditeur : TObject);
var
chaînes :TStringList;
commencer
strings.free;
fin;
En fait, la classe TStringList dans ce code peut être remplacée par n'importe quelle classe que vous souhaitez essayer.
De cette façon, si vous utilisez la fenêtre de surveillance du processeur, vous pouvez trouver des choses, mais si vous ne l'utilisez pas, appuyez simplement sur Ctrl+F2.
Terminez le programme.
Je ne sais pas si ce titre veut aussi dire quelque chose de stupide, mais c’est quand même en chinois. Toi et moi comprenons tous les deux.
En fait, le but de ce code est de vous rappeler de faire attention à la bonne utilisation des objets. Quant à la raison de l'erreur dans ce code,
Je pense qu'il s'agit bien d'une omission du compilateur, mais si vous n'avez aucune recherche sur la structure mémoire des classes et des objets, je vous suggère : d'abord de laisser tomber, et ensuite d'étudier.