Ошибка доступа к памяти

Приветствую В проге на онкрит ставлю:
if paramstr(1)='someparam' then
begin
MST:=TmemoryStream.Create;
MST.Write(somedata[1],length(somedata));
MST.SaveToFile('somefile.txt');
MST.Free;
end;
halt;
в итоге получаю ошибку на строке с halt. Подскажите, может с MST чего то не доделываю?
9 ответов

Из описания команды Halt "Процедура Halt вынуждает резкое завершение текущего приложения. Предупреждение: не гарантируется, что ресурсы будут освобождены при вызове halt."


понятно, а что именно нужно освободить то? стрим то я вроде освобождаю.


Надо посмотреть весь код...


это и есть код. то что ниже не успевает отработать т.к. ошибка вылетает на хальте.


Будем в "бирюльки" играть?.. У меня этот кусок отработал на 5, без всяких exception...


хм, действительно, у меня тоже без проблем прошло в чистом проекте. значит это с
cryptlib1.EncryptMemory(MST);
связано. Но ведь это ж компонент. Если я его тоже освобожу перед хальтом я уже не смогу им пользоваться в программе.


Хальтом не надо пользоваться в программе. В чем причина его использования, расскажи?Кстати:
Если я его тоже освобожу перед хальтом
Главное, что после Halt ты уже НИЧЕМ не сможешь пользоваться, потому что программа будет аварийно завершена.


Хальтом не надо пользоваться в программе. В чем причина его использования, расскажи?.
Мне нужно закрывать прогу по условию. Когда использовал terminate то окно программы промелькивало. Мне надо что бы оно не появлялось в случае условия.


Можно в файле проекта поставить своё условие:
program Project1;
 
uses
  Classes,
  SysUtils,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
var
  MST: TmemoryStream;
  somedata:TDateTime;
begin
  if paramstr(1)='someparam' then
    begin
      MST:=TmemoryStream.Create;
      somedata := now;
      MST.Write(somedata,SizeOf(somedata));
      MST.SaveToFile(ExtractFilePath(ParamStr(0))+'somefile.txt');
      MST.Free;
    end
  else
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end;
end.