小编Fre*_*red的帖子

构建服务器:管理第三方组件的最佳实践?

我正在维护一个非常大的遗留应用程序.源树真是一团糟.我正在尝试设置构建服务器.

在源代码树上,我有第三方组件包含源代码(也在项目的include路径中).这些组件也安装在IDE中.

我的问题是:如何管理这些组件?

我想这样管理:

  • 在构建服务器上安装IDE
  • 安装所有第三方组件
  • 从项目源树中删除组件源(并将它们保存在项目根目录上,每个压缩一个专用文件夹)
  • 每次我们需要定制(或调试)第三方组件时,我们重新构建软件包并将其重新安装在构建服务器的IDE中(以及每个开发人员工作站上)

在IDE中安装组件和在包含路径中使用源代码之间的区别是什么?链接器如何处理这种情况?

delphi build-automation project-organization

10
推荐指数
1
解决办法
2274
查看次数

Datasnap:有没有办法在全球范围内检测连接丢失?

我正在寻找本地连接丢失.有没有意义这样做,就像Corelabs组件上的事件一样?

谢谢

编辑:对不起,我将尝试更具体:我正在使用datasnap 2009设计原型.所以我有一个瘦客户端,一个无状态服务器应用程序和一个数据库服务器.

我能做的是检测和处理客户端和服务器应用程序之间的连接丢失(互联网连接)以适当地处理它,即:向用户显示信息性错误消息或检测服务器关闭以静默重定向另一个app服务器.

在我使用ODAC组件管理的2层中,TOraSession有一些事件来处理这个问题.

delphi delphi-2009 datasnap n-tier-architecture midas-server

7
推荐指数
1
解决办法
2437
查看次数

Delphi 7:Win XP或Windows Server 2003下的编译有何不同?

我有一个遗留的应用程序来维护.目前,发布是从一个特定的开发工作站构建的,这是一个坏的坏习惯.

我要求使用虚拟化构建服务器从一个集中式环境中自动构建.唯一的问题是他们给我的服务器运行Windows Server 2003,他们不会给我一个Windows XP来做到这一点...

我应该在具体问题上小心,我应该注意什么?

谢谢

delphi compiler-construction windows-xp windows-server-2003

6
推荐指数
3
解决办法
975
查看次数

所有者对框架上的PArent和Taction快捷方式

我有一个带面板的表格.

我在运行时创建框架,并通过将框架的父属性设置为面板在面板上显示它们.

在创建面板时,我没有设置所有者属性,因为我自己管理框架的生命周期.

直到现在我没有问题.接下来,我在框架上放置一个TActionList,并在动作上添加一些快捷方式.

我发现直到我将框架的所有者属性设置为面板后才执行我的操作.

有人可以解释一下吗?我认为所有者属性只是关于组件负责释放子组件,而不负责转发关键事件.

delphi owner

6
推荐指数
1
解决办法
858
查看次数

生成动态html

导出一些我希望能够生成html输出的数据.

我有一些不断输出的内容,比如html页眉和页脚.

我的问题是如何处理?我是否必须嵌入一些模板(在资源文件中)并解析它以使其动态化?我是否将静态内容存储在某个常量中(是否有255个限制?)并在生成动态内容时附加它们?

您是否有一些提示,有用的链接或最佳实践要分享?

谢谢

html delphi export

4
推荐指数
1
解决办法
1253
查看次数

通用工厂

假设我有一个TModel:

TModelClass = class of TModel;
TModel = class
  procedure DoSomeStuff;
end;
Run Code Online (Sandbox Code Playgroud)

和2个后代:

TModel_A = class(TModel);
TModel_B = class(TModel);
Run Code Online (Sandbox Code Playgroud)

和工厂:

TModelFactory = class
  class function CreateModel_A: TModel_A;
  class function CreateModel_B: TModel_B;
end;
Run Code Online (Sandbox Code Playgroud)

现在我想重构一下:

TModelFactory = class
  class function CreateGenericModel(Model: TModelClass) : TModel
end;

class function TModelFactory.CreateGenericModel(Model: TModelClass) : TModel
begin
  ...
  case Model of
    TModel_A: Result := TModel_A.Create;
    TModel_B: Result := TModel_B.Create;
  end;
  ...
end;
Run Code Online (Sandbox Code Playgroud)

到目前为止没关系,但每次创建TModel后代时,我都要修改工厂case语句.

我的问题:这可能为我的所有TModel后代创建一个100%的通用工厂,所以每次创建TModel后代我都不需要修改TModelFactory吗?

我尝试使用Delphi 2009泛型,但没有找到有价值的信息,所有都与基本用法TList<T> …

delphi generics factory delphi-2009

2
推荐指数
3
解决办法
2722
查看次数