1 Star 0 Fork 0

phy0292/cheat-engine

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
dotnettypes.pas 5.86 KB
一键复制 编辑 原始数据 按行查看 历史
cheat-engine 提交于 2019-12-20 00:49 +08:00 . Fix registry issues
unit DotNetTypes;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
resourcestring
rsDNTEnd = 'END';
rsDNTVoid = 'void';
rsDNTBool = 'bool';
rsDNTChar = 'char';
rsDNTByteSigned = 'Byte (Signed)';
rsDNTByte = 'Byte';
rsDNT2ByteSigned = '2 Byte (Signed)';
rsDNT2Byte = '2 Byte';
rsDNT4ByteSigned = '4 Byte (Signed)';
rsDNT4Byte = '4 Byte';
rsDNT8ByteSigned = '8 Byte (Signed)';
rsDNT8Byte = '8 Byte';
rsDNTFloat = 'Float';
rsDNTDouble = 'Double';
rsDNTString = 'String';
rsDNTPointer = 'Pointer';
rsDNTReference = 'Reference';
rsDNTValueType = 'ValueType';
rsDNTClass = 'Class';
rsDNTVar = 'Var';
rsDNTArray = 'Array';
rsDNTGenericInst = 'GenericInst';
rsDNTTypedByRef = 'Typed By Ref';
rsDNTSigned = 'Signed';
rsDNTUnsigned = 'Unsigned';
rsDNTFunctionPointer = 'Function Pointer';
rsDNTObject = 'Object';
rsDNTSZArray = 'SZ Array';
rsDNTMVar = 'MVar';
rsDNTCMOD_REQD = 'CMOD_REQD';
rsDNTCMOD_OPT = 'CMOD_OPT';
rsDNTInternal = 'Internal';
rsDNTMAX = 'MAX';
rsDNTModifier = 'Modifier';
rsDNTSentinel = 'Sentinel';
rsDNTPinned = 'Pinned';
const
ELEMENT_TYPE_END = $00;
ELEMENT_TYPE_VOID = $01;
ELEMENT_TYPE_BOOLEAN = $02;
ELEMENT_TYPE_CHAR = $03;
ELEMENT_TYPE_I1 = $04;
ELEMENT_TYPE_U1 = $05;
ELEMENT_TYPE_I2 = $06;
ELEMENT_TYPE_U2 = $07;
ELEMENT_TYPE_I4 = $08;
ELEMENT_TYPE_U4 = $09;
ELEMENT_TYPE_I8 = $0a;
ELEMENT_TYPE_U8 = $0b;
ELEMENT_TYPE_R4 = $0c;
ELEMENT_TYPE_R8 = $0d;
ELEMENT_TYPE_STRING = $0e;
// every type above PTR will be simple type
ELEMENT_TYPE_PTR = $0f; // PTR <type>
ELEMENT_TYPE_BYREF = $10; // BYREF <type>
// Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated.
ELEMENT_TYPE_VALUETYPE = $11; // VALUETYPE <class Token>
ELEMENT_TYPE_CLASS = $12; // CLASS <class Token>
ELEMENT_TYPE_VAR = $13; // a class type variable VAR <number>
ELEMENT_TYPE_ARRAY = $14; // MDARRAY <type> <rank> <bcount> <bound1> ... <lbcount> <lb1> ...
ELEMENT_TYPE_GENERICINST = $15; // GENERICINST <generic type> <argCnt> <arg1> ... <argn>
ELEMENT_TYPE_TYPEDBYREF = $16; // TYPEDREF (it takes no args) a typed referece to some other type
ELEMENT_TYPE_I = $18; // native integer size
ELEMENT_TYPE_U = $19; // native unsigned integer size
ELEMENT_TYPE_FNPTR = $1b; // FNPTR <complete sig for the function including calling convention>
ELEMENT_TYPE_OBJECT = $1c; // Shortcut for System.Object
ELEMENT_TYPE_SZARRAY = $1d; // Shortcut for single dimension zero lower bound array
// SZARRAY <type>
ELEMENT_TYPE_MVAR = $1e; // a method type variable MVAR <number>
// This is only for binding
ELEMENT_TYPE_CMOD_REQD = $1f; // required C modifier : E_T_CMOD_REQD <mdTypeRef/mdTypeDef>
ELEMENT_TYPE_CMOD_OPT = $20; // optional C modifier : E_T_CMOD_OPT <mdTypeRef/mdTypeDef>
// This is for signatures generated internally (which will not be persisted in any way).
ELEMENT_TYPE_INTERNAL = $21; // INTERNAL <typehandle>
// Note that this is the max of base type excluding modifiers
ELEMENT_TYPE_MAX = $22; // first invalid element type
ELEMENT_TYPE_MODIFIER = $40;
ELEMENT_TYPE_SENTINEL = $41;
ELEMENT_TYPE_PINNED = $45;
function DotNetTypeToString(dntype: dword):string;
implementation
function DotNetTypeToString(dntype: dword):string;
begin
result:=rsDNTPointer;
case dntype of
ELEMENT_TYPE_END : result:=rsDNTEnd;
ELEMENT_TYPE_VOID : result:=rsDNTVoid;
ELEMENT_TYPE_BOOLEAN : result:=rsDNTBool;
ELEMENT_TYPE_CHAR : result:=rsDNTChar;
ELEMENT_TYPE_I1 : result:=rsDNTByteSigned;
ELEMENT_TYPE_U1 : result:=rsDNTByte;
ELEMENT_TYPE_I2 : result:=rsDNT2ByteSigned;
ELEMENT_TYPE_U2 : result:=rsDNT2Byte;
ELEMENT_TYPE_I4 : result:=rsDNT4ByteSigned;
ELEMENT_TYPE_U4 : result:=rsDNT4Byte;
ELEMENT_TYPE_I8 : result:=rsDNT8ByteSigned;
ELEMENT_TYPE_U8 : result:=rsDNT8Byte;
ELEMENT_TYPE_R4 : result:=rsDNTFloat;
ELEMENT_TYPE_R8 : result:=rsDNTDouble;
ELEMENT_TYPE_STRING : result:=rsDNTString;
ELEMENT_TYPE_PTR : result:=rsDNTPointer;
ELEMENT_TYPE_BYREF : result:=rsDNTReference;
ELEMENT_TYPE_VALUETYPE : result:=rsDNTValueType;
ELEMENT_TYPE_CLASS : result:=rsDNTClass;
ELEMENT_TYPE_VAR : result:=rsDNTVar;
ELEMENT_TYPE_ARRAY : result:=rsDNTArray;
ELEMENT_TYPE_GENERICINST : result:=rsDNTGenericInst;
ELEMENT_TYPE_TYPEDBYREF : result:=rsDNTTypedByRef;
ELEMENT_TYPE_I : result:=rsDNTSigned;
ELEMENT_TYPE_U : result:=rsDNTUnsigned;
ELEMENT_TYPE_FNPTR : result:=rsDNTFunctionPointer;
ELEMENT_TYPE_OBJECT : result:=rsDNTObject;
ELEMENT_TYPE_SZARRAY : result:=rsDNTSZArray;
ELEMENT_TYPE_MVAR : result:=rsDNTMVar;
ELEMENT_TYPE_CMOD_REQD : result:=rsDNTCMOD_REQD;
ELEMENT_TYPE_CMOD_OPT : result:=rsDNTCMOD_OPT;
ELEMENT_TYPE_INTERNAL : result:=rsDNTInternal;
ELEMENT_TYPE_MAX : result:=rsDNTMAX;
ELEMENT_TYPE_MODIFIER : result:=rsDNTModifier;
ELEMENT_TYPE_SENTINEL : result:=rsDNTSentinel;
ELEMENT_TYPE_PINNED : result:=rsDNTPinned;
end;
end;
end.
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/phy0292/cheat-engine.git
git@gitee.com:phy0292/cheat-engine.git
phy0292
cheat-engine
cheat-engine
master

搜索帮助