标签: aggpas

如何使用var前缀正确传递对象类型的参数?

综述:

type 
  MyObject = object
  end;

  MyRecord = record
  end;

  MyClass = class
  end;

  procedure ProcA(aMyObject: MyObject);
  procedure ProcB(var aMyObject: MyObject);
  procedure ProcC(aMyRecord: MyRecord);
  procedure ProcD(var aMyRecord: MyRecord);
  procedure ProcE(aMyClass: MyOClass);
  procedure ProcF(var aMyClass: MyClass);
Run Code Online (Sandbox Code Playgroud)
  1. MyObject并且MyRecord是值类型,而是MyClass引用类型.
  2. 值类型变量的赋值将复制变量; 赋值引用类型的变量将复制引用.
  3. 在参数ProcAProcC是原有的副本.
  4. 在参数ProcBProcD是原始的.
  5. 参数in ProcE是原始参考的副本.
  6. 参数ProcF是原始参考.
  7. 关于如何包装Agg2D对象(在单位agg_2D.pas中声明)来绘制,请参阅下面的David的答案.

===========================================
我正在学习使用AggPas这是一个纯粹的pascal矢量图形绘制API.具体来说,使用包含Agg2D对象的单元agg_2D.pas而不是包含TAgg2D类的单元Agg2D.pas.在Agg2D.pas单元上选择单元agg_2D.pas的原因是为了跨平台能力.

但是,我无法使用var前缀正确传递Agg2D对象类型的参数.如下面的代码所示,我想将TForm1创建的Agg2D对象传递给另一个实际负责绘制形状的类.但是,它不起作用.你能帮忙评论可能的原因吗?看来我一定错过了有关对象类型的重要概念.任何建议表示赞赏!您可以新建一个VCL应用程序,附加FormCreate处理程序,并逐行注释掉绘图代码以查看效果.

    unit Unit1;

    interface

    uses
      agg_2D,
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;

    type
      TRenderEngine_BMP = …
Run Code Online (Sandbox Code Playgroud)

delphi arguments var object aggpas

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

标签 统计

aggpas ×1

arguments ×1

delphi ×1

object ×1

var ×1