Escribí un párrafo, en la dirección a continuación, el gran error de Delphi, no tienes que molestarte en leerlo, lo repetiré aquí.
Pero creo que puedes echar un vistazo a los comentarios a continuación.
http://www.csdn.net/Develop/read_article.asp?id=12525
El código original es así,
Procedimiento TForm1.Button1Click(Remitente: TObject);
var
cadenas: TStringList;
comenzar
si no está asignado (cadenas), entonces
comenzar
cadenas :=TStringList.Create;
// ShowMessage('sfdasfd'); Si agregas esta o aquella frase, no habrá problema, de lo contrario, jaja.
fin;
cadenas.libres;
cadenas: = nulo;
fin;
De hecho, sólo hay una línea en la que quiero centrarme, y es la línea strings.Free;
Pero resulta que hay otros códigos que causan muchos problemas innecesarios. Lo he enfatizado varias veces, pero el código central todavía está cubierto por otras guirnaldas. Y siempre causa malentendidos, así que
Reescribo el código de la siguiente manera:
procedimiento TForm1.Button1Click(Remitente: TObject);
var
cadenas: TStringList;
comenzar
cadenas.libres;
fin;
De hecho, la clase TStringList en este código se puede reemplazar con cualquier clase que desee probar.
De esta manera, si usas la ventana de observación de la CPU puedes encontrar cosas, pero si no la usas, simplemente presionas Ctrl+F2.
Terminar el programa.
No sé si este título también significa algo estúpido, pero de todos modos está en chino. Tú y yo lo entendemos.
De hecho, el propósito de este código es recordarle que preste atención al uso correcto de los objetos. En cuanto al motivo del error en este código,
Creo que de hecho es una omisión del compilador, pero si no has investigado la estructura de memoria de clases y objetos, te sugiero: primero, déjalo ir y segundo, estúdialo.