gpt4 book ai didi

Delphi 7,在删除组件时将 dll 添加到应用程序目录

转载 作者:行者123 更新时间:2023-12-03 15:17:57 32 4
gpt4 key购买 nike

我正在 delphi 7delphi 2006 中开发一个组件,该组件使用 .pas (不是我的)文件,该文件需要 DLL 文件存在在应用程序目录中。

可以将 DLL 文件嵌入到组件中,以便当用户将其拖放到表单上或在运行时创建它时,DLL 将被放置在应用程序目录中?

目前

1) 我告诉用户将 DLL 文件放置在应用程序目录中。

2)在资源中添加DLL文件,以便在创建时,我可以将DLL放入应用程序目录中?来自delphidabbler_embed_resource 。我已经使用了这个

   {Drop the Resource..!!!}

procedure DropDllToApplicationDirectOry(applicationPath : string);
var
RS: TResourceStream;
begin
// Create resource stream
RS := TResourceStream.CreateFromID(HInstance, 100, RT_RCDATA);
try
// applicationPath : example c:\MyTestProject Lee\
if DirectoryExists(applicationPath) then RS.SaveToFile(applicationPath+'myDllFileWhichIsNeeded.dll')
finally
// Free the stream
RS.Free;
end;
end;

DropDllToApplicationDirectOry{$RmyDllFileWhichIsNeeded.dll.RES} 获取资源并放置到以下位置

当我将组件放到表单上时,如何调用 DropDllToApplicationDirectOry

我尝试了组件的初始化,但 DLL 没有被复制,所以我收到错误 enter image description here

编辑对于RXControlsTRxClock,当我们将时钟运行在此窗体上时,时钟开始运行(显示当前时间)...所以我尝试了这个

 constructor Tmycomponeny.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{add dll}
DropDllToApplicationDirectOry(ExtractFilePath(Application.ExeName));
end;

但这不起作用..

RXControls的代码

  constructor TRxClock.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if not Registered then begin
ClockInit;
Registered := True;
end;
Caption := TimeToStr(Time);
ControlStyle := ControlStyle - [csSetCaption]
{$IFDEF WIN32} - [csReplicatable] {$ENDIF};
BevelInner := bvLowered;
BevelOuter := bvRaised;
FTimer := TRxTimer.Create(Self);
FTimer.Interval := 450; { every second }
FTimer.OnTimer := TimerExpired;
FDotsColor := clTeal;
FShowSeconds := True;
FLeadingZero := True;
GetTime(FDisplayTime);
if FDisplayTime.Hour >= 12 then Dec(FDisplayTime.Hour, 12);
FAlarmWait := True;
FAlarm := EncodeTime(0, 0, 0, 0);
end;

enter image description here

最佳答案

一般来说,这个想法是行不通的。您假设开发人员总是将您的组件放到表单上。但他们也可以从修订控制中检查现有项目,然后就不会创建 DLL。

在我看来,您应该简单地记录依赖性并让开发人员确保满足依赖性。建议他们将 DLL 添加到其修订控制系统中,以便将其 check out 到应用程序目录中。

开发人员在部署时需要了解这种依赖性。这必须是开发商的责任。因此,让开发人员管理这个句号会更干净、更容易。

关于Delphi 7,在删除组件时将 dll 添加到应用程序目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459986/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com