-
-
4
-
3虹のカメリア - Sensitive Heart
-
2
-
0想ひ出小往 - 瀬名
-
63unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vc
-
7http://music.163.com/#/m/song?id=775446
-
200现在RTL提供了一个新的单元,System.NetEncoding,用于进行Base64、HTML和URL编码解码。 比起以前的旧方式,XE7提供的这个单元提供了更为统一规范的接口,同时在性能特性上也有更好的表现。 下表列出了上一版中的函数与XE7的System.NetEncoding提供的函数的对应关系。 XE6 XE7 Soap.EncdDecd.EncodeBase64 TNetEncoding.Base64.EncodeBytesToString Soap.EncdDecd.DecodeBase64 TNetEncoding.Base64.DecodeStringToBytes Soap.EncdDecd.EncodeStream Soap.EncdDecd.EncodeString TNetEncoding.Base64.Encode Soap.EncdDecd.DecodeStream Soap.En1动态数组现在可以类似字符串那样操作,例如: var A: array of integer; B: TBytes = [1,2,3,4]; //Initialization can be done from declaration begin ... A:=[1,2,3]; // assignation using constant array A:=A+[4,5]; // addition - A will become [1,2,3,4,5] ... end; 除此之外,还添加了一组支持类字符串操作的例程: 1、Insert函数可以在动态数组中的指定位置插入,它返回修改后的数组 var A: array of integer; begin ... A:=[1,2,3,4]; Insert(5,A,2); // A will become [1,2,5,3,4] ... end; 2、Delete函数可以删除动态数组中的元素并返7在前一节中,我讲述了TTask及如何快速开发可并行执行多任务的应用程序。接下来,我们准备探究构建在ITask基础上的IFuture。 IFuture允许通过泛型的定义,来创建一个可以返回指定类型值的任务。使用IFuture的实例,计算过程可以并行执行,然后我们可先继续做其他事,直到需要用到它的返回值为止。这样,我们便可以按自己所希望的顺序来编写代码块,但仍然能确保在需要返回值的时候获取到它。 要从Future里取得一个值,你首先需要定义它返回的类型6前面介绍了如何使用 TParallel 来提速你的循环,但总有些时候,你需要运行多个可以并行执行,而又并非循环的任务。 要执行此类任务,我们可以使用 System.Threading.TTask 和 System.Threading.ITask 来简化工作。 TTask提供了一个类来创建和管理ITask实例的交互,你可以通过WaitForAll或WaitForAny等待任务的执行完成。 举个例子,假设你有两个任务:A和B。如果A执行要3秒,B要5秒,那么执行这两个任务总共需要多久? 顺序执行时(不使用TTask/ITask) = 8秒 使用TTask.WaitF44从Delphi XE7开始,引入了全新的并行编程库用于简化并行编程,它位于System.Threading单元中。 下面是一个判断素数的简单例子: function IsPrime (N: Integer): Boolean; var Test: Integer; begin IsPrime := True; for Test := 2 to N - 1 do if (N mod Test) = 0 then begin IsPrime := False; break; {jump out of the for loop} end; end; 传统方式是循环按顺序逐个检测1到X间的数字,然后把总数存放到一个变量里(此处的Tot是一个Integer) const Max = 50000; // 50K for I := 1 to Max do begin if IsPrime (I) then Inc (Tot); end; 使用