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

Pre*_*ias 4 delphi delphi-2006 custom-component

我正在开发AA成分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;
Run Code Online (Sandbox Code Playgroud)

DropDllToApplicationDirectOry 把资源从{$RmyDllFileWhichIsNeeded.dll.RES}和drope带到了位置但是

DropDllToApplicationDirectOry当我将组件放在表单上时,如何调用此方法?

我尝试initialization了组件但DLL没有复制,所以我得到错误 在此输入图像描述

编辑RXControlsTRxClock,当我们放弃了时钟此表上运行时,时钟开始运行(显示CURENT时间)...所以我想这

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

但这不起作用..

代码OF 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;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dav*_*nan 6

总的来说,这个想法不会起作用.您假设开发人员将始终将您的组件放到表单上.但他们也可以从版本控制中检查现有项目,然后不会创建DLL.

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

在部署时,开发人员需要了解这种依赖性.这必须是开发人员的责任.因此,让开发人员管理这个句号更简洁,更容易.