小编san*_*206的帖子

OmniThreadLibrary 的正确安装

我想在我正在使用 Delphi XE2 的项目中使用 OmniThreadLibrary,我已按照说明进行操作。

  • 将 OTL 文件夹和 OTL/src 添加到 Delphi 的库路径。
  • 在 Delphi XE2 包中构建两个项目并安装。

说明非常简单,OmniEventMonitor 位于调色板中。

但是,我无法运行单个示例。

例如,当我尝试运行时:

procedure TForm2.Button1Click(Sender: TObject);
begin

  Button1.Enabled := false;

  Parallel.Async(
    procedure
    begin
      // executed in background thread
      Sleep(500);
      MessageBeep($FFFFFFFF);
    end,

    Parallel.TaskConfig.OnTerminated(
      procedure (const task: IOmniTaskControl)
      begin
      // executed in main thread
      btnAsync.Enabled := true;
    end
    )
  );
end;
Run Code Online (Sandbox Code Playgroud)

我收到错误Undeclared Identifier Parallel

我在安装过程中做错了什么吗?

delphi delphi-xe2 omnithreadlibrary

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

我可以使用assign来复制对象的对象吗?

我有一个从TPersistent继承3度的对象,我想使用Assign过程克隆它.

MyFirstObj := GrandSonOfPersistent.Create();
//I modify the objects inside MyFirstObj
MySecondObj := GrandSonOfPersistent.Create();
MySecondObj.Assign(MyFirstObject);
Run Code Online (Sandbox Code Playgroud)

我该怎么检查它有效?当对象有许多其他对象时它是否有效?

我正在尝试克隆一个对象,这是正确的方法吗?

delphi clone

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

Delphi 7中项目的奇怪行为

我正在将项目从Delphi 7迁移到Delphi XE2.

我仍然在努力,但当我在Delphi XE2中运行项目时,它停止在一个函数中,该函数从第三方组件调用一个单元.此单元未初始化,因此我预计会出现此错误.

但是,当我在Delphi 7中编译项目时,我得到了它应该像XE2一样破坏的部分,它正常工作.因此,当我尝试编译时,我继续在项目中检查此单元,并在IDE中打开该单元.它显示了这条消息.

Field FormPropiedadesElemento.SpinVector没有相应的组件.删除声明?

单击"否"后,项目运行但现在停止在与Delphi XE2项目相同的部分.

当我看到这个单元的代码时,这个问题只发生在Delphi 7中.

知道它可能是什么或如何解决它?

delphi delphi-7 delphi-xe2

0
推荐指数
1
解决办法
1804
查看次数

Delphi的DFM是否兼容不同版本?

我正在从D7迁移到XE2,并且IDE已经更改了一些DFM文件.

在某些文件中,更改只是一些简单的属性,如删除ItemHeight或添加ExplicitLeft = 0.

但是,在其他文件中,更改比删除整个object声明更大,我可以在将dfm文件与D7进行比较时检查.

当我在XE2中从D7添加DFM的缺失部分时,它会保存而不会出现错误:

未找到TGenReglas类.忽略错误并继续?

我已经检查过,TGenReglas在项目中,我甚至将其文件夹添加到项目路径中,以防万一.

保存并重新打开项目后,我的所有更改都不会保存.

我可以将DFM文件从D7复制到XE2中以解决这个问题或我应该怎么做?

delphi delphi-7 delphi-xe2

0
推荐指数
1
解决办法
224
查看次数

从Delphi中的不同线程更新TStringGrid

是否可以使用表的每列的线程更新TStringGrid?

我正在每个线程中进行一些计算,我想将它们添加到一个列中,到目前为止我有类似但有一个奇怪的错误.

在一个线程获得其列中当前行的结果后,它将调用此过程.

procedure TAnimator.Iteration(Sender: TObject);
begin
  TMyClass.AddData(TEngine(Sender).Data, TEngine(Sender).ID, TEngine(Sender).IterationsCount);
end;
Run Code Online (Sandbox Code Playgroud)

有时我得到一个表,其中包含正确添加的线程中的所有数据.但是,我可能会得到一个表,其中某些列中的第一个值未正确显示.

|| Col  1 || Col  2 || Col  3 || Col  4 ||
||    1   ||        ||        ||    4   ||
||    1   ||    2   ||        ||    4   ||
||    1   ||    2   ||    3   ||    4   ||
||    1   ||    2   ||    3   ||    4   ||
||    1   ||    2   ||    3   ||    4   || 
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

0
推荐指数
1
解决办法
611
查看次数