RAD Studio 10.4补丁1:缺少文件和C ++调试-一种安装补丁的新方法!

使用RAD Studio 10.4,您现在可以从IDE安装补丁,而无需手动安装它们。我们今天还发布了一个小补丁,以解决一些丢失的文件。这是C ++ Win64调试的基本文件。

RAD Studio 10.4补丁1

此修补程序解决了以下问题:

缺少文件:

修改后的文件:

  • 修改defaults.xml和CodeGear.Deployment.Targets构建文件

请继续阅读以了解如何安装10.4补丁,机制已经改变,甚至更好!

在10.4中安装补丁

以前,要安装补丁,您需要下载文件,手动将其解压缩,然后将文件复制到RAD Studio安装文件夹中。这不是理想的,因为它需要手动安装(因为总是有出错的余地)。此外,无法在IDE中查看已安装的修补程序列表。

RAD Studio 10.4提供了一种安装新补丁的方法。GetIt现在可以安装补丁了。补丁可用时,将在“欢迎页面”屏幕上通知您。

IMG_256

如果没有补丁,则显示“ Version is Latest”,表示IDE是最新版本。在上面的屏幕截图中,该修补程序可用。此处鼠标突出显示,因为它在补丁通知上方。单击此按钮在GetIt程序包管理器中打开一个新的[补丁和修补程序]部分。

IMG_257

点击[安装]按钮进行安装。

补丁1即将安装。将来,当IDE运行时,某些修补程序可能会应用于已安装(正在使用)的文件。GetIt通过关闭并安装IDE可以正确处理这些问题。

如果IDE可以连接到GetIt服务器,则补丁只会出现在“欢迎页面”屏幕上。在10.4中,我们将相同的基于GetIt的安装程序用于在线和离线(ISO)安装。如果从脱机模式下的ISO安装,则需要告诉GetIt在线查找数据,而不是使用ISO映像作为安装源。为此,请在命令行上运行以下命令:

GetItCmd.exe -c = useonline

(类似地,使用-c = useoffline使其脱机。)

补丁1安装说明

补丁1的安装过程非常简单。

  • 请关闭所有项目或打开IDE(如果尚未打开)。
  • 在欢迎页面上查找补丁通知。如果找到它,请单击它。在GetIt窗口中选择补丁,然后单击Install。
  • 请注意,Windows UAC通知出现在任务栏中,要求提升GetIt的权限。它也可能出现在IDE后面。如果它没有出现在IDE上方,请单击任务栏上的按钮。
  • 安装补丁后,“欢迎页面”屏幕可能不会更新(我不经常对服务器进行ping操作,因此在运行GetIt之后它不会更新),但是下次我打开IDE时,它会显示“版本为最新显示信息。

如果通过离线ISO安装程序安装:

  • 运行运行  GetItCmd.exe -c = useonline并按照上面的安装说明进行安装。
  • 或者,您可以从此处下载修补程序然后像往常一样手动安装。我们建议您使用GetIt安装它。

使用RAD Studio,Delphi或C ++ Builder进行设计,代码,编译,部署,可减少开发时间并更快地推向市场。

开源是软件开发中非常重要的部分。作为开发人员工具的创造者,这也使开源对我们也很重要。使用Delphi和C ++ Builder创建了各种各样的开源项目,这对我们的开发人员社区以及其他社区都是有利的。

 

流行的由Delphi驱动的开源项目的一些示例:

  • HeidiSQL是一个非常受欢迎的客户端,用于管理用Delphi编写的MariaDB,MySQL,SQL Server,PostgreSQL和SQLite(当然是这样-Delphi使数据库的操作如此简单!)
  • Pyscripter是一个非常流行的 功能丰富但轻量级的Python IDE
  • Virtual-TreeView  是一个Delphi树视图控件
  • DelphiMVCFramework  是Delphi中流行且功能强大的Web解决方案框架。支持RESTful和JSON-RPC API开发。
  • 概要mORMot ORM / SOA / MVC框架
  • Alcinoe组件库,用于Delphi  Full OpenGL视频播放器,WebRTC Delphi包装器,本机ios / android TEdit,改进的FireMonkey控件,Firebase云消息传递,Android / iOS Facebook SDK登录,Json / Bson Parser,ImageMagick包装器,MongoDB客户端等等
  • 查找易于发生DLL劫持的可执行文件的强盗
  • PortableApps  为云,本地和便携式USB驱动器提供便携式软件
  • Dev-C ++  免费,可移植,快速,简单的C / C ++ IDE
  • PeaZip  免费的Zip和Rar提取器
  • 更不用说诸如CnPackGExpertsTurboPackProject JEDI之类的主食了

这么多开源项目都将使用Delphi或C ++ Builder是有道理的。除了使Delphi和C ++ Builder更好(即将推出10.4)之外,Embarcadero还可以提供帮助吗?为庆祝即将发布的10.4 Sydney (我是否提到即将推出)庆祝活动的一部分,我们将赞助一些精选的开源项目。专门寻找社区参与度很高的项目,这将得益于一些财务支持。这可能会有所更改,但是您可以在此处阅读当前的详细信息

提交项目

  • GitHub上发布项目
    • 我们知道您可能已经在其他地方发表过,但是目前我们专注于GitHub
  • 查看要求和技巧  (确保可以收到赞助)
  • 为您的项目和未来计划创建简短的视频概述
  • 在Twitter上关注@EmbarcaderoTech
  • 在Twitter上使用@EmbarcaderoTech标记并使用至少一个标签#RAD104,#Delphi104#CBuilder104的标签将带有链接的视频发布到您的项目。
  • 使用您的信息填写此表格
  • 不断更新和推广您的项目

