Я написал абзац, по адресу ниже, большой баг Дельфи, можете не утруждать себя чтением, повторю здесь.
Но я думаю, вы можете взглянуть на комментарии ниже.
http://www.csdn.net/Develop/read_article.asp?id=12525
Исходный код такой:
PROcedure TForm1.Button1Click(Отправитель: TObject);
вар
строки: TStringList;
начинать
если не назначено (строки), то
начинать
строки: = TStringList.Create;
// ShowMessage('sfdasfd'); Если вы добавите то или иное предложение, проблем не будет, иначе, хаха.
конец;
строки.бесплатно;
строки: = ноль;
конец;
Фактически, есть только одна строка, на которой я хочу сосредоточиться, — это строка strings.Free;
Но бывают и другие коды, которые доставляют много ненужных хлопот, я это подчеркивал несколько раз, но основной код все равно покрыт другими гирляндами. И это всегда вызывает недоразумения, поэтому
Я переписываю код следующим образом:
процедура TForm1.Button1Click(Отправитель: TObject);
вар
строки: TStringList;
начинать
строки.бесплатно;
конец;
Фактически, класс TStringList в этом коде можно заменить любым классом, который вы захотите попробовать.
Таким образом, если вы используете окно наблюдения за процессором, вы можете что-то найти, но если вы его не используете, просто нажмите Ctrl+F2.
Завершить программу.
Я не знаю, означает ли это название что-то глупое, но оно все равно на китайском. Мы с тобой оба понимаем.
На самом деле цель этого кода — напомнить вам о необходимости обратить внимание на правильное использование объектов. Что касается причины ошибки в этом коде.
Я думаю, что это действительно упущение компилятора, но если у вас нет исследований структуры памяти классов и объектов, я предлагаю вам: во-первых, отпустить это, а во-вторых, изучить.