小编kiw*_*kiw的帖子

如何比较TFunc/TProc包含对象的功能/过程?

我们在其中使用了TList<TFunc<Boolean>>一些function ... of objects,现在又想要Remove()一些条目.但它不起作用,因为很明显你根本无法reference to ...可靠地比较这些东西.

这是一些测试代码:

program Project1;

{$APPTYPE CONSOLE}

uses
  Generics.Defaults,
  SysUtils;

type
  TFoo = class
  strict private
    FValue: Boolean;
  public
    constructor Create();
    function Bar(): Boolean;
  end;

{ TFoo }

function TFoo.Bar: Boolean;
begin
  Result := FValue;
end;

constructor TFoo.Create;
begin
  inherited;

  FValue := Boolean(Random(1));
end;

function IsEqual(i1, i2: TFunc<Boolean>): Boolean;
begin
  Result := TEqualityComparer<TFunc<Boolean>>.Default().Equals(i1, i2);
end;

var
  s: string;
  foo: TFoo;
  Fkt1, Fkt2: TFunc<Boolean>;

begin
  try
    Foo := …
Run Code Online (Sandbox Code Playgroud)

delphi comparison delphi-2009

11
推荐指数
1
解决办法
2798
查看次数

任意浮点值如何与无穷大相比较?

基本上我想从一堆值中搜索最小(正)值,并需要一个默认值来与第一个值进行比较.天真的假设是,他们总是比较"小于"(除了NaNs,但我们不考虑那些),但我不太确定.

我正在使用该float类型,我认为可以安全地假设我的目标硬件实现了无穷大值.

这是一些示例代码:

auto leastValue = std::numeric_limits<float>::infinity();
for (auto i = something.begin(), e = something.end(); i != e; ++i)
{
  auto value = (*i)->GetValue();
  if (value < leastValue)
  {
    leastValue = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point c++11

6
推荐指数
1
解决办法
8266
查看次数

如何实现/设置数据断点?

要求:

当内存位置发生变化或被写入时,我需要生成一个中断.从ISR,我可以触发一个蓝屏,它给我一个很好的堆栈跟踪方法名称.

处理办法:

  • 测试计时器ISR中的值.显然,这并没有给人满意的结果.
  • 我发现了bochs虚拟机.它有一个基本的内置调试器,可以设置数据断点并停止程序.但我似乎无法在那时产生中断.
  • bochs允许一个人连接gdb.我无法使用gdb支持构建它.

其他想法:

  • 一种"预览指令"中断,在执行前触发每条指令.一组使用过的内存写入指令应该是非常容易管理的,但是我认为它仍然是一个提取地址的PITA.而且我认为没有这样的中断.
  • 一种"预览内存访问"中断.再说一遍,我不认为它在那里.
  • 滥用分页.将感兴趣的页面标记为不存在,并在页面错误处理程序中测试该地址.我们仍然需要区分读写操作,我认为,页面错误处理程序无法知道确切的地址,只知道页码.

memory x86 operating-system kernel interrupt

2
推荐指数
1
解决办法
702
查看次数