综述:
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)
MyObject并且MyRecord是值类型,而是MyClass引用类型.ProcA和ProcC是原有的副本. ProcB和ProcD是原始的. ProcE是原始参考的副本. ProcF是原始参考. ===========================================
我正在学习使用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)