Browse Source

+ added methods AsInt64, AsQWord and AsLongWord to TGDBMI_Value

git-svn-id: trunk@30173 -
nickysn 10 years ago
parent
commit
f4c0c92628
1 changed files with 26 additions and 0 deletions
  1. 26 0
      ide/gdbmiwrap.pas

+ 26 - 0
ide/gdbmiwrap.pas

@@ -37,7 +37,10 @@ type
   TGDBMI_ListValue = class;
   TGDBMI_ListValue = class;
   TGDBMI_Value = class
   TGDBMI_Value = class
     function AsString: string;
     function AsString: string;
+    function AsInt64: Int64;
+    function AsQWord: QWord;
     function AsLongInt: LongInt;
     function AsLongInt: LongInt;
+    function AsLongWord: LongWord;
     function AsCoreAddr: CORE_ADDR;
     function AsCoreAddr: CORE_ADDR;
     function AsTuple: TGDBMI_TupleValue;
     function AsTuple: TGDBMI_TupleValue;
     function AsList: TGDBMI_ListValue;
     function AsList: TGDBMI_ListValue;
@@ -173,11 +176,34 @@ begin
   Result := (self as TGDBMI_StringValue).StringValue;
   Result := (self as TGDBMI_StringValue).StringValue;
 end;
 end;
 
 
+function TGDBMI_Value.AsInt64: Int64;
+begin
+  Result := StrToInt64(C2PascalNumberPrefix(AsString));
+end;
+
+function TGDBMI_Value.AsQWord: QWord;
+begin
+  Result := StrToQWord(C2PascalNumberPrefix(AsString));
+end;
+
 function TGDBMI_Value.AsLongInt: LongInt;
 function TGDBMI_Value.AsLongInt: LongInt;
 begin
 begin
   Result := StrToInt(C2PascalNumberPrefix(AsString));
   Result := StrToInt(C2PascalNumberPrefix(AsString));
 end;
 end;
 
 
+function TGDBMI_Value.AsLongWord: LongWord;
+const
+  SInvalidInteger = '"%s" is an invalid integer';
+var
+  S: string;
+  Error: LongInt;
+begin
+  S := C2PascalNumberPrefix(AsString);
+  Val(S, Result, Error);
+  if Error <> 0 then
+    raise EConvertError.CreateFmt(SInvalidInteger,[S]);
+end;
+
 function TGDBMI_Value.AsCoreAddr: CORE_ADDR;
 function TGDBMI_Value.AsCoreAddr: CORE_ADDR;
 begin
 begin
 {$if defined(TARGET_IS_64BIT)}
 {$if defined(TARGET_IS_64BIT)}