最近,我收到此错误,并且所有与 Delphi 相关的项目/文件创建项都丢失了:
该项目无法加载,因为所需的个性 Delphi.Personality 不可用。
我需要做的是选择“管理平台”,然后 RAD Studio 将重新安装一些组件并恢复项目菜单。
但是,当我关闭并重新打开 RAD Studio 时,该问题将再次出现。
我以前没有这样的问题。有谁知道如何修理它?
背景
在 RS10.3 之前,我曾经使用 Andreas Hausladen DDevExtensions将我的项目源中的版本号设置为所有模块(bpl's/exe)都相同,但不幸的是,Andreas 已停止为 RS10.4 及更高版本更新他的工具。
因此,与使用 NotePad++ 对所有 dproj 文件应用多文件更改相比,我正在寻找更舒适的方法来在我的应用程序模块中设置版本号。
但是...另一方面,我确实希望保留特定于模块文件的特定信息(如文件描述等)。
我还要什么喜欢但是,这不是一个真正的要求是有我的(C)的通知,和其他共享信息,以在一个文件中(最好是.RC)也可集中进行。
从 dproj 文件中删除版本信息(无论如何维护起来都很痛苦)并为每个模块提供一个特定的 .rc 文件不是问题。
另一个优点是拥有一个中央版本号和 (c) 文件在 svn 更改管理中也好得多,因为我不必因为版本/内部版本号更改而提交每个 .dproj 文件。
调查
(随着我们的进行更新)我签出
但这些解决方案并不是我真正想要的。我不是在寻找脚本,而是寻找源文件/项目文件的方式来完成我的任务。
所以这是Q
我如何拥有一个包含我的版本号的.rc 文件并在其他包含特定版本信息的 .rc 文件中使用它
我是Delphi的新手,来自Visual Studio,这是一个简单的问题(我猜):当我启动IDE时,如何阻止Delphi 10 Seattle打开最后一个使用项目(组)?
我找到了一些关于.dsk文件的信息及其作用:
.dsk文件记录您当前的设置:
- 桌面布局
- 断点
- 观看物品
- 文件当前在IDE中打开
稍后重新打开项目时,将读取.dsk文件,并恢复桌面布局,断点和手表.此外,无论项目是否使用它们,项目关闭时打开的所有文件都会再次打开.
当我打开一个项目时,我很好.但是,当我启动IDE时请不要打开它.大多数情况下,我想开始或打开另一个项目,而不是我正在处理的最后一个项目.我搜索了选项和互联网,但找不到解决方案.任何人?
背景
我想创建一个单元测试来测试 Delphi 的一些 rtl 方面,为了做到这一点,我想使用我想直接从二进制表示创建的非常具体的 IEEE 浮点值。
到目前为止,我已经提出了这个例程,它实际上完成了这项工作。
function TestIEEEDouble.BuildDoubleFromRawInt64(const aBinData:UInt64):double;
begin
CheckEquals(sizeof(aBinData),sizeof(Result),'sizeof(aBinData),Sizeof(Result)'); // ensures we dont mess up with wrong types
Move(aBinData,Result,sizeof(Result));
end;
Run Code Online (Sandbox Code Playgroud)
它的用法如下(bindata 可能仍然是错误的,但这不是问题):
procedure TestIEEEDouble.Setup;
begin
inherited;
FSmallestPositiveDouble:=BuildDoubleFromRawInt64($0000000000000001);
FSmallestNegativeDouble:=BuildDoubleFromRawInt64($8000000000000001);
FLargestPositiveDouble :=BuildDoubleFromRawInt64($7FEFFFFFFFFFFFFF);
FLargestNegativeDouble :=BuildDoubleFromRawInt64($8FEFFFFFFFFFFFFF);
end;
Run Code Online (Sandbox Code Playgroud)
题
是否有允许const double直接从二进制(十六进制)表示创建一个看起来像这样的语法:
const
cSmallestPositiveDouble:double=double($0000000000000001);
Run Code Online (Sandbox Code Playgroud)
结果显然不应该是1.0(使用这种语法)但是(接近)4.94065645841247e-324
我已经将我的表单更改为无边框形式,我只是将BorderStyle属性更改为bsNone,但现在我的应用程序丢失了窗口锚点和一些命令,如
WIN +↑(对齐表格客户端)
WIN +↓(最小化表格)
WIN +→(右对齐表格)
WIN +←(左对齐表格)
我试过设置BorderStyle: bsSizeable并使用下面的代码FormCreate,但这不起作用:
procedure TfrmBase.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle
,GWL_STYLE
,GetWindowLong(Handle, GWL_STYLE)
AND (NOT WS_CAPTION)
AND (NOT WS_THICKFRAME)
);
Refresh;
FormColor := oLauncher.oCor;
end;
Run Code Online (Sandbox Code Playgroud)
结果如下:
上面的图像是我想要的,但我已经提到的Windows命令不起作用
有什么办法可以设置BorderStyle: bsNone并且不丢失这些命令吗?
EDITED
如果我使用WS_THICKFRAME我的表单返回一个小的顶部边框和Windows命令运行良好,但我不想要顶部边框.
编辑2
我非常接近预期的结果,但还有一点问题......
我把它放在我的身上 FormCreate
SetWindowLong(Handle
,GWL_STYLE
,GetWindowLong(Handle, GWL_STYLE)
AND (NOT WS_CAPTION)
);
Run Code Online (Sandbox Code Playgroud)
我创建了这个方法
private
procedure WmNCCalcSize(var Msg: TWMNCCalcSize); message WM_NCCALCSIZE;
Run Code Online (Sandbox Code Playgroud)
然后
procedure TfrmBase.WmNCCalcSize(var Msg: TWMNCCalcSize);
begin
inherited;
if Msg.CalcValidRects then
begin …Run Code Online (Sandbox Code Playgroud) 每次我打开 Delphi 并尝试在欢迎页面上加载 GetIt Packages 时,都会收到错误,并且无法加载,如下图所示:

