小编MX4*_*399的帖子

如何使用WiX和MSI进行静默安装和卸载?

如何在WiX中创建静默安装程序,该安装程序不向用户显示任何UI对话框,并使用默认设置进行安装,升级和卸载?

installer windows-installer wix wix3

30
推荐指数
4
解决办法
3万
查看次数

我可以通过复制其内存来克隆对象吗?

我需要在我的控制下为有限数量的类提供undo + redo堆栈,这些类必须非常非常快并且使用RTTI和XML或流是不可行的,因为嵌套对象中的实例数可以高达2000+名单.需要通过memento模式复制和移出对象并立即重新加载.

有没有办法通过复制内存并从该内存重新实例化对象来克隆对象?

delphi design-patterns delphi-xe

8
推荐指数
2
解决办法
3423
查看次数

使用WIX对MSI安装进行最大压缩

我曾经为NSIS的应用程序构建安装,最终的自我提取器是1.2 MB.现在我需要使用WIX,因为操作需要,同样的安装在4.2 MB.我将压缩标志设置为包节点上指示的文档和规范.使用7z压缩MSI会产生2.4 MB的zip文件.

问题:如何在MSI上进行最大压缩或创建小型MSI(例如删除不需要的资源等)?

注意 - 尺寸非常重要,我现在必须使用MSI/WIX - 这是一个显示停止!

compression windows-installer wix

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

在Delphi中创建自身实例的类函数

你有一个类函数可以创建一个类的实例:

TMyClass = class(TSomeParent)
public
  class function New(AValue : integer) : TMyClass; 
end;

TDerivedClass = class(TMyClass)
public
  function Beep;
end;
Run Code Online (Sandbox Code Playgroud)

然后按如下方式使用它

...   
var
  myList : TList<T>;
  item : TDerivedClass;
begin
  myList.Add(TDerivedClass.New(1))
  myList.Add(TDerivedClass.New(3))
  myList.Add(TDerivedClass.New(5))

  for item in myList do
    item.Beep; //times the count in the class function
...
Run Code Online (Sandbox Code Playgroud)

如果是这样,那个功能代码是什么样的?您是否使用TObject的NewInstance方法并且每次为每个派生类重新实现?使用构造函数是否更安全/更好?

目标是在命令模式中使用此方法并使用类类型和接收器加载命令列表,例如:

//FYI: document is an instance of TDocument
commandList.Execute(TOpenDocument(document)); 
commandList.Execute(TPasteFromClipboard(document)); 
//... lots of actions - some can undo
commandList.Execute(TPrintDocument(document)); 
commandList.Execute(TSaveDocument(document));
Run Code Online (Sandbox Code Playgroud)

原因是某些命令将通过text/script指定,需要在运行时解析.

delphi design-patterns delphi-xe

7
推荐指数
3
解决办法
6819
查看次数

如何将安装日期记录到注册表

安装成功完成后,需要将日期和时间以及其他一些信息写入注册表.如何生成日期以及如何知道安装是否成功完成?(用wix写入注册表不是问题).

wix wix3

6
推荐指数
2
解决办法
4006
查看次数

在DelphiXE中禁用表单设计器

是否可以"按需/有选择地"禁用DelphiXE中的表单设计器,并且只在需要控件未安装的情况下才能使用表单/类的代码?

ide delphi form-designer delphi-xe

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

如何检测字符串是否为Base64Encoded?

哪个是检测字符串是否为Base64Encoded的最佳方法(使用Delphi)?

delphi encoding character-encoding

6
推荐指数
2
解决办法
1629
查看次数

方法的默认通用比较器返回不正确的结果

在使用提议的多播委托方法响应Delphi问题中的信号和槽实现时,代码无法添加多个事件处理程序.

问题与向事件列表中添加方法有关TDelegateImpl<T>.Add(),该TList<T>.IndexOf方法使用Compare方法查找现有方法,结果始终为0 - 意味着对于TMethod,Left和Right是相同的.Equals方法使用TMethod类型转换并显式比较TMethod.CodeTMethod.Data,其中Compare强制转换为始终相同的地址.

为什么Compare使用TList<T>.IndexOf而不是Equals

delphi generics delphi-xe

5
推荐指数
2
解决办法
1389
查看次数

是否可以在Delphi中使用Fluent调用样式自引用记录?

目标是创建一个名为TURLString的类型,如下所示:

var
  newURl : TURLString;
begin

  newURL.Append('http://').Append('www.thehost.com').Append('path/on/server').Append('?');

  ...lots of app logic...

  newURL.AppendParam('name', 'value').Append('#').AppendParam('name', 'value');

  ...more params added...

  result := httpClient.Get(newURL);

end;
Run Code Online (Sandbox Code Playgroud)

使用TURLString定义(注意它的记录):

//from actual code used
TURLString = record
private
    FString : string;
public
    function Append(APart : string) : TURLString;
    function AppendParam(AParam, AValue : string) : TURLString;
end;

function TURLString.Append(APart: string) : TURLString;
begin
  FString := FString + APart;
  result := self;
end;

function TURLString.AppendParam(AParam, AValue: string): TURLString;
begin
  if (not Empty) then
    FString := FString + URL_AMB;
  FString := …
Run Code Online (Sandbox Code Playgroud)

delphi types

4
推荐指数
2
解决办法
538
查看次数

有没有Delphi DFM到Delphi的源代码转换工具?

Delphi表单设计器非常好,但我们需要直接从源代码工作.是否有可以获取一批DFM文件并将其转换为Delphi源代码的工具或脚本?

delphi dfm

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