C++ Builder 参考手册 ➙ System
- System 类/类型
• 基础类
• 基本数据类型
• 字符/字符串数据类型
• 日期/时间类型
• RTTI类型
• 接口类型
• 模块/内存管理
• 其他数据类型 - System 常数
• Variant 的类型 (TVarType TVarData::VType)
• Variant 类型的操作符类型 (TVarOp)
• TVarRec 的类型 (TVarRec::VType)
• TTypeKind 的某些枚举值的别名
• TTextRec::Mode 的值
• 虚函数表 (Virtual Method Table)
• Test8086 的值
• 浮点数异常处理
• 未分类常数 - System 变量
• 处理器相关的全局变量
• 异常处理相关的全局变量
• 处理 Variant 内部使用的函数指针
• 未分类的全局变量 - System 宏
- System 函数
• 资源相关的函数
• 内存管理相关的函数
• 错误及异常处理相关的函数
• 字符串处理函数
• 文件处理函数
• 动态数组相关的函数
• 浮点数处理及数学运算函数
• 未分类的函数
头文件:#include <System.hpp>
命名空间:System
VCL 和 FMX 项目都默认包含了这个头文件,可以直接使用里面的内容。
一. System 类/类型
1.1 基础类
| 类 | 说明 |
|---|---|
| TObject | 所有的 VCL 和 FMX 控件的顶级父类 |
| TAggregatedObject | 用于几个接口的组合,共用一个引用计数 |
| TContainedObject | 用于实现被包含的接口的父类 |
| TInterfacedObject | VCL/FMX 里面需要 IInterface 接口的一些类的公共父类 |
| TCppAggregatedObject | 实现了 IUnknown 的 TAggregatedObject |
| TCppInterfacedObject | 不使用 lambda 表达式实现 Delphi 匿名函数的接口 |
1.2 基本数据类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| Boolean | bool | false, true |
| ByteBool | unsigned char | 一个字节的布尔类型 |
| WordBool | unsigned short | 两个字节的布尔类型 |
| LongBool | int | 四个字节的布尔类型 |
| Shortint | signed char | -128 ~ 127 |
| ShortInt | signed char | -128 ~ 127 |
| Byte | unsigned char | 0 ~ 255 |
| Smallint | short | -32768 ~ 32767 |
| SmallInt | short | -32768 ~ 32767 |
| Word | unsigned short | 0 ~ 65535 |
| DWord | unsigned long | 0 ~ 4294967295 |
| Integer | int | -2147483648 ~ 2147483647 |
| Cardinal | unsigned int | 0 ~ 4294967295 |
| LongWord | unsigned long unsigned |
0 ~ 18446744073709551615 (IOS64/Android64) 0 ~ 4294967295 (其他系统) |
| Longint | long int |
-9223372036854775808 ~ 9223372036854775807 (IOS64/Android64) -2147483648 ~ 2147483647 (其他系统) |
| LongInt | long int |
-9223372036854775808 ~ 9223372036854775807 (IOS64/Android64) -2147483648 ~ 2147483647 (其他系统) |
| Int8 | signed char | -128 ~ 127 |
| UInt8 | unsigned char | 0 ~ 255 |
| Int16 | short | -32768 ~ 32767 |
| UInt16 | unsigned short | 0 ~ 65535 |
| Int32 | int | -2147483648 ~ 2147483647 |
| UInt32 | unsigned int | 0 ~ 4294967295 |
| IntPtr | std::intptr_t | 整数,32位系统32位,64位系统64位 |
| UIntPtr | std::uintptr_t | 无符号整数,32位系统32位,64位系统64位 |
| NativeInt | std::intptr_t | 整数,32位系统32位,64位系统64位 |
| NativeUInt | std::uintptr_t | 无符号整数,32位系统32位,64位系统64位 |
| Single | float | 单精度浮点数 (32位) |
| Double | double | 双精度浮点数 (64位) |
| Extended | long double | 长双精度浮点数 (64位/80位) Win32是80位,Win64是64位 (变少了) |
| Pointer | void * | 指针 |
| PPointer | Pointer * | 指向指针的指针 |
| PointerArray | void * | 指针 |
| PPointerArray | PointerArray * | PointerArray 指针 |
| PSingle | float * | 单精度浮点数指针 |
| PDouble | double * | 双精度浮点数指针 |
| PExtended | long double * | 长双精度浮点数指针 |
| PBoolean | bool * | 布尔指针 |
| PWordBool | WordBool * | WordBool 指针 |
| PByte | unsigned char * | 字节指针 |
| PSmallInt | short * | 十六位整数指针 |
| PWord | unsigned short * | Word 指针 |
| PInteger | int * | 整数指针 |
| IntegerArray | int * | 整数指针 |
| PIntegerArray | IntegerArray * | IntegerArray 指针 |
| PCardinal | unsigned int * | Cardinal 指针 |
| PError | unsigned int * | 用于处理 Variant 出错信息的无符号整数指针 |
| PLongBool | LongBool * | LongBool 指针 |
| PLongWord | LongWord * | LongWord 指针 |
| PLongInt | LongInt * | LongInt 指针 |
| PLongint | Longint * | Longint 指针 |
| PInt64 | __int64 * | 64位整数指针 |
| PUInt64 | unsigned __int64 * | UInt64 指针 |
| Int64Array | __int64 * | 64位整数指针 |
| PInt64Array | Int64Array * | Int64Array 指针 |
| PNativeInt | NativeInt * | NativeInt 指针 |
| PNativeUInt | NativeUInt * | NativeUInt 指针 |
| PFixedInt | int * | int 指针 |
| PFixedUInt | unsigned * | unsigned int 指针 |
1.3 字符/字符串数据类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| AnsiChar | char | 组成 ANSI 编码的1个字节的字符 |
| UTF8Char | char | 组成 UTF-8 编码的1个字节的字符 |
| WideChar | char16_t wchar_t |
组成 UTF-16 编码的2个字节的字符 Windows 系统里面是 wchar_t 其他系统是 char16_t |
| UCS2Char | WideChar | 组成 UTF-16 编码的2个字节的字符 |
| UCS4Char | unsigned int | 组成 UTF-32 编码的4个字节的字符 (0 ~ 4294967295) (没有定义成 char32_t,只用作编码转换) |
| Char | WideChar AnsiChar |
UNICODE 版本相当于 WideChar ANSI 版本相当于 AnsiChar |
| _DCHAR | WideChar AnsiChar |
UNICODE 版本相当于 WideChar ANSI 版本相当于 AnsiChar |
| PChar | char16_t * / wchar_t * char * |
UNICODE 版本是 UTF-16 字符指针 ANSI 版本是 ANSI 字符指针 |
| PPChar | PChar * | 指向字符指针的指针 |
| TPCharArray | PChar | Char 指针 |
| PPCharArray | TPCharArray * | TPCharArray 指针 |
| PAnsiChar | char * | ANSI 字符指针 |
| PPAnsiChar | char * * | ANSI 字符指针的指针 |
| PUTF8Char | char * | UTF-8 字符指针 |
| PWideChar | char16_t * / wchar_t * | UTF-16 字符指针 |
| PPWideChar | WideChar * * | UTF-16 字符指针的指针 |
| PUCS2Char | WideChar * | UTF-32 字符指针 |
| PUCS4Char | UCS4Char * | UTF-32 字符指针,相当于 unsigned int * (没有定义成 char32_t *,只用作编码转换) |
| TUCS4CharArray | UCS4Char * | UCS4Char 指针 |
| PUCS4CharArray | TUCS4CharArray * | TUCS4CharArray 指针 |
| UCS4String | DynamicArray<UCS4Char> | 32位整数动态数组,用于 UTF-32 编码转换 |
| _PPAnsiChar | char ** | (仅 Android 系统) |
| Openstring | char* const | 指向字符的常数指针 |
| String | UnicodeString | UTF-16 编码的字符串 |
| AnsiStringBase | 所有以 char 编码的字符串的顶级父类 | |
| AnsiStringT | 参数为代码页的以 char 编码的字符串类模板 | |
| AnsiString | 代码页为 0,即本地 ANSI 编码的字符串 | |
| RawByteString | 代码页为 65535,即不解析编码的字符串 | |
| PRawByteString | RawByteString * | RawByteString 指针 |
| UTF8String | 代码页为 65001,即 UTF-8 编码的字符串 | |
| PUTF8String | UTF8String * | UTF8String 指针 |
| UnicodeString | UTF-16 编码的字符串 | |
| WideString | 封装 Windows BSTR 类型的字符串 | |
| SmallStringBase | 最多255个字符的字符串类模板顶级父类, 只有一个保存长度的整数和一个字符数组成员 |
|
| SmallString | 最多255个字符的字符串类模板, 从 SmallStringBase 继承,实现一些简单的字符串操作 |
|
| ShortStringBase | SmallStringBase<255> | 最多 255 个字符的字符串 |
| ShortString | SmallString<255> | 最多 255 个字符的字符串 |
| PShortString | ShortString * | ShortString 指针 |
| PAnsiString | AnsiString * | AnsiString 指针 |
| PUnicodeString | UnicodeString * | UnicodeString 指针 |
| PString | String * | String 指针 |
| PWideString | WideString * | WideString 指针 |
1.4 日期/时间类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| TDateTimeBase | 日期时间类型的父类 | |
| TDateTime | 日期时间类型 | |
| TDate | TDateTime | 日期类型 |
| TTime | TDateTime | 时间类型 |
| PDate | double * | 用于表示日期时间的双精度浮点数指针 |
| PDateTime | TDateTime * | 日期时间类型指针 |
1.5 RTTI类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| DelphiMetaClass | 用于使用 TMetaClass 定义类型 | |
| System__1 | 用于定义 TVisibilityClasses 类型 | |
| TCustomAttribute | 用于 RTTI 的属性成员 | |
| TClass | TMetaClass * | TMetaClass 指针 |
| TInterfacedClass | TMetaClass * | TInterfacedObject 的 RTTI 类信息 |
| TMetaClass | 用于定义支持 RTTI 的类型 | |
| TVisibilityClasses | 成员的访问权限,用于 RTTI 枚举类的成员 |
1.6 接口类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| __dispinterface | class | 用于接口定义,相当于 class |
| __interface | struct | 用于接口定义,相当于 struct |
| __safecall | __stdcall | 兼容 Delphi 的 safecall |
| _di_IComparable | IComparable 智能接口指针类型 | |
| _di_IComparable__1 | IComparable__1 智能接口指针类型 | |
| _di_IDispatch | IDispatch 智能接口指针类型 | |
| _di_IEnumerable | IEnumerable 智能接口指针类型 | |
| _di_IEnumerable__1 | IEnumerable__1 智能接口指针类型 | |
| _di_IEnumerator | IEnumerator 智能接口指针 | |
| _di_IEnumerator__1 | IEnumerator__1 智能接口指针 | |
| _di_IEquatable__1 | IEquatable__1 智能接口指针 | |
| _di_IInterface | System::IInterface 智能接口指针类型 | |
| _di_IUnknown | IUnknown 智能接口指针类型 | |
| DelphiInterface | Delphi 匿名函数 / lambda 表达式接口 | |
| IComparable | 用于比较大小的接口类型 | |
| IComparable__1 | 用于比较大小的接口类型,有 1 个模板参数 | |
| IEnumerable | 用于枚举信息的接口 | |
| IEnumerable__1 | 用于枚举信息的接口,有 1 个模板参数 | |
| IEnumerator | 继承 IInterface 的子类,用于枚举容器里面的内容,通过容器的 GetEnumerator 方法获取 | |
| IEnumerator__1 | 继承 IEnumerator 的模板,通过模板参数指定枚举内容的类型 | |
| IEquatable__1 | 用户检测两个对象相等的接口类型 | |
| IInterface | 增加了获取智能接口的 IUnknown | |
| IInvokable | 支持 RTTI 的接口的父类接口 | |
| PInterfaceEntry | TInterfaceEntry * | TInterfaceEntry 指针 |
| PInterfaceTable | TInterfaceTable * | TInterfaceTable 指针 |
| PUnknown | _di_IInterface * | _di_IInterface 指针 |
| PPUnknown | PUnknown * | PUnknown 指针 |
| TInterfaceEntry | 用于保存分配接口调用所需的信息 | |
| TInterfaceTable | TInterfaceEntry 数组 |
1.7 模块/内存管理
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| GetPackageInfoTable | PackageInfo __fastcall (*)(void) |
返回 PackageInfo 的无参数的函数指针 |
| PackageInfo | PackageInfoTable * | PackageInfoTable 指针 |
| PackageInfoTable | 组件包单元初始化和结束时使用的信息类型 | |
| PackageUnitEntry | 组件包单元初始化和结束时使用的信息类型 | |
| PLibModule | TLibModule 指针 | |
| PMemoryManager | TMemoryManager 指针 | |
| PMemoryManagerEx | TMemoryManagerEx 指针 | |
| PModuleUnloadRec | TModuleUnloadRec * | TModuleUnloadRec 指针 |
| PPackageTypeInfo | TPackageTypeInfo * | TPackageTypeInfo 指针 |
| PTypeTable | TTypeTable * | TTypeTable 指针 |
| PUnitEntryTable | UnitEntryTable 指针,PackageUnitEntry 数组指针 | |
| TChunkStatus | 内存块的状态 | |
| TEnumModuleFunc | EnumModules 和 EnumResourceModules 的回调函数类型 | |
| TEnumModuleFuncLW | EnumModules 和 EnumResourceModules 的回调函数类型 | |
| THeapStatus | 全局堆状态 | |
| TLibModule | 模块链表节点 | |
| TMemoryManager | 内存管理 (过时的,需要用 TMemoryManagerEx 代替) | |
| TMemoryManagerEx | 内存管理 | |
| TMemoryManagerState | 内存分配状态信息 | |
| TMemoryMap | TChunkStatus 数组,内存块状态数组 | |
| TMinimumBlockAlignment | 内存块对其方式 (8字节/16字节) | |
| TModuleUnloadProc | AddModuleUnloadProc 和 RemoveModuleUnloadProc 的回调函数类型 | |
| TModuleUnloadProcLW | AddModuleUnloadProc 和 RemoveModuleUnloadProc 的回调函数类型 | |
| TModuleUnloadRec | 模块卸载时执行的函数链表节点 | |
| TPackageTypeInfo | 用于 PackageInfoTable 使用的类型 | |
| TSmallBlockTypeState | 小块内存分配状态信息 | |
| TSmallBlockTypeStates | TSmallBlockTypeState 数组 | |
| TTypeTable | TPackageTypeInfo 内部使用的类型 | |
| UnitEntryTable | PackageUnitEntry 数组 |
1.8 其他数据类型
| 类型 | 对应的 C++ 类型 | 说明 |
|---|---|---|
| AliasT | 用于强类型的定义,不允许默认的类型转换 | |
| Comp | 用于按字节解析 double 类型浮点数 | |
| CompBase | Comp 类型的父类,只有一个 char[8] 数组数据成员 | |
| Currency | 货币型变量,用64位整数精确的保存有4位小数的数值 -922337203685477.5808 ~ 922337203685477.5807 |
|
| CurrencyBase | Currency 类型的父类,只有一个 __int64 类型整数成员 | |
| DynamicArray | 可变元素个数的数组 | |
| file | C++ 兼容 delphi 内置的 file 类型 | |
| HResult | HRESULT | 调用接口的返回值,32位整数,相当于 long, 0表示成功,不等于0表示错误编码 |
| OleVariant | OLE 兼容的 Variant 类型 | |
| PComp | Comp * | Comp 指针 |
| PCallDesc | TCallDesc * | TCallDesc 指针,Variant 类型的成员函数调用的类型和参数 |
| PCurrency | Currency * | 货币型指针 |
| PCVModInfo | TCVModInfo * | Windows 版本编译器内部使用的类型 |
| PDispDesc | TDispDesc * | TDispDesc 指针,IDispatch 函数调用的类型和参数 |
| PDoubleRec | TDoubleRec * | TDoubleRec 指针 |
| PExceptionRecord | TExceptionRecord * | TExceptionRecord 指针,结构化异常处理 (SEH) 保存的异常信息 |
| PExtended80Rec | TExtended80Rec * | TExtended80Rec 指针 |
| PExtendedRec | PExtended80Rec 指针 或 PDoubleRec 指针 | |
| PGUID | TGUID * | 全局唯一标识符 (globally unique identifier) 指针 |
| PInitContext | TInitContext * | TInitContext 指针 |
| PMethod | TMethod * | TMethod 指针 |
| PMonitor | TMonitor * | TMonitor 指针 |
| PMonitorSupport | TMonitorSupport * | TMonitor 内部使用的结构指针 |
| POleVariant | OleVariant * | OleVariant 指针 |
| PPMonitor | PMonitor * | TMonitor 指针的指针 |
| PResStringRec | TResStringRec 指针 | |
| PSingleRec | TSingleRec * | TSingleRec 指针 |
| PTextBuf | TTextBuf * | TTextBuf 指针 |
| PVarArray | TVarArray * | TVarArray 指针,用于 TVarData 内部处理数组 |
| PVarArrayBound | TVarArrayBound * | TVarArrayBound 指针 |
| PVarArrayBoundArray | TVarArrayBoundArray * | TVarArrayBoundArray 指针 |
| PVarArrayCoorArray | TVarArrayCoorArray * | TVarArrayCoorArray 指针 |
| PVarData | TVarData * | TVarData 指针 |
| PVariant | Variant * | Variant 指针 |
| PVariantManager | TVariantManager * | TVariantManager 指针 |
| PVarRec | TVarRec * | TVarRec 指针 |
| PVarRecord | TVarRecord * | TVarRecord 指针,用于处理 VT_RECORD 类型的 Variant 数据 |
| Set | 集合类型 | |
| SetBase | 集合类型的父类 | |
| StaticArray | 固定元素个数的数组 | |
| TArray__1 | DynamicArray <T> |
动态数组模板类型 |
| TAssertErrorProc | Delphi 的 Assert 回调函数类型 | |
| TBoundArray | DynamicArray <NativeInt> |
NativeInt 动态数组 |
| TCallDesc | Variant 类型的成员函数调用的类型和参数 | |
| TCPUIDRec | 用于保存 CPUID 指令的返回值 | |
| TCVModInfo | Windows 版本的编译器内部使用的结构 | |
| TDispDesc | IDispatch 函数调用的类型和参数 | |
| TDispatchMessage | 消息处理用于获取消息ID | |
| TDLLProc | 编译器内部使用的函数指针类型,dll 入口函数的回调函数 | |
| TDLLProcEx | 编译器内部使用的函数指针类型,dll 入口函数的回调函数 | |
| TDoubleRec | 用于解析 64 位 IEEE 浮点数 | |
| TExceptClsProc | 处理异常的类名时使用的回调函数指针类型 | |
| TExceptionRecord | 结构化异常处理 (SEH) 保存的异常信息 | |
| TExceptObjProc | 处理异常的对象时使用的回调函数指针类型 | |
| TExtended80Rec | 用于解析 80 位 IEEE 浮点数 | |
| TExtendedRec | TExtended80Rec 或 TDoubleRec | |
| TextFile | C++ 兼容 delphi 内置的 text 类型 | |
| TFileIOFunc | 文件处理内部使用的函数指针类型 | |
| TFileRec | 用于文件处理内部保存文件数据信息 | |
| TFloatSpecial | TSingleRec 和 TDoubleRec 等解析出来的浮点数特殊值或状态 | |
| TGUID | GUID | 全局唯一标识符 (globally unique identifier) |
| TInitContext | 调用组件包和异常处理等内部使用的结构 | |
| TLargestVarData | 内部使用的结构体 (在 struct/union 里面占位置) | |
| TMethod | 用于解析 __closure 指针 | |
| TMonitor | 多个线程访问同一个资源的锁 | |
| TMonitorSupport | TMonitor 内部使用的结构 | |
| TPtrWrapper | 用于内存管理的指针类型 | |
| TRaiseExceptionProc | VCL/FMX 抛出异常的回调函数类型 | |
| TRaiseExceptObjProc | 处理异常的对象时使用的回调函数指针类型 | |
| TResourceHandle | NativeUInt | 资源句柄 HRSRC |
| TResStringRec | 字符串资源 | |
| TSafeCallErrorProc | SafeCallException 的回调函数类型 | |
| TSingleRec | 用于解析 32 位 IEEE 浮点数 | |
| TSystemThreadFuncProc | 系统线程启动时的回调函数类型 | |
| TSystemThreadEndProc | 系统线程结束时的回调函数类型 | |
| TTextBuf | StaticArray<char, 128> | TTextRec 内部使用的类型 |
| TTextIOFunc | 文本处理内部使用的函数指针类型 | |
| TTextLineBreakStyle | 文本换行的类型 (\n 或 \r\n) | |
| TTextRec | 用于库函数内部处理文本文件 | |
| TThreadFunc | BeginThread 启动的线程函数指针类型 | |
| TThreadID | unsigned | 线程的标识 |
| TTypeKind | 用于表示 Delphi 支持的类型 | |
| TVarArray | 用于 TVarData 内部处理数组 | |
| TVarArrayBound | 用户 TVarArray 内部储存数组元素起始下标和个数 | |
| TVarArrayBoundArray | StaticArray <TVarArrayBound, 1> |
TVarArrayBound 数组 |
| TVarArrayCoorArray | StaticArray<int, 1> | 存储元素位置的数组 |
| TVarData | Variant 类型的父类,用于储存 Variant 类型的数据结构 | |
| TVariantManager | 包含一些 Variant 类型变量处理的函数 | |
| TVarOp | int | Variant 类型的操作符类型 |
| TVarRec | 用于函数的参数,不同类型的数据组成的数组 | |
| TVarRecord | 用于处理 VT_RECORD 类型的 Variant 数据 | |
| TVarType | unsigned short | 可变类型 Variant 的类型 |
| Variant | 用于 COM (Component Object Model 组件对象模型) 的可变类型 |
二. System 常数
2.1. Variant 的类型 (TVarType TVarData::VType)
| 常数 | 类型 | 数值 | OLE 对应类型 |
|---|---|---|---|
| varEmpty | System::Int8 | 0x0 | VT_EMPTY |
| varNull | System::Int8 | 0x1 | VT_NULL |
| varSmallint | System::Int8 | 0x2 | VT_I2 |
| varInteger | System::Int8 | 0x3 | VT_I4 |
| varSingle | System::Int8 | 0x4 | VT_R4 |
| varDouble | System::Int8 | 0x5 | VT_R8 |
| varCurrency | System::Int8 | 0x6 | VT_CY |
| varDate | System::Int8 | 0x7 | VT_DATE |
| varOleStr | System::Int8 | 0x8 | VT_BSTR |
| varDispatch | System::Int8 | 0x9 | VT_DISPATCH |
| varError | System::Int8 | 0xa | VT_ERROR |
| varBoolean | System::Int8 | 0xb | VT_BOOL |
| varVariant | System::Int8 | 0xc | VT_VARIANT |
| varUnknown | System::Int8 | 0xd | VT_UNKNOWN |
| varShortInt | System::Int8 | 0x10 | VT_I1 |
| varByte | System::Int8 | 0x11 | VT_UI1 |
| varWord | System::Int8 | 0x12 | VT_UI2 |
| varLongWord | System::Int8 | 0x13 | 过时,请用 varUInt32 |
| varUInt32 | System::Int8 | 0x13 | VT_UI4 |
| varInt64 | System::Int8 | 0x14 | VT_I8 |
| varUInt64 | System::Int8 | 0x15 | VT_UI8 |
| varRecord | System::Int8 | 0x24 | VT_RECORD |
| varStrArg | System::Int8 | 0x48 | VT_CLSID |
| varObject | System::Int8 | 0x49 | VT_VERSIONED_STREAM |
| varUStrArg | System::Int8 | 0x4a | 没找到 OLE 对应类型 |
| varString | System::Word | 0x100 | Delphi 字符串,不是 OLE 兼容类型 |
| varAny | System::Word | 0x101 | CORBA any 类型,不是 OLE 兼容类型 |
| varUString | System::Word | 0x102 | UNICODE 字符串,不是 OLE 兼容类型 |
| varTypeMask | System::Word | 0xfff | VT_TYPEMASK |
| varArray | System::Word | 0x2000 | VT_ARRAY |
| varByRef | System::Word | 0x4000 | VT_BYREF |
2.2. Variant 类型的操作符类型 (TVarOp)
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| System::Int8 | opAdd | 0x0 | 加 |
| System::Int8 | opSubtract | 0x1 | 减 |
| System::Int8 | opMultiply | 0x2 | 乘 |
| System::Int8 | opDivide | 0x3 | 除 |
| System::Int8 | opIntDivide | 0x4 | 整除 |
| System::Int8 | opModulus | 0x5 | 余数 |
| System::Int8 | opShiftLeft | 0x6 | 左移 |
| System::Int8 | opShiftRight | 0x7 | 右移 |
| System::Int8 | opAnd | 0x8 | 与 |
| System::Int8 | opOr | 0x9 | 或 |
| System::Int8 | opXor | 0xa | 异或 |
| System::Int8 | opCompare | 0xb | 比较大小 System::Variants::TVarCompareResult |
| System::Int8 | opNegate | 0xc | 符号取反 |
| System::Int8 | opNot | 0xd | 逻辑取反 |
| System::Int8 | opCmpEQ | 0xe | 相等 |
| System::Int8 | opCmpNE | 0xf | 不等 |
| System::Int8 | opCmpLT | 0x10 | 小于 |
| System::Int8 | opCmpLE | 0x11 | 小于等于 |
| System::Int8 | opCmpGT | 0x12 | 大于 |
| System::Int8 | opCmpGE | 0x13 | 大于等于 |
2.3. TVarRec 的类型 (TVarRec::VType)
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| vtInteger | System::Int8 | 0x0 | |
| vtBoolean | System::Int8 | 0x1 | |
| vtChar | System::Int8 | 0x2 | |
| vtExtended | System::Int8 | 0x3 | |
| vtString | System::Int8 | 0x4 | 过时的类型 |
| vtPointer | System::Int8 | 0x5 | |
| vtPChar | System::Int8 | 0x6 | |
| vtObject | System::Int8 | 0x7 | |
| vtClass | System::Int8 | 0x8 | |
| vtWideChar | System::Int8 | 0x9 | |
| vtPWideChar | System::Int8 | 0xa | |
| vtAnsiString | System::Int8 | 0xb | |
| vtCurrency | System::Int8 | 0xc | |
| vtVariant | System::Int8 | 0xd | |
| vtInterface | System::Int8 | 0xe | |
| vtWideString | System::Int8 | 0xf | |
| vtInt64 | System::Int8 | 0x10 | |
| vtUnicodeString | System::Int8 | 0x11 |
2.4. TTypeKind 的某些枚举值的别名
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| tkAnsiChar | TTypeKind | tkChar | |
| tkWideChar | TTypeKind | tkWChar | |
| tkUnicodeString | TTypeKind | tkUString | |
| tkAnsiString | TTypeKind | tkLString | |
| tkWideString | TTypeKind | tkWString | |
| tkShortString | TTypeKind | tkString |
2.5. TTextRec::Mode 的值
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| fmClosed | Word | 0xd7b0 | |
| fmInput | Word | 0xd7b1 | |
| fmOutput | Word | 0xd7b2 | |
| fmInOut | Word | 0xd7b3 |
2.6. 虚函数表 (Virtual Method Table)
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| CPP_ABI_ADJUST | System::Int8 | 0x0/0x18 | 用于在不同编译环境使用不同的偏移量值 |
| vmtArcOffset | System::Int8 | 0x0 | 用于在不同编译环境使用不同的偏移量值 |
| vmtSelfPtr | Int8/short | -88/-200 | |
| vmtIntfTable | Int8/short | -84/-192 | |
| vmtAutoTable | Int8/short | -80/-184 | |
| vmtInitTable | Int8/short | -76/-176 | |
| vmtTypeInfo | Int8/short | -72/-168 | |
| vmtFieldTable | Int8/short | -68/-160 | |
| vmtMethodTable | Int8/short | -64/-152 | |
| vmtDynamicTable | Int8/short | -60/-144 | |
| vmtClassName | Int8/short | -56/-136 | |
| vmtInstanceSize | System::Int8 | -52/-128 | |
| vmtParent | System::Int8 | -48/-120 | |
| vmtEquals | System::Int8 | -44/-112 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtGetHashCode | System::Int8 | -40/-104 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtToString | System::Int8 | -36/-96 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtSafeCallException | System::Int8 | -32/-88 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtAfterConstruction | System::Int8 | -28/-80 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtBeforeDestruction | System::Int8 | -24/-72 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtDispatch | System::Int8 | -20/-64 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtDefaultHandler | System::Int8 | -16/-56 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtNewInstance | System::Int8 | -12/-48 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtFreeInstance | System::Int8 | -8 /-40 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtDestroy | System::Int8 | -4 /-32 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtQueryInterface | System::Int8 | 0x0 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtAddRef | System::Int8 | 0x4/0x8 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtRelease | System::Int8 | 0x8/0x10 | 过时,在汇编代码里面需要使用 VMTOFFSET |
| vmtCreateObject | System::Int8 | 0xc/0x18 | 过时,在汇编代码里面需要使用 VMTOFFSET |
2.7. Test8086 的值
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| CPUi386 | System::Int8 | 0x2 | 测试发现 Windows 系统里面 Test8086 始终等于 2 |
| CPUi486 | System::Int8 | 0x3 | Windows 之外其他操作系统可能的值 |
| CPUPentium | System::Int8 | 0x4 | Windows 之外其他操作系统可能的值 |
2.8. 浮点数异常处理
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| feeINVALID | System::Int8 | 0x1 | 不合理的运算 (例如 0.0/0.0) |
| feeDENORMALOPERAND | System::Int8 | 0x2 | 次正常,接近向下溢出时丢失精度 |
| feeDIVBYZERO | System::Int8 | 0x4 | 被零除 (例如 1.0/0.0) |
| feeOVERFLOW | System::Int8 | 0x8 | 向上溢出 |
| feeUNDERFLOW | System::Int8 | 0x10 | 向下溢出 |
| feeINEXACT | System::Int8 | 0x20 | 降低了精度 |
| feeALLEXCEPT | System::Int8 | 0x3f | 所有浮点数异常 |
| femINVALID | System::Int8/ Byte |
0x1/ 0x80 |
不合理的运算 (例如 0.0/0.0) |
| femDENORMALOPERAND | System::Int8/ System::Word |
0x2/ 0x100 |
次正常,接近向下溢出时丢失精度 |
| femDIVBYZERO | System::Int8/ System::Word |
0x4/ 0x200 |
被零除 (例如 1.0/0.0) |
| femOVERFLOW | System::Int8/ System::Word |
0x8/ 0x400 |
向上溢出 |
| femUNDERFLOW | System::Int8/ System::Word |
0x10/ 0x800 |
向下溢出 |
| femINEXACT | System::Int8/ System::Word |
0x20/ 0x1000 |
降低了精度 |
| femALLEXCEPT | System::Int8/ System::Word |
0x3f/ 0x1f80 |
所有浮点异常 |
| ferTONEAREST | System::Int8 | 0x0 | 减少精度位数:最接近的值 |
| ferUPWARD | System::Word | 0x800/0x4000 | 减少精度位数:向上取值 |
| ferDOWNWARD | System::Word | 0x400/0x2000 | 减少精度位数:向下取值 |
| ferTOWARDZERO | System::Word | 0xc00/0x6000 | 减少精度位数:向零的方向取值 |
| ferALLROUND | System::Word | 0xc00/0x6000 | 减少精度位数掩码 |
2.9. 未分类常数
| 常数 | 类型 | 数值 | 说明 |
|---|---|---|---|
| RTLVersion | double | 运行库版本,例如 35.00 (C++ Builder 11.1), 30.00 (C++ Builder 10.0) | |
| RTLVersionC | int | 运行库版本,例如 3500 (C++ Builder 11.1), 3000 (C++ Builder 10.0) | |
| False | bool | false | 布尔型常数 false |
| True | bool | true | 布尔型常数 true |
| MaxInt | int | 2147483647 | int 类型的最大值 |
| MaxLongInt | int | 2147483647 | long 类型的最大值 |
| hfFieldSize | int | 0x4/0x8 | TMonitor 获取成员地址用的成员大小 |
| hfMonitorOffset | System::Int8 | 0x0 | TMonitor 获取成员地址用的成员偏移 |
| NumSmallBlockTypes | System::Int8 | 55/46 | TSmallBlockTypeStates 的元素个数 |
| sLineBreak | const char * | "\r\n" / "\n" | 换行符,Windows "\r\n" 其他 "\n" |
| tfCRLF | System::Int8 | 0x1 | TTextRec::Flags 如果包含这个位就是 \r\n 换行,否则是 \n 换行 |
| DefaultMethodRttiVisibility | Set | {vcPublic, vcPublished} | RTTI 默认的可以访问的成员函数权限类型 |
| DefaultFieldRttiVisibility | Set | {vcPrivate, vcProtected, vcPublic, vcPublished} | RTTI 默认的可以访问的数据成员权限类型 |
| DefaultPropertyRttiVisibility | Set | {vcPublic, vcPublished} | RTTI 默认的可以访问的属性成员权限类型 |
三. System 变量
3.1. 处理器相关的全局变量
| 变量 | 类型 | 说明 |
|---|---|---|
| CPUCount | int | CPU 数量 (CPU 核心的线程数) |
| CPUIDTable | System::StaticArray <TCPUIDRec, 8> |
保存 CPU 识别信息,系统内部代码优化使用 |
| Default8087CW | Word | FPU 默认控制字的值 |
| DefaultMXCSR | unsigned | MXCSR 寄存器默认值 |
| Test8086 | Byte | CPU 类型 |
| Test8087 | Byte | FPU 类型 |
| TestFDIV | Int8 | FPU 除法运算是否有缺陷 |
| TestSSE | unsigned | CPU 是否支持 SSE (Streaming SIMD Extensions) |
3.2. 异常处理相关的全局变量
| 变量 | 类型 | 说明 |
|---|---|---|
| AbstractErrorProc | void __fastcall (*)(void) | 调用了抽象方法 (纯虚函数) 产生异常的回调函数 |
| AssertErrorProc | TAssertErrorProc | Delphi 的 Assert 内部调用的回调函数 |
| DispCallByIDProc | 接口调用产生异常时调用的回调函数指针 | |
| ErrorProc | 运行时错误调用的回调函数指针,默认指向一个把报错转成抛异常的函数 | |
| ExceptClsProc | void * | 指向一个处理异常的回调函数,返回异常类 |
| ExceptionAcquired | void * | AcquireExceptionObject 内部调用的回调函数 |
| ExceptionClass | TClass | 正在处理的异常类 |
| ExceptObjProc | void * | 指向一个处理异常的回调函数,返回异常对象 |
| ExceptProc | 未处理的异常调用的回调函数指针 | |
| RaiseExceptionProc | TRaiseExceptionProc | 指向一个产生异常的 API 函数,可以从汇编语言里面调用 |
| RaiseExceptObjProc | void * | 在产生异常时调用的回调函数 TRaiseExceptObjProc |
| RTLUnwindProc | void * | 指向 API 函数 RTLUnwind,可以从汇编语言里面调用 |
| SafeCallErrorProc | TSafeCallErrorProc | SafeCallException 内部调用的回调函数 |
3.3. 处理 Variant 内部使用的函数指针
| 变量 | 类型 | 说明 |
|---|---|---|
| VarClearProc | 处理 Variant 内部使用的函数指针 | |
| VarAddRefProc | 处理 Variant 内部使用的函数指针 | |
| VarCopyProc | 处理 Variant 内部使用的函数指针 | |
| VarToLStrProc | 处理 Variant 内部使用的函数指针 | |
| VarToWStrProc | 处理 Variant 内部使用的函数指针 | |
| VarToUStrProc | 处理 Variant 内部使用的函数指针 |
3.4. 未分类的全局变量
| 变量 | 类型 | 说明 |
|---|---|---|
| AllocMemCount | int | 内存块分配总数 (过时的变量) |
| AllocMemSize | int | 内存块分配总字节数 (过时的变量) |
| AlternateWriteUnicodeStringProc | 写入文本文件时调用的回调函数 | |
| CmdLine | WideChar * | 命令行字符串 |
| CmdShow | int | 主窗口创建时的状态 |
| DebugHook | Byte | 在 IDE 环境调试程序时如何处理异常 |
| DefaultSystemCodePage | int | 默认的 ANSI 代码页 |
| DefaultTextLineBreakStyle | TTextLineBreakStyle | 默认的换行符 |
| DefaultUnicodeCodePage | int | UnicodeString 的默认代码页 |
| DLLShutdownProc | DLLShutdown 内部调用的函数指针 | |
| ErrorAddr | void * | 导致运行时错误的地址 |
| ErrOutput | TextFile | 错误输出设备 (控制台程序),只写文本文件 |
| ExitCode | int | 告诉父进程或操作系统程序结束时的状态 |
| ExitProc | void * | 程序退出时调用的回调函数 |
| ExitProcessProc | void __fastcall (*)(void) | 程序结束之前最后一个调用的回调函数 |
| FileMode | Byte | Delphi 的 Reset 和 Rewrite 使用的打开文件方式 |
| HeapAllocFlags | Word | 内存管理如何从操作系统获取内存 |
| HPrevInst | unsigned | 应用程序的上一个实例,过时的变量 |
| InitProc | void * | 应用程序初始化时,即 TApplication::Initialize 调用的回调函数 |
| Input | TextFile | 标准输入设备 (控制台程序),只读文本文件 |
| IsConsole | bool | 当前模块是否控制台程序 |
| IsLibrary | bool | 当前模块是否 dll |
| IsMultiThread | bool | 是否多线程程序 |
| JITEnable | Byte | 在什么情况下调用 JIT 调试 (just-in-time debugger) |
| LibModuleList | TLibModule * | 记录模块和组件包的链表 |
| MainInstance | HINSTANCE | exe 文件的实例句柄 |
| MainThreadID | unsigned | 当前模块的主线程的 ID |
| ModuleUnloadList | TModuleUnloadRec * | 模块卸载时调用的回调函数的链表 |
| NeverSleepOnMMThreadContention | bool | 多个线程同时访问内存管理在切换线程时是否不使用 Sleep |
| NoErrMsg | bool | 是否不显示运行时错误提示信息 |
| Output | TextFile | 标准输出设备 (控制台程序),只写文本文件 |
| RandSeed | int | 产生随机数用的初始化值 |
| ReportMemoryLeaksOnShutdown | bool | Delphi 程序在退出时是否显示内存泄漏 |
| SystemThreadEndProc | TSystemThreadEndProc | EndThread 在结束线程之前调用这个指针指向的函数 |
| SystemThreadFuncProc | TSystemThreadFuncProc | BeginThread 在创建线程之前调用这个指针指向的函数 |
| UTF8CompareLocale | unsigned | UTF-8 字符串按照哪个地区的语言比较大小 |
四. System 宏
| 宏 | 说明 |
|---|---|
| _D | 适配 UNICODE/ANSI 的字符串常数,相当于 C 语言的 _T 或 _TEXT |
| BEGIN_MESSAGE_MAP | 开始处理 Windows 消息,相当于重写 Dispatch 函数 |
| END_MESSAGE_MAP | 结束处理 Windows 消息,相当于结束 Dispatch 函数 |
| MESSAGE_HANDLER | 处理 Windows 消息,由于与 ATL 冲突,需要用 VCL_MESSAGE_HANDLER 代替 |
| VCL_MESSAGE_HANDLER | 处理 Windows 消息 |
五. System 函数
5.1. 资源相关的函数
| 函数 | 说明 |
|---|---|
| FindResource | 根据类型和名称在指定模块里面查找资源 |
| LoadResource | 加载一个资源 |
| LockResource | 获取资源的指针,并没有锁定资源 |
| UnlockResource | 已经弃用的函数,没有 (不需要) 解锁资源 |
| SizeofResource | 获取资源的字节数 |
| FreeResource | 已经弃用的函数,没有 (不需要) 释放资源 |
5.2. 内存管理相关的函数
| 函数 | 说明 |
|---|---|
| AllocMem | 分配内存并且内存每个字节都初始化为零 |
| AttemptToUseSharedMemoryManager | 尝试使用共享内存管理 |
| FreeMemory | 与 Delphi 的 FreeMem 兼容,释放 GetMemory 或 AllocMem 分配的内存 |
| GetHeapStatus | 获取堆状态 |
| GetMemory | 与 Delphi 的 GetMem 兼容的分配内存函数 |
| GetMemoryManager | 获取当前的内存管理 |
| GetMemoryManagerState | 获取内存管理状态 |
| GetMemoryMap | 获取内存映射表 |
| GetMinimumBlockAlignment | 获取最小的内存块对齐方式 |
| IsMemoryManagerSet | 是否设置了内存管理 |
| ReallocMemory | 与 Delphi 的 ReallocMem 兼容,改变内存分配大小 |
| RegisterExpectedMemoryLeak | 注册只分配不需要释放的内存 |
| SetMemoryManager | 设置内存管理 |
| SetMinimumBlockAlignment | 设置最小的内存块对齐方式 |
| ShareMemoryManager | 共享这个模块的内存管理 |
| SysAllocMem | 系统内部使用的分配内存并清零函数 |
| SysFreeMem | 系统内部使用的释放内存函数 |
| SysGetMem | 系统内部使用的分配内存函数 |
| SysReallocMem | 系统内部使用的改变内存分配大小 |
| SysRegisterExpectedMemoryLeak | 系统内部使用的注册只分配不需要释放的内存 |
| SysUnregisterExpectedMemoryLeak | 系统内部使用的注销只分配不需要释放的内存 |
| UnregisterExpectedMemoryLeak | 注销只分配不需要释放的内存 |
5.3. 错误及异常处理相关的函数
| 函数 | 说明 |
|---|---|
| AcquireExceptionObject | 请求使用异常对象,引用计数 +1,不被自动销毁 |
| ExceptAddr | 获取产生异常的地址 |
| ExceptObject | 获取产生异常的对象 |
| FCheckExcept | 系统内部浮点数异常处理:检测异常 |
| FClearExcept | 系统内部浮点数异常处理:清除异常 |
| FGetExceptFlag | 系统内部浮点数异常处理:获取异常 |
| FGetExceptMask | 系统内部浮点数异常处理:获取浮点数异常掩码 |
| FGetRound | 系统内部浮点数异常处理:获取浮点数减少精度的处理方式 |
| FRaiseExcept | 系统内部浮点数异常处理:抛出异常 |
| FSetExceptFlag | 系统内部浮点数异常处理:设置异常 |
| FSetExceptMask | 系统内部浮点数异常处理:设置浮点数异常掩码 |
| FSetRound | 系统内部浮点数异常处理:设置浮点数减少精度的处理方式 |
| Get8087CW | 获取 FPU 控制字 |
| GetMXCSR | 获取 MXCSR 寄存器 |
| RaiseList | 系统内部使用的函数,如果要使用异常对象可以使用 AcquireExceptionObject |
| ReleaseExceptionObject | 请求释放异常对象,引用计数 -1,当引用计数等于 0 时异常对象将自动销毁 |
| Reset8087CW | 复位 FPU 控制字 |
| ResetMXCSR | 复位 MXCSR 寄存器 |
| Set8087CW | 设置 FPU 控制字 |
| SetLastError | 修改由 GetLastError 获取的错误编码 |
| SetMXCSR | 设置 MXCSR 寄存器 |
| SetMXCSRExceptionFlag | 设置 MXCSR 寄存器的异常标志 |
| SetRaiseList | 系统内部使用的函数,如果要使用异常对象可以使用 AcquireExceptionObject |
5.4. 字符串处理函数
| 函数 | 说明 |
|---|---|
| AnsiToUtf8 | 字符串 (UnicodeString) 转 UTF-8 |
| IsICUAvailable | 获取是否使用了 ICU (international components for unicode) |
| LoadResString | 从资源里面加载字符串 |
| LocaleCharsFromUnicode | UTF-16 字符串转为指定代码页的 ANSI 编码字符串 |
| Move | 复制内存里面的数据 |
| MoveChars | 复制 UTF-16 字符数据 |
| OleStrToString | COM (Component Object Model) 字符串转字符串 |
| OleStrToStrVar | COM (Component Object Model) 字符串转字符串 |
| Pos | 在一个字符串里面寻找另一个字符串出现的位置 |
| PUCS4Chars | UCS4String 转 UCS4Char 字符指针 |
| SetAnsiString | 字符指针按照指定的代码页转 ANSI 字符串 |
| SetCodePage | 给 RawByteString 指定代码页 |
| SetMultiByteConversionCodePage | 指定默认转为 UNICODE 的 ANSI 编码的代码页 |
| SetUTF8CompareLocale | 设置 UTF-8 字符串比较使用的地区和语言 |
| StringCodePage | 获取字符串的代码页 |
| StringElementSize | 获取字符串编码单元的字节数 |
| StringOfChar | 生成指定个数的某个字符的字符串,例如 "AAAAAAAAAA" |
| StringRefCount | 获取字符串的引用计数 |
| StringToOleStr | 字符串转 COM (Component Object Model) 字符串 |
| StringToWideChar | 字符串转字符指针 |
| UCS4StringToUnicodeString | UTF-32 转 UTF-16 |
| UCS4StringToWideString | UTF-32 字符串转 WideString (UTF-16) |
| UnicodeFromLocaleChars | 指定代码页的 ANSI 编码字符串转为 UTF-16 字符串 |
| UnicodeStringToUCS4String | UTF-16 转 UTF-32 |
| UnicodeToUtf8 | UTF-16 转 UTF-8 |
| UniqueString | 如果字符串与其他字符串共用内存,分配内存并复制内容,引用计数置为1,与其他字符串脱离引用关系 |
| UpCase | 字符转大写 (只处理英文字母) |
| UTF8Decode | 过时 (UTF-8 转 UTF-16 编码的 WideString),请使用 UTF8String |
| UTF8Encode | UTF-16 转 UTF-8 编码的 RawByteString |
| UTF8EncodeToShortString | UTF-16 转 UTF-8 编码的 ShortString |
| Utf8ToAnsi | UTF-8 转字符串 (UnicodeString) |
| UTF8ToString | UTF-8 转 UnicodeString (UTF-16) |
| Utf8ToUnicode | UTF-8 转 UTF-16 |
| UTF8ToUnicodeString | UTF-8 转 UnicodeString (UTF-16) |
| UTF8ToWideString | 过时 (UTF-8 转 UTF-16 编码的 WideString),请使用 UTF8String |
| WideCharLenToString | WideChar 指针转字符串,指定最大长度 |
| WideCharLenToStrVar | WideChar 指针转字符串,指定最大长度 |
| WideCharToString | WideChar 指针转字符串 |
| WideCharToStrVar | WideChar 指针转字符串 |
| WideCharToUCS4String | UTF-16 转 UTF-32 |
| WideStringToUCS4String | WideString (UTF-16) 转 UTF-32 字符串 |
5.5. 文件处理函数
| 函数 | 说明 |
|---|---|
| ChDir | 设置当前路径 |
| Flush | 清除文本文件的缓存,修改内容写入磁盘 |
| GetTextCodePage | 获取文本文件的代码页 |
| IOResult | 获取 I/O 错误编码 |
| MkDir | 创建文件夹 |
| RmDir | 删除空文件夹 |
| SetInOutRes | 设置 I/O 错误编码 |
| SetLineBreakStyle | 设置换行符 |
| SetTextCodePage | 设置文本文件的代码页 |
| TextStart | 已经弃用的函数 |
5.6. 动态数组相关的函数
| 函数 | 说明 |
|---|---|
| CopyArray | 复制动态数组,按照给定的元素类型 |
| DynArrayAssign | 复制动态数组 |
| DynArrayBounds | 获取动态数组下标范围 |
| DynArrayClear | 清除动态数组 |
| DynArrayCopy | 复制动态数组里面的数据 |
| DynArrayCopyRange | 复制动态数组里面的一部分数据 |
| DynArrayDim | 获取动态数组的维度 |
| DynArrayIndex | 获取动态数组里面指定下标的数据 |
| DynArraySetLength | 改变动态数组每个维度的数据个数 |
| DynArraySize | 获取动态数组大小 |
| DynArrayUnique | 如果动态数组与其他动态数组共用内存,分配内存并复制内容,引用计数置为1,与其他动态数组脱离引用关系 |
| FinalizeArray | 结束动态数组操作 |
| InitializeArray | 初始化动态数组 |
| IsDynArrayRectangular | 动态数组每个维度的元素个数是否相同 |
| MoveArray | 复制动态数组,按照给定的元素类型 |
5.7. 浮点数处理及数学运算函数
| 函数 | 说明 |
|---|---|
| ArcTan | 反正切 |
| CompToCurrency | Comp 类型数值转货币类型数值 |
| CompToDouble | Comp 类型数值转 double 类型数值 |
| Cos | 余弦 |
| CurrencyToComp | 货币类型数值转 Comp 类型数值 |
| DoubleToComp | double 类型数值转 Comp 类型数值 |
| Exp | ex |
| ExpMinus1 | ex-1 |
| FPower10 | 过时的函数,可以用 Power10 代替 |
| Frac | 浮点数的小数部分 |
| Int | 浮点数的整数部分 |
| Ln | 自然对数 |
| LnXPlus1 | x+1 的自然对数 ln(x+1) |
| Power10 | x*10p |
| Sin | 正弦 |
| SineCosine | 正弦和余弦 |
| Sqrt | 开平方 |
| Tangent | 正切 |
5.8. 未分类的函数
| 函数 | 说明 |
|---|---|
| AddModuleUnloadProc | 添加当组件包卸载的时候执行的回调函数 |
| BeginThread | 创建一个线程 |
| CopyRecord | 复制记录,按照指定的字段结构类型 |
| DLLShutdown | DLL 退出时执行,这个函数会调用 DLLShutdownProc 回调函数 |
| EndThread | 结束一个线程 |
| EnumModules | 枚举 exe 文件加载的模块 (组件包) |
| EnumResourceModules | 枚举 exe 文件加载的资源模块 |
| FinalizeRecord | 结束记录操作 |
| FindClassHInstance | 寻找某个类是在哪个模块里面定义的 |
| FindHInstance | 寻找某个内存地址属于哪个模块 |
| FindResourceHInstance | 寻找某个资源在哪个模块里面 |
| GetCPUID | 获取 CPUID 的值 |
| GetDynaMethod | 用于动态方法调度 |
| GetLocaleOverride | 通过应用程序的名字获取这个应用程序的语言 |
| GetResourceModuleName | 根据模块名称获取模块的语言 |
| GetUILanguages | 根于语言 ID 返回显示适合使用的语言列表 |
| GetVariantManager | 获取 Variant 类型数据管理器 |
| InterLockedExchg | 源码里面没发现这个函数的使用 (使用 AtomicExchange 赋值并返回以前的值) |
| interface_cast | 接口类型转换,相当于 Delphi 的 as 操作符 |
| IsVariantManagerSet | 获取是否设置了 Variant 类型数据管理器 |
| LoadResourceModule | 加载资源模块 |
| Mark | Turbo Pascal 遗留下来的函数,这个函数已经没有意义了 |
| MonitorEnter | 锁定使用一个对象,如果被别的线程锁定了,这个线程就挂起等待 |
| MonitorExit | 被锁定使用的对象解锁 |
| MonitorPulse | 解锁对象之后,告诉下一个等待的线程可以立即锁定使用了 |
| MonitorPulseAll | 解锁对象之后,告诉等待队列里面所有的线程可以立即锁定使用了 |
| MonitorTryEnter | 锁定使用一个对象,如果被别的线程锁定了,这个函数就失败返回 |
| MonitorWait | 等待被锁定对象解锁 |
| MoveRecord | 复制记录,按照指定的字段结构类型 |
| ParamCount | 命令行参数个数 |
| ParamStr | 命令行参数 |
| Random | 生成随机数 |
| Randomize | 初始化随机数 |
| RegisterModule | 注册模块,系统内部使用的函数 |
| RegisterWeakRefTypeInfo | 系统内部用于 RTTI 的函数 |
| Release | Turbo Pascal 遗留下来的函数,这个函数已经没有意义了 |
| RemoveModuleUnloadProc | 移除当组件包卸载的时候执行的回调函数 |
| SetLocaleOverride | 设置应用程序的语言 |
| SetVariantManager | 设置 Variant 类型数据管理器 |
| SysHasWeakRef | 系统内部用于 RTTI 的函数 |
| UnregisterModule | 注销模块,系统内部使用的函数 |
相关:
- System::Classes
- System::Sysutils
- System::Syncobjs
- System::Dateutils
- System::Ioutils
- System::Netencoding
- <cstdlib>
- <cstdio>
- <cstring>
C++ Builder 参考手册 ➙ System