单击“重试”不起作用。同样的问题。
它给我的警告/错误是:
无法加载 URL https://getit-12.embarcadero.com。发生以下错误:模块“rtl290.bpl”中地址 7A0E2732 处发生访问冲突。写入地址77C9BC5C
这种情况每次都会发生。这是 Delphi 12 中的错误还是我的安装没有正确完成?我该如何修复 GetIt 和此警告/错误?
从2019年8月1日开始:
发布到Google Play时,除32位版本外,所有包含本机代码的新应用程序和应用程序更新都必须提供64位版本。
如何在Firemonkey应用程序中设置应用程序以满足64位要求?
我正在使用Embarcadero RAD Studio 10.3。
注意:请耐心等待,由于此处和此处的一些讨论以及我在此处和此处报告的一些问题,我感到有点“火爆”。
一些背景
Ye olde(10.4 之前)FreeAndNil看起来像这样:
FreeAndNil(var SomeObject)
Run Code Online (Sandbox Code Playgroud)
新的和新鲜的FreeAndNil看起来是这样的:
FreeAndNil(const [ref] SomeObject: TObject);
Run Code Online (Sandbox Code Playgroud)
IMO 都有其缺点:
FreeAndNil指针、记录和接口编译得很好,但在运行时会产生有趣但通常不需要的效果。(完全狂暴,或者如果幸运的话它会因 EAccessViolation、EInvalidOperation 等而停止。)FreeAndNil像这样调用新的:FreeAndNil(TObject.Create)它会编译甚至运行得很好。我喜欢FreeAndNil在我出错时警告我并提供例如属性而不是字段的旧版本。不确定如果为此FreeAndNil实现提供对象类型属性会发生什么。没试。如果我们将签名更改为 ,FreeAndNil(var SomeObject:TObject)那么它将不允许我们传递任何其他变量类型,然后正是该TObject类型。这也是有道理的,好像不是这样FreeAndNil,人们可以轻松地更改TComponent在例程中作为类型提供的变量,将 var 变量更改为完全不同类型的对象,例如TCollection. 当然FreeAndNil不会做这样的事情,因为它总是将 var 参数更改为 nil。
所以这是FreeAndNil一个特例。
甚至可能特别到足以说服 delphi 添加一个编译器魔术 FreeAndNil实现?投票给任何人?
潜在的解决方法 …
delphi memory-management object-lifetime rad-studio delphi-run-time-library
我正在尝试为 Ubutun 18.04.4 LTS(在 RAD SERVER 10.3 中构建)重新编译 10.4.1 中的一些 API,但是拥有此库“REST.Response.Adapter”的 API 编译器会失败,并且出现此错误:
[DCC 错误] E2597 C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\ld-linux.exe: 错误:找不到 -lz [DCC 致命错误] F2588 链接器错误代码:1 ($00000001)。
我已经安装了 10.4 的一些 linux 补丁。我尝试重新安装linux SDK,什么也没有......
有人知道吗?
这是一个IDE问题。
当我为 C++Builder 选择New -> Multi-Device Application项目时,目标平台仅提供 Windows 32 位和 Windows 64 位编译选项。
但是,当我New -> Multi-Device Application为 Delphi 选择项目时,目标平台的所有其他编译选项都可用,例如 Android 32/64 位、iOS(设备和 Sim)和 MacOS(ARM、64)
在安装过程中,我一开始也选择了所有可用的目标平台。
(在安装RAD Studio 12.0之前,我的电脑上安装了RAD Studio 11.3,我先卸载了11.3,然后安装了较新的12.0版本)
“添加平台”弹出窗口也呈灰色。
操作系统是Windows 11。
知道如何解决这个问题吗?
我尝试卸载整个IDE并重新安装3次,但问题仍然存在。
C:\ProgramData\Embarcadero再次重新启动安装时,我还删除了 Embarcadero 文件夹中的所有内容。
delphi ×10
rad-studio ×10
c++builder ×1
delphi-xe ×1
firemonkey ×1
ieee-754 ×1
linux ×1
rest ×1