Недавно я запустил проект с таким количеством форм, фреймов и дополнительных элементов управления, поэтому мое приложение набрало силу, и я использую 3 exes в своих проектах (все сделано в Delphi 2009), и эти приложения также используют одни и те же фреймы и формы. , поэтому я использовал dlls, чтобы поделиться этими формами.
, но возникла проблема, связанная с ошибкой Tfont. так что я заговорил онлайн и пришел с ответом, чтобы выбрать | Сборка с пакетами времени выполнения . тогда все стало работать отлично
но когда я проверил Windows Taskmanager | memusage это ~ 21 500 КБ (21,5 МБ). (но использование mem составляет всего 2000 КБ без Build с пакетами времени выполнения, включая фреймы вручную, добавляя его во все 3 exe-проекта), и мой компилятор также работает медленно с включением Build with пакеты времени выполнения
и теперь мне нужно распространить проект с 3 exes + delphi bpl пакеты времени выполнения + dlls
но я хочу знать, как увеличился memusage, и я хочу только распределить 3 exes + dll (так же, как обычные delphi exes распределяются) я даже использовал диспетчеры памяти, но не работал
как преодолеть эту проблему
это код, который я использовал
в exe
procedure TForm1.Button1Click(Sender: TObject);
type
TGetTheFrame =Function( Owner: TComponent; TheParent: TWinControl ): TFrame; stdcall ;
var
GetTheFrame : TGetTheFrame;
begin
try
GetTheFrame(application,TabSheet1).Free ;
except
end;
frm := GetTheFrame(application,TabSheet1) ;
dllHandle := LoadLibrary('project1.dll') ;
if dllHandle <> 0 then
begin
GetTheFrame := GetProcAddress(dllHandle, 'GetTheFrame') ;
frm := GetTheFrame(application,TabSheet1) //call the function
{ ShowMessage('error function not found') ;
FreeLibrary(dllHandle) ; }
end
else
begin
ShowMessage('xxxx.dll not found / not loaded') ;
end
в dll
uses
Windows,
Messages,
SysUtils,
Classes,
Forms,StdCtrls, Controls,
Unit2 in 'Unit2.pas' {Frame2: TFrame};
{$R *.res}
Function GetTheFrame( Owner: TComponent; TheParent: TWinControl ): TFrame; stdcall;
Begin
Result := TFrame2.Create( Owner );
Result.Parent := TheParent;
End;
exports gettheframe;
begin
end.
и, наконец, как сделать все это без сборки с пакетом времени выполнения
больше, чем проблемы с памятью, просто скажите, как создать такое приложение без buildwithruntime пакетов