//1019unit System; 中发现记录体函数命名怪异
//乍一看,很怪异,其实是结构体里面 的变量后面直接写 函数类型了。不像传统先定义
T***Event      = procedure(Sender: TObject;LbName : string)of object;
再使用 VarClear := T***Event;
PVariantManager = ^TVariantManager;
TVariantManager = record
VarClear: procedure(var V : Variant);
VarCopy: procedure(var Dest: Variant; const Source: Variant);
VarCopyNoInd: procedure; // ARGS PLEASE!
VarCast: procedure(var Dest: Variant; const Source: Variant; VarType: Integer);
VarCastOle: procedure(var Dest: Variant; const Source: Variant; VarType: Integer); VarToInt: function(const V: Variant): Integer;
VarToInt64: function(const V: Variant): Int64;
VarToBool: function(const V: Variant): Boolean;
VarToReal: function(const V: Variant): Extended;
VarToCurr: function(const V: Variant): Currency;
VarToPStr: procedure(var S; const V: Variant);
VarToLStr: procedure(var S: string; const V: Variant);
VarToWStr: procedure(var S: WideString; const V: Variant);
VarToIntf: procedure(var Unknown: IInterface; const V: Variant);
VarToDisp: procedure(var Dispatch: IDispatch; const V: Variant);
VarToDynArray: procedure(var DynArray: Pointer; const V: Variant; TypeInfo: Pointer); VarFromInt: procedure(var V: Variant; const Value: Integer; const Range: ShortInt);
VarFromInt64: procedure(var V: Variant; const Value: Int64);
VarFromBool: procedure(var V: Variant; const Value: Boolean);
VarFromReal: procedure; // var V: Variant; const Value: Real
VarFromTDateTime: procedure; // var V: Variant; const Value: TDateTime
VarFromCurr: procedure; // var V: Variant; const Value: Currency
VarFromPStr: procedure(var V: Variant; const Value: ShortString);
VarFromLStr: procedure(var V: Variant; const Value: string);
VarFromWStr: procedure(var V: Variant; const Value: WideString);
VarFromIntf: procedure(var V: Variant; const Value: IInterface);
VarFromDisp: procedure(var V: Variant; const Value: IDispatch);
VarFromDynArray: procedure(var V: Variant; const DynArray: Pointer; TypeInfo: Pointer);
OleVarFromPStr: procedure(var V: OleVariant; const Value: ShortString);
OleVarFromLStr: procedure(var V: OleVariant; const Value: string);
OleVarFromVar: procedure(var V: OleVariant; const Value: Variant);
OleVarFromInt: procedure(var V: OleVariant; const Value: Integer; const Range: ShortInt);
OleVarFromInt64: procedure(var V: OleVariant; const Value: Int64); VarOp: procedure(var Left: Variant; const Right: Variant; OpCode: TVarOp);
VarCmp: procedure(const Left, Right: TVarData; const OpCode: TVarOp); { result is set in the flags }
VarNeg: procedure(var V: Variant);
VarNot: procedure(var V: Variant); DispInvoke: procedure(Dest: PVarData; const Source: TVarData;
CallDesc: PCallDesc; Params: Pointer); cdecl;
VarAddRef: procedure(var V: Variant); VarArrayRedim: procedure(var A : Variant; HighBound: Integer);
VarArrayGet: function(var A: Variant; IndexCount: Integer;
Indices: Integer): Variant; cdecl;
VarArrayPut: procedure(var A: Variant; const Value: Variant;
IndexCount: Integer; Indices: Integer); cdecl; WriteVariant: function(var T: Text; const V: Variant; Width: Integer): Pointer;
Write0Variant: function(var T: Text; const V: Variant): Pointer;
end deprecated;
//--------
PUnwinder = ^TUnwinder;
TUnwinder = record
RaiseException: function(Exc: Pointer): LongBool; cdecl;
RegisterIPLookup: function(fn: Pointer; StartAddr, EndAddr: LongInt; Context: Pointer; GOT: LongInt): LongBool; cdecl;
UnregisterIPLookup: procedure(StartAddr: LongInt) cdecl;
DelphiLookup: function(Addr: LongInt; Context: Pointer): Pointer; cdecl;
ClosestHandler: function(Context: Pointer): LongWord; cdecl;
end; //----------
{$IFDEF DEBUG}
{
This variable is just for debugging the exception handling system. See
_DbgExcNotify for the usage.
}
var
ExcNotificationProc : procedure(NotificationKind: Integer;
ExceptionObject: Pointer;
ExceptionName: PShortString;
ExceptionLocation: Pointer;
HandlerAddr: Pointer) = nil; //还可以赋值为nil
{$ENDIF DEBUG} TVariantManager怎么使作啊
这个类型怎么使用,给个例子 ------解决方案--------------------
这个类用户通常不直接使用,当你使用Variant变量的时候,编译器就会根据这个类来调用相应的处理

