MysticCoder писал(а):весь код юнита. ты где то портишь память, и явно не в этих огрызках кода, что выдаешь.
Весь код, где я заполняю битмапы - приведён выше. Дело не в битмапах, а в MR : TModalResult;
zub писал(а):actSaveExecute или actSaveAsXMLExecute
Абсолютно точно не они, вот я их закомментировал и всё равно сбой:
- Код: Выделить всё
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
var MR : TModalResult;
begin
// boModify := false;
try
if boModify then begin
MR := QuestionDlg('Вопрос', 'Сохранить изменения в проекте '+OpenDialog1.FileName+'?'+#13, mtConfirmation, [mrOK, 'Да', mrNo,'Нет', mrCancel,'Отмена'], 0);
case MR of
mrOK: CanClose := true; //if OpenDialog1.FileName <> ''
// then CanClose := true // actSaveExecute(Self)
// else CanClose := true; // actSaveAsXMLExecute(Self);
mrNo: CanClose := true;
mrCancel: CanClose := false;
end;
end;
except
on e:exception do ShowMessage('Сбой при закрытии программы: '+#13+e.Message);
end;
end;
Выполняется только вот этот код
MR := QuestionDlg (итд) и выскакивает сбой, а если отключить, то всё чистится, как положено. Дело не в памяти, а в этом TModalResult ... Там видимо какой-то параллельный процесс запускается и успевает почистить память ?
zub писал(а):Нужно учится отлаживать свои программы а не морочить людям головы
Я просто спросил, чтобы удостовериться - все ли мои действия верны.