有用的链接

10.4 Sydney的发布是更新现有开源项目或启动新项目的绝佳时机!即使您没有被选中从Embarcadero获得赞助,也可以按照以下提示来帮助您获得其他赞助!

使用RAD Studio,Delphi或C ++ Builder减少开发时间并更快地推向市场。设计。码。编译。部署。

Delphi Runtime Library是该产品的基础之一,因为UI库(例如VCL和FireMonkey)以及数据库访问库和许多第三方组件都在核心RTL上进行回复。这就是为什么对RTL进行更改特别相关,因为它们往往会影响所有开发人员。以下是一些即将推出的重要更改。

位计数标准功能

我们为常见的低级位处理操作引入了新的标准功能,如下所示。

  • 计算前导零:计算参数X的最高有效一位之前的前导零位的数量。如果X为零,则返回位宽。即CountLeadingZeros32为32,CountLeadingZeros64为64
  • 计算尾随零:计算参数X的最低有效一位之后的尾随零位数。如果X为零,则返回位宽。例如,CountTrailingZeros32为32,CountTrailingZeros64为64。
  • 计数填充:计算参数X的1的个数。返回值的范围是0到位宽度。即CountPopulation32为32,CountPopulation64为64

经典课程的其他功能

  • TCustomIniFile类具有以下两种方法:WriteInt64和ReadInt64
  • TGUID类型具有新的IsEmpty方法
  • 现在,TJSONArray类的Items属性是默认的数组属性,允许您编写myJArray [2]而不是myJArray.Items [2]

更好的流缓冲

TStream基类的CopyFrom函数曾经具有用于复制数据的固定常量缓冲区(设置为60K)。这对于复制大型流可能非常低效。新的默认值为1MB,但是该方法还有一个附加参数,您可以根据所执行的复制操作(源流和目标流)使用该参数提供特定的缓冲区大小。该方法的新签名是

//类TStream
函数CopyFrom(const来源:TStream;计数:Int64 = 0;
  BufferSize:Integer = $ 100000):Int64;

性能优化

  • JSON读取优化:TJSONReader现在快了50%
  • 优化将已排序的StringList分配给另一个StringList
  • RTTI性能改进包括:
    • TRttiMethod.Invoke快约4倍
    • TVirtualInterface调用快约1.7倍
    • TRttiType.GetXxxx(AName)方法快约10倍
    • 对于TValue,几个操作更快
  • System.Classes中的QuickSort操作现在更加高效

FreeAndNil

我们更新了FreeAndNil过程的签名,以避免将其与接口引用和其他不受支持的数据类型一起使用。现在声明需要引用一个TObject:

过程FreeAndNil(const [ref]对象:TObject); 排队;

这意味着FreeAndNil的错误使用现在将导致编译器错误。在过去,不会发现错误的用法,从而导致难以解决的错误。请注意,尽管将参数声明为const,但确实修改了by-reference变量。

其他分类功能

  • 我们已删除了一些阻止某些控制台应用程序在Windows Server Core上运行的依赖项
  • TStringHelper.GetHashCode方法已更新为在对字符串进行哈希处理之前不将其大写,因此其结果与其他内部操作(如TStringComparer类)匹配。

这只是部分预期。我们还在并行编程库,AppTethering,REST和HTTP客户端库以及其他Delphi RTL子系统中做了大量工作。希望这些改进(即使相对较小)也将因其在Delphi开发人员每天的工作中所产生的积极影响而受到赞赏。

这是即将发行的RAD Studio的预览。始终可能存在最新的错误或更改。在正式发布该版本之前,此处没有任何内容是最终的。报名参加下周的10.4发布网络研讨会。 

使用RAD Studio,Delphi或C ++ Builder减少开发时间并更快地推向市场。设计。码。编译。部署。

安卓获得设备 ID

使用移动设备时,程序员非常需要能够识别每台设备。

为了执行此操作,我们有两种主要形式,一种是由移动设备本身的 IMEI,即设备制造商提供的 ID;或第二种方法是 Android 向已安装的应用程序提供的ID。

就个人而言,我使用第二个选项,因为对于第一个获得IMEI,我们必须获得READ_PHONE_STATE的权限许可,因为它是一个危险的权限。

从Delphi获取 Android 上的设备 ID

要从Delphi获取Android ID,我们只需要几个声明如下几点:

我们想澄清,这个Id可能会有所不同。什么时候会变化?例如,当您将移动设备还原到出厂设置或设备Root时,它可能会有所不同。

因此,如果用户安装应用程序,我们将获得一个 ID,但如果用户将设备重置为出厂,然后重新安装我们的应用程序,我们将获得与第一个 ID 的不同 ID。

为了能够在Android上获取 Id,我们需要两个单元:Androidapi.JNI.ProviderAndroidapi.helpers,功能如下:

Uses

Androidapi.JNI.Provider, Androidapi.helpers;

 

function GetDeviceId(): string;

begin

try

Result := JStringToString(TJSettings_SECURE.JavaClass.getString(TAndroidHelper.Activity.getContentResolver, TJSettings_SECURE.JavaClass.ANDROID_ID));

except

Result := ”;

end;

end;