标签: delphi-xe5

如何从 Delphi 64 位应用程序 (XE5) 获取 CPU 速度?

我们正在使用 Delphi XE5 将应用程序套件迁移到 64 位。在“关于”框中,我们显示 CPU 速度。我们当前使用的例程是 32 位汇编,因此无法在 64 位下编译。

有没有一种本地方法可以从 Delphi 64 位中检索 CPU 速度?

delphi 64-bit delphi-xe5

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

从 D2006 移植到 XE5 后偶尔出现访问冲突,在 XP 兼容模式下不会发生

我们有一个在 Delphi 2006 中运行良好的大型应用程序。我们已将其移至 XE5,并且经常遇到零星的访问冲突。我们正在使用 VCL 表单和许多 DevExpress 和其他第三方组件。我们正在使用带有 Delphi XE Enterprise 版本 19.0.14356.6604 的 Windows 7 Professional。

在移植到 XE5 之后,我们在网上、这里和其他地方查看了有关 A/V 的帖子,但没有发现任何似乎与我们的问题相关的内容。

以下是我们对 A/V 的了解:

  • 它们通常出现在相同的地址:0x50059f27。有时它们发生在 0x5005eb86,通常是在另一个地址触发了 A/V 之后。
  • 它们发生在应用程序中的各种不同位置和操作中。
  • 它们不是 100% 可重复的。有时,项目的重建会消除一个触发因素,但随后其他因素会触发它。它们似乎在构建中保持相当一致的可重现性。
  • 它们通常与打开对话框或激活返回大量记录(1,000+)的查询有关。
  • D2006 版本(我们在 XP 机器或 XP 虚拟机上运行)不会发生这种情况。 - 当我们在 XP-SP3 兼容模式下运行 XE5 应用程序时,它们不会发生。
  • 如果我们在典型的 A/V 之后中断,则指针将在 System.pas 中的第 562 行,在下面的代码部分的{$IFDEF CPUX86}asm 部分procedure Move(const Source; var Dest; Count: NativeInt);中。线路是FILD QWORD PTR [EAX] {Last 8}

我们猜测这个问题与我们的应用程序如何处理 Windows 7 内存管理有关,但我们不知道如何找出哪里出错了。附加了一个示例调用堆栈。

任何人都可以建议我们如何继续解决此问题?是否有第三方调试工具可以提供帮助?我们是否可以使用 Delphi IDE …

delphi access-violation windows-7 delphi-xe5

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

错误 F2063 无法编译使用的单元(依赖包的)

我编写了 2 个包:MEComps_DXE5 和 AMLComps_DXE5。后者取决于前者。两者都应该是多平台的:Win32、Win64 和(将来的)OSX。

当我打开第一个包 MEComps_DXE5 时,我可以编译、构建和安装它。我收到了一些警告,因为这个库包含的代码也必须在旧的 D5 上编译,但构建成功并在预期的地方创建了 dcu 和 dcp 文件。

当我打开第二个包 AMLComps_DXE5 时,发现这种情况:

  • 如果我不声明对 MEComps_DXE5 的依赖,该包将正确编译和构建(没有错误,生成 dcu 和 dcp 文件),但 Delphi 会警告我它已经从 MEComps_DXE5 隐式导入了单元,并要求我添加包到依赖项列表(需要)
  • 如果相关声明,则编译将失败"[dcc32 Fatal Error] MEComps_DXE5.dpk(52): F2063 Could not compile used unit 'MEClasses.pas'",其中MEClasses是MEComps_DXE5包的第一个单元。

我已经尝试解决这个问题几天了,但无济于事。我在两个方面工作:

  • 为什么 Delphi 甚至试图编译另一个包?我刚刚构建并安装了它,并且拥有所有 dcus 和 dcp。
  • 为什么编译失败?

至于第一个问题,我一点头绪也没有。

至于第二个问题,在这种情况下,文档是没有用的。它解释了为什么不能编译一个使用过的单元是致命的,并指出原因是通过查看以前的错误来确定的。但在这种情况下,没有以前的错误。

由于 MEComps_DXE5 实际上是自行编译和构建的,我怀疑这与语法或代码有什么关系。编译器似乎无法找到编译这些单元所需的东西。

这两个包分别驻留在自己的目录中。我将 MEComps\Win32 dcu 目录放在库路径和浏览路径上。IDE 实际上在查找使用的单位时没有问题。

我还检查了 dcc32 命令行,似乎编译器知道所有涉及的目录。

我可以添加的其他信息:

  • 两个包都有自己的包含文件(在它们的源目录中)。我不确定这些是否包含在包含列表的包中,但我已经尝试了两种方法,但似乎没有任何改变。
  • 这两个包都有一个相应的 Delphi 5 包,其中包含一些相同的单元和代码(尽管 dpk 不同)。这些编译和构建正确。Delphi 5 dcu 文件在源目录中生成。这会对 XE5 …

delphi dcc32 delphi-xe5

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

在 Delphi 中集成 Adob​​e SDK 编辑 PDF

我正在开发一个应用程序,在该应用程序中我需要能够编辑现有的 PDF 表单并以交互方式将 PDF 表单字段拖放到文件上。

表单字段,如下拉、文本、多行文本、单选按钮。目前我正在使用 ActiveX 控件在 Delphi 应用程序中打开 PDF 文件。

但是,我只能阅读 PDF 表单,但我希望能够像删除表单字段一样编辑它。

