小编Bof*_*ofA的帖子

TList <T>中的Delphi XE8错误,需要解决方法

升级到XE8后,我们的一些项目开始破坏数据.看起来像TList实现中的一个错误.

program XE8Bug1;
{$APPTYPE CONSOLE}

uses
  System.SysUtils, Generics.Collections;

type
  TRecord = record
    A: Integer;
    B: Int64;
  end;

var
  FRecord: TRecord;
  FList: TList<TRecord>;

begin
  FList := TList<TRecord>.Create;
  FRecord.A := 1;
  FList.Insert(0, FRecord);
  FRecord.A := 3;
  FList.Insert(1, FRecord);
  FRecord.A := 2;
  FList.Insert(1, FRecord);
  Writeln(IntToStr(FList[0].A) + IntToStr(FList[1].A) + IntToStr(FList[2].A));

end.
Run Code Online (Sandbox Code Playgroud)

此代码在XE7和之前(应该是)打印"123",但在XE8中打印"120".也许有人知道这个的quickfix?

更新:非正式修复在这里

delphi generics tlist delphi-xe8

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

当我声明一个通用的"T数组"时,我该如何处理内部错误?

此单元无法使用"[DCC致命错误] Test.pas(22)在XE2 Update 3中编译:F2084内部错误:URW1147"

unit Test;

interface

type
  TSorter<T> = procedure(var Values: array of T);

  TTest = class
  public
    procedure Sort<T>(const Sorter: TSorter<T>);
  end;

implementation

procedure TTest.Sort<T>(const Sorter: TSorter<T>);
begin
end;

end.
Run Code Online (Sandbox Code Playgroud)

我已提交质量控制报告:QC#103671.

有没有人对此有解决方法?

delphi generics delphi-xe2

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

"初始化"部分中匿名方法的奇怪错误

此单元无法在XE2 Update 3中编译,并显示错误"内部错误:SY6315".在XE中没有这样的问题.

unit Test;

interface

uses
  SysUtils;

var
  Proc: TProc;

implementation

initialization
   Proc := procedure
    var ByteArr: array of Byte;
    begin
      SetLength(ByteArr, 10);
    end;

end.
Run Code Online (Sandbox Code Playgroud)

有没有人有这个问题的经验?

更新:我已提交质量控制报告:QC#102888.

delphi anonymous-methods

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

禁用Getit时,x64调试失败

我总是尝试禁用未使用的软件包以节省一些IDE内存.所以在XE8u1中我尝试通过在注册表中将"$(BDS)\ Bin\GetIt220.bpl"重命名为"_GetIt"来禁用GetIt(我从不使用它).之后GetIt按预期从工具中消失,但出现奇怪的问题:当我尝试调试x64应用程序时,我得到"断开连接的会话"窗口并且IDE挂起.x86调试按预期工作.所有其他包都启用为dafault.也许有人知道GetIt如何触及x64调试器?我很好奇.

delphi delphi-xe8

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

Delphi编译bug还是我的错误?

下面的项目无法以"访问冲突"错误运行.我使用Delphi XE2 Update 3.

program Project1;

{$APPTYPE CONSOLE}

type
  TTestClass = class
  public
    class procedure Test;
  end;

var
  TestClass: TTestClass;

class procedure TTestClass.Test;
begin
end;

begin
  TestClass.Test;
end.
Run Code Online (Sandbox Code Playgroud)

如果我标记class procedure Test为"静态",则没有问题.这是'设计'吗?

PS:这是我的错,对我很羞耻.

delphi

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