小编Cha*_*ang的帖子

Delphi XE2:寻找更快的方法将VCL ProjectGroup从32位迁移到64位

RAD Studio docwiki中所述,要将32位VCL应用程序迁移到64位:

在IDE中打开32位应用程序,添加并激活64位目标平台,并将应用程序编译为64位应用程序.

我有一个项目组,包含超过200个32位项目.为了支持64位,我需要逐个添加64位目标平台.

是否有更快的方法来添加64位目标平台?

delphi delphi-xe2

13
推荐指数
2
解决办法
968
查看次数

Delphi XE2:是否有预定义的条件来识别VCL和FireMonkey?

在Delphi XE2中,我们使用了

{$ifdef Win32}
{$ifdef Win64}
Run Code Online (Sandbox Code Playgroud)

确定我们所处的平台.

是否有任何预定义的条件可以识别VCL和FMX?

delphi delphi-xe2 firemonkey

13
推荐指数
2
解决办法
4705
查看次数

在项目构建配置的上下文菜单中,"Make"和"Build"之间有什么不同?

当我弹出Delphi项目的构建配置的上下文菜单时,我看到"Make","Build"和"Clean"的菜单项.

"Make"和"Build"之间有什么不同?似乎两者都执行相同的任务.

delphi build

12
推荐指数
2
解决办法
1万
查看次数

Delphi XE2:FastMM是否适用于Win64应用程序?

我在我的Delphi应用程序中使用FastMM跟踪内存泄漏,尤其是在FullDebugMode中.使用Delphi XE2的新版本,我们可以使用FastMM作为内存管理器吗?FastMM可以与Win64平台一起使用吗?

delphi fastmm delphi-xe2

12
推荐指数
2
解决办法
2571
查看次数

如何使FastCodePatch在Delphi XE2 Win64平台上运行?

Unit FastCodePatch.pas在Win32平台上运行.Delphi XE2支持Win64平台,任何想法如何让FastCodePatch在Win64平台上运行?

unit FastcodePatch;

interface

function FastcodeGetAddress(AStub: Pointer): Pointer;
procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);

implementation

uses
  Windows;

type
  PJump = ^TJump;
  TJump = packed record
    OpCode: Byte;
    Distance: Pointer;
  end;

function FastcodeGetAddress(AStub: Pointer): Pointer;
begin
  if PBYTE(AStub)^ = $E8 then
  begin
    Inc(Integer(AStub));
    Result := Pointer(Integer(AStub) + SizeOf(Pointer) + PInteger(AStub)^);
  end
  else
    Result := nil;
end;

procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);
const
  Size = SizeOf(TJump);
var
  NewJump: PJump;
  OldProtect: Cardinal;
begin
  if VirtualProtect(ASource, Size, PAGE_EXECUTE_READWRITE, OldProtect) then
  begin
    NewJump := …
Run Code Online (Sandbox Code Playgroud)

delphi 64-bit delphi-xe2

11
推荐指数
2
解决办法
1769
查看次数

如何在DFM文件中始终保持PixelsPerInch = 96,即使Windows使用中等字体大小(125%)

我将Windows 7字体大小设置为中等(125%).当我打开表单Delphi XE2 IDE时,DFM文件中的PixelsPerInch总是自动设置为120.在Windows中使用较小的字体大小(100%)使得Delphi DFM文件中的PixelsPerInch为96.

这在团队环境中编码时会产生问题.大多数团队成员使用较小的字体大小(100%或96 PPI).存储在版本控制存储库中的所有DFM文件都使用96 PPI.如果我将使用120 PPI的DFM文件提交到存储库,则所有其他团队成员将对我更改为DFM文件的内容感到困惑.与尺寸,宽度或高度相关的所有属性都将更改.

在使用120 PPI窗口环境时,是否可以强制Delphi IDE将DFM保存在96 PPI中?

delphi opentools

11
推荐指数
1
解决办法
5126
查看次数

如何为TDictionary创建一个敏感的TEqualityComparer案例?

我有一个使用TDictionary的案例:

var D: TDictionary<string, integer>;
begin
  D := TDictionary<string, integer>.Create(TCustomEqualityComparer.Create());
  try
    D.Add('One', 1);
    D.Add('Two', 2);
    D.Add('Three', 3);

    showmessage(inttostr(D.Items['One']));
    showmessage(inttostr(D.Items['TWO']));
  finally
    D.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Generics Defaults TEqualityComparer(Delphi)复制类TCustomEqualityComparer,对GetHashCode方法进行微小修改:

TCustomEqualityComparer = class(TEqualityComparer<string>)
public
  function Equals(const Left, Right: string): Boolean; override;
  function GetHashCode(const Value: string): Integer; override;
end;

function TCustomEqualityComparer.Equals(const Left, Right: string): Boolean;
begin
  Result := SameText(Left, Right);
end;

function TCustomEqualityComparer.GetHashCode(const Value: string): Integer;
begin
  Result := BobJenkinsHash(Value[1], Length(Value) * SizeOf(Value[1]), 0);
end;
Run Code Online (Sandbox Code Playgroud)

我希望TCustomEqualityComparer能够对键值执行不区分大小写的匹配.例如:

D.Items['TWO']
Run Code Online (Sandbox Code Playgroud)

但是,我收到"找不到项目"的例外情况.我使用的是Delphi 2010版本14.0.3513.24210.

有谁知道我的代码有什么问题?

delphi

10
推荐指数
2
解决办法
2864
查看次数

SQLite库可以嵌入(Link)Delphi可执行文件吗?

我想知道我们是否能够将SQlite库嵌入到Delphi可执行文件中,我们可以将我们的应用程序部署为单个.exe文件而不需要任何SQlite dll文件.

嵌入不是将sqlite dll文件保存到资源中,而是链接到Delphi可执行文件.

delphi sqlite

10
推荐指数
3
解决办法
5384
查看次数

Delphi XE2:如何定义自定义DataSnap REST URI?

我正在使用Delphi XE2编写DataSnap REST服务.我注意到DataSnap中的REST URI必须严格遵循这种格式(请参阅此处):

http://my.site.com/datasnap/rest/URIClassName/URIMethodName[/inputParameter]*
Run Code Online (Sandbox Code Playgroud)

一个着名的例子是DataSnap服务器向导创建的示例方法:

http://my.site.com/datasnap/rest/TServerMethods1/ReverseString/ABC
Run Code Online (Sandbox Code Playgroud)

在URI中提供参数有两种常用方法:

  1. 路径段参数:/ TServerMethods1/ReverseString/ABC
  2. 查询字符串参数:/ TServerMethods1/customers?name = bill

DataSnap REST肯定支持Path Segment参数URI.DataSnap REST中是否支持查询字符串参数URI?

我有以下REST URI示例,发现它似乎不可能使它适用于当前的DataSnap REST库:

  1. /客户/ A1234

    返回ID为A1234的客户对象

  2. /customers/A1234.xml

    以XML格式返回ID A1234的客户对象

  3. /customers/A1234.json

    以json格式返回ID A1234的客户对象

  4. /customers/A1234.html

    以html格式返回ID A1234的客户对象

  5. /客户?NAME =比尔

    返回名称中包含Bill的客户列表

delphi rest datasnap delphi-xe2

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

Delphi XE2:使用dcc32.exe编译简单程序失败

安装Delphi XE2后,我尝试命令行编译dcc32.exe来编译一个简单的程序:

program test;

uses SysUtils;

begin
end.
Run Code Online (Sandbox Code Playgroud)

命令行编译器显示错误:

c:> dcc32.exe test.dpr
Embarcadero Delphi for Win32编译器版本23.0版权所有(c)1983,2011 Embarcadero Technologies,
Inc.test.dpr(3)致命:F1026未找到文件:'SysUtils.dcu'

这不会发生在Delphi XE上.

delphi dcc32 delphi-xe2

9
推荐指数
3
解决办法
8331
查看次数

标签 统计

delphi ×10

delphi-xe2 ×6

64-bit ×1

build ×1

datasnap ×1

dcc32 ×1

fastmm ×1

firemonkey ×1

opentools ×1

rest ×1

sqlite ×1