【问题标题】:Delphi generic interfaces with string types带有字符串类型的 Delphi 泛型接口
【发布时间】:2011-01-03 13:10:46
【问题描述】:

我尝试在 Delphi 2010(也在 XE 中)定义一个通用接口,并且(即使它编译)错误洞察抱怨语法。不幸的是,这也会破坏实现类的代码完成。所以我想知道这是IDE的错误还是我的想法错误;)

界面:

IValue <T> = interface
  function GetValue : T;
  procedure SetValue (Value : T);
end;

还有一个实现类:

TSomeClass = class (TInterfacedObject, IValue <string>, IValue <Integer>)
protected
  function GetValue1 : string;
  procedure SetValue1 (Value : string);
  function GetValue2 : Integer;
  procedure SetValue2 (Value : Integer);
  function IValue <string>.GetValue = GetValue1; //from this point error insight complains
  procedure IValue <string>.SetValue = SetValue1; 
  (*....*)
end;

如果我用Tstring 替换string 并定义TString = string 一切看起来都很好。有什么想法还是德尔福错误?

问候,

可可

【问题讨论】:

标签: delphi generics interface syntax-error


【解决方案1】:

据我观察,IDE 使用的解析器与编译器不同。将事物标记为编译器毫无疑问地接受的错误是臭名昭著的。我发现在使用泛型时尤其如此。虽然,每个版本都对其进行了改进,但有时仍然会出错。一些建议:

  1. 确保您拥有最新的 更新。
  2. 打开 QC 报告(或为现有报告投票)。与 2010 年相比,XE 更有可能解决这个问题。
  3. 你可以试试 Andreas Hausladen 的非官方IDE Fix Pack。它通常包含许多 Code Insight 修复。

你也可以试试CnPack IDE Wizards。它包括一个称为“代码输入助手”的功能。它是 IDE 内置代码完成的替代方案,即使 Error Insight 检测到错误,它在许多情况下仍然有效。

【讨论】:

  • 谢谢,我也试过XE。同样的错误。安装了 IDE 修订包以及 CnPack。所以我去看看 embarcadero 的 QC...所以你看不出提供的代码有什么问题?
  • 您的第 2 点应改为:“与您已经付费购买的任何版本相比,XE2 更有可能解决这个问题”
  • 你是对的,Deltics...这似乎是一个新功能而不是错误修复 ;) 但是 Delphi 中的错误洞察和代码完成更可能是内部错误和代码混乱:)
猜你喜欢
  • 2016-11-01
  • 1970-01-01
  • 2023-03-22
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多