这个想法是在现有的 PDF 表单上添加表单表单并保存它。我尝试过 Gnostice、PowerPDF、quickPDF,但它们不允许交互式修改 PDF 文件,如 ADOBE。这个在线应用程序PDFEscape允许我们以交互方式创建新的和编辑现有的 PDF 表单。

在此处输入图片说明

在 Gnostic 中,我们可以以编程方式进行编辑,例如:

在此处输入图片说明

问题:

  • 有没有一种方法可以让我们以交互方式编辑 PDF 表单以删除表单字段?
  • 我们可以在 Delphi 中嵌入 Adob​​e 或任何其他软件来编辑现有的 PDF 吗?

pdf delphi pdf-generation pdf-form delphi-xe5

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

D10 到 DXE5:TJSONBool.Create(False) 和 JSONObj.ToJSON 的等价物是什么?

下面的代码在D10 Seattle上编译得很好,但是我安装了D10 的电脑坏了。然后我需要使用DXE5在我的项目中进行一个小的更新,但不编译,因为命令TJSONBool.Create(False)JSONObj.ToJSON存在。

什么是等价的TJSONBool.Create(False),并JSONObj.ToJSONrespectivally上DXE5

uses
 Data.DBXJSON, SHFolder;

function GetSpecialFolderPath(folder : integer) : string;
 const
   SHGFP_TYPE_CURRENT = 0;
 var
   path: array [0..MAX_PATH] of char;
 begin
   if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
     Result := path
   else
     Result := '';
 end;

procedure ChangeChromeSetting(const ATarget, Avalue: string);
var
  specialfolder: integer;
  pathchrome: String;
  JSONObj, ObjIpp: TJSONObject;
  JSONPair: TJSONPair;
  OldValue: string;
begin
  specialFolder := CSIDL_LOCAL_APPDATA;
  pathchrome := GetSpecialFolderPath(specialFolder);
  pathchrome := pathchrome + '\Google\Chrome\User Data\Local …
Run Code Online (Sandbox Code Playgroud)

delphi json delphi-xe5

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

确定位置服务是否已启用

如何确定firemonkey应用程序中的位置服务是否开启/关闭?

我知道这篇文章:如何检查Android上是否有网络(Delphi XE5).我不确定这有助于我检测位置服务是打开还是关闭.

delphi android firemonkey delphi-xe5

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

在VMWare上编译时,Rad XE5未定义参考错误(E2597)

今天,我将XE5安装移植到了VMWare Windows 7 x86 OS上。我没有安装android SDK,而是通过网络驱动器映射从主机OS上现有的SDK中创建了一个。

VMWare OS上的网络驱动器S基本上是到主机OS的物理硬盘驱动器C的克隆(链接),因此路径应该可以。SDK已成功创建,但是在尝试编译时出现了一些(可能很多)链接器错误。

我也从S驱动器打开现有项目,几乎与以前在主机OS上进行的操作相同。我可以从VM C磁盘或相同的S磁盘位置运行示例项目,例如FlashLight,而没有链接器错误,因此我猜这是我项目中的东西。

谁能说出Rad XE5为什么有未定义的参考错误(E2597),我该如何绕过它呢?

错误日志如下:

 [DCC Error] E2597 S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:139: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
      S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
      S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
      S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:145: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
      S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
      S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference …
Run Code Online (Sandbox Code Playgroud)

delphi android delphi-xe5

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

delphi XE 5程序单元

如何打开应用程序初始化的程序单元?我需要做出改变.

此外,除了显示的当前单位之外,是否还要搜索程序中的所有单位?Delphi 5有一个弹出窗口,允许您选择.

ide delphi unit-testing delphi-xe5

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

在Delphi Firemonkey移动应用程序中读取和编写一个inifile?

如果这已经在SO上访问了,请指出我,因为我似乎无法找到它.话说回来:

使用标准的delphi应用程序事件,以及移动应用程序生命周期事件处理,我试图找到读取和写入INI文件的最佳位置?

当我测试时,我创建了一个带有按钮的演示应用程序,该按钮递增计数变量并将其显示在显示消息中

procedure TfrmMain.Button1Click(Sender: TObject);
begin
 inc(Count);
 ShowMessage(IntToStr(Count));
end;
Run Code Online (Sandbox Code Playgroud)

在主要形式的OnCreate甚至,我读了inifile

procedure TfrmMain.FormCreate(Sender: TObject);
var
 Ini: TIniFile;
begin
 Ini := TIniFile.Create( TPath.GetDocumentsPath + PathDelim + 'fortysixtozero.ini' );
 try
  Count    := Ini.ReadInteger( 'Main', 'Count', 0 );
 finally
  Ini.Free;
 end;
end;
Run Code Online (Sandbox Code Playgroud)

现在,知道移动应用程序可以有不同的状态,我想知道编写ini文件的最佳位置在哪里?

delphi android ios firemonkey delphi-xe5

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

Delphi XE5能否为Windows 8生成应用程序?

我很好奇我可以在Delphi XE5中为Windows 8商店构建应用程序吗?
(你知道,看起来像瓷砖的那些.)

我搜索过Embarcadero的网站.它说明了这一点

您的应用程序将在具有Intel和Intel Atom硬件的Windows台式机和基于x86的平板电脑上运行,例如Microsoft Surface Professional,HP的Slate平板电脑,华硕等,以及来自Acer,Samsung等的基于AMD处理器的平板电脑.

从此描述中,似乎支持Windows应用商店应用.我对吗?

delphi windows-8 delphi-xe5

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