System中记录体函数命名怪异的更多相关文章

  1. Delphi中记录体做为属性的赋值方法

    1. 起源 此问题源于[秋风人事档案管理系统]用Delphi XE重编译中所发现. 快十年了,当初Delphi 7所编写项目,想用Delphi XE重新编译,并打算做为Free软件发布,编译错误中发现 ...

  2. numpy函数库中一些常用函数的记录

    ##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...

  3. C# 中 System.Range 结构体

    翻译自 John Demetriou 2020年4月6日 的文章 <C# 8 Is Introducing Ranges> 我们之前讨论过的 C# 中的一个特性 System.Index ...

  4. Spark记录-Scala函数与闭包

    函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...

  5. LoadRunner中的Web 函数列表

    LoadRunner中的Web 函数列表 web test LoadRunner fuction_list D:\Program Files (x86)\Mercury Interactive\Mer ...

  6. (一)一个工作任务引起的乱战——c#中结构体与byte[]间相互转换

    一个工作任务涉及到c#与c++系统间的udp通信,处理了蛮长时间没有完成任务,但是期间接触到不少小知识点.本人是初接触c#,c++语言没有接触过.可能写的东西都很小儿科,暂且记录下来当工作日记把. 先 ...

  7. python中数据分析常用函数整理

    一. apply函数 作用:对 DataFrame 的某行/列应用函数之后,Apply 返回一些值.函数既可以使用默认的,也可以自定义.注意:在第二个输出中应用 head() 函数,因为它包含了很多行 ...

  8. 【VS开发】MFC中调用C函数模块的解决方案

    [VS开发]MFC中调用C函数模块的解决方案 标签(空格分隔): [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:最近调试基于MFC的程序 ...

  9. asp.net core 3.1 入口:Program.cs中的Main函数

    本文分析Program.cs 中Main()函数中代码的运行顺序分析asp.net core程序的启动,重点不是剖析源码,而是理清程序开始时执行的顺序.到底用了哪些实例,哪些法方. asp.net c ...

随机推荐

  1. struts1和struts2的区别

    1. 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Acti ...

  2. mysql SQL优化之嵌套查询-遁地龙卷风

    (-1) 写在前面 这篇随笔的数据使用的是http://blog.csdn.net/friendan/article/details/8072668#comments里的,里面有一些常见的select ...

  3. height:100%与height:inherit的区别

    一.兼容性 首先,inherit这个属性只是在ie8+才支持:100%支持ie6: 二.大多数情况下没有区别 在正常情况下height:100%与height:inherit没有任何区别: 1.父元素 ...

  4. Java关于IO流的介绍

    JDK提供的流继承了四大类:InputStream(字节输入流).OutputStream(字节输出流).Reader(字符输入流).Writer(字符输出流). 字符流和字节流的主要区别:     ...

  5. 更新Xcode后插件失效问题

    Xcode更新后插件会失效,这个时候需要给插件的Info.plist文件添加新Xcode的UUID 一.首先找到更新后的Xcode的DVTPlugInCompatibilityUUID: 打开路径: ...

  6. day5

    作业 作业需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期 ...

  7. windows server 2008 wamp安装报000F15A0解决方法

    wampserver2.2c-x64 原因:缺少Visual C++ 2008 Runtime x64,官网地址http://www.microsoft.com/zh-cn/download/deta ...

  8. js:使用js过程中遇到的一个小问题

    在一个作业中使用了js,函数A调用函数B.当A和B中均含有变量i的时候,相关操作结果可能会出错. 将B中的i替换为j(j不存在于A中)后,结果正确. 目前考虑原因是两个变量i有相关性(或者说实际上就是 ...

  9. 【webGl】threejs实现一个简单的动画-弹跳的小球

    在这里,我们将动态画面简称为动画(animation).正如动画片的原理一样,动画的本质是利用了人眼的视觉暂留特性,快速地变换画面,从而产生物体在运动的假象.而对于Three.js程序而言,动画的实现 ...

  10. MongoDB学习笔记

    MongoDB的学习目标(v.3.4.0) 1.MongoDB的概念,非关系型数据库NOSQL 2.学会MongoDB的搭建 3.熟悉MongoDB使用 最基本的文档的读写更新删除 各种不同类型的索引 ...