最近我开始了一个有这么多表单、框架和额外控件的项目,所以我的应用程序膨胀了,我在我的项目中使用了 3 个 exe(全部在 Delphi 2009 中制作),这些应用程序也共享相同的框架和表单。所以我用 dll 来分享这些表格。
但是一个问题来了,说不同的 Tfont 错误。所以我在网上提出了答案,并给出了选择 | 使用运行时包构建 。然后一切都开始完美地工作
但是当我检查 Windows 任务管理器 | memusage 它是〜21 500 kb(21.5 mb)。(但没有使用运行时包构建的内存使用量仅为2000 kb,还包括通过在所有3个exe项目中手动添加帧)并且我的编译器在启用Build with时也运行缓慢运行时包
现在我必须用3 个 exes + delphi bpl 运行时包 + dll分发项目
但我想知道 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 包的情况下创建这样的应用程序