Я работаю над приложением, которое использует FastMM4
, от sourceforge.net. Итак, я добавил FastMM4.pas
в предложение uses в начале. В приложении мне нужно запустить batch
файл после FinalizeMemoryManager;
в finalization
из unit FastMM4;
как этотdelphi 7, FastMM4 не может установить работу
initialization
RunInitializationCode;
finalization
{$ifndef PatchBCBTerminate}
FinalizeMemoryManager;
RunTheBatFileAtTheEnd; //my code here..calling a procedure
{$endif}
end.
тогда мой код RunTheBatFileAtTheEnd является:
procedure RunTheBatFileAtTheEnd;
begin
//some code here....
sFilePaTh:=SysUtils.ExtractFilePath(applicaTname)+sFileNameNoextension+'_log.nam';
ShellExecute(applcatiOnHAndle,'open', pchar(sExeName),pchar(sFilePaTh), nil, SW_SHOWNORMAL) ;
end;
Для этого мне нужно использовать SysUtils,shellapi
в пункт использования блока fastmm4. Но используя их это сообщение приходит
Но если я удалить SysUtils,shellapi
из использует это работает. Мне все еще нужны все функции fastmm4, но с SysUtils,shellapi
, fastmm4 не установлен
У меня есть свой блок, но его завершение выполняется до завершения fastmm4.
может кто-нибудь сказать мне, как решить эту проблему?
Edit- 1
unit FastMM4;
//...
...
implementation
uses
{$ifndef Linux}Windows,{$ifdef FullDebugMode}{$ifdef Delphi4or5}ShlObj,{$else}
SHFolder,{$endif}{$endif}{$else}Libc,{$endif}FastMM4Messages,SysUtils,shellapi;
мое приложение
program memCheckTest;
uses
FastMM4,
EDIT-2:
(после @SertacAkyuz ответа), я удалил SysUtils
, и она работала, но Мне все же нужно запустить командный файл, чтобы открыть внешнее приложение через RunTheBatFileAtTheEnd
. Причина состоит в том, что я хочу, чтобы внешнее приложение запускалось только после FastMM4, как из finalization
. sExeName
- приложение, которое будет запускать файл sFilePaTh
(.nam). может ли кто-нибудь сказать, как это сделать? без uninstalling FastMM4
.
Какой пункт использует? Если в интерфейсе вы заставляете FastMM4 зависеть от них, они будут сначала инициализированы, включая любые единицы, от которых они зависят. Любое выделение памяти сделало бы это. Вы пробовали переместить два блока в пункт реализации? Это должно изменить порядок зависимостей. –
@MarjanVenema: я добавил новый код для предложения uses, 'SysUtils, shellapi;' находятся в 'реализации' – PresleyDias
Вы должны обойтись без 'sysutils'. Раздел в разделе инициализации «sysutils» требует выделения памяти, поэтому диспетчер памяти должен быть установлен. –