Browse Source

* fix SetToString/StringToSet for 8/16-bit platforms

git-svn-id: trunk@42244 -
svenbarth 6 years ago
parent
commit
15d0deff81
1 changed files with 9 additions and 9 deletions
  1. 9 9
      rtl/objpas/typinfo.pp

+ 9 - 9
rtl/objpas/typinfo.pp

@@ -1058,16 +1058,16 @@ end;
 
 function SetToString(TypeInfo: PTypeInfo; Value: Pointer; Brackets: Boolean): String;
 type
-  tsetarr = bitpacked array[0..SizeOf(Integer)*8-1] of 0..1;
+  tsetarr = bitpacked array[0..SizeOf(LongInt)*8-1] of 0..1;
 Var
   I,El,Els,Rem,V,Max : Integer;
   PTI : PTypeInfo;
   PTD : PTypeData;
-  ValueArr : PLongWord;
+  ValueArr : PLongInt;
 begin
   PTD := GetTypeData(TypeInfo);
   PTI:=PTD^.CompType;
-  ValueArr := PLongWord(Value);
+  ValueArr := PLongInt(Value);
   Result:='';
 {$ifdef ver3_0}
   case PTD^.OrdType of
@@ -1085,25 +1085,25 @@ begin
     end;
   end;
 {$else}
-  Els := PTD^.SetSize div SizeOf(Integer);
-  Rem := PTD^.SetSize mod SizeOf(Integer);
+  Els := PTD^.SetSize div SizeOf(LongInt);
+  Rem := PTD^.SetSize mod SizeOf(LongInt);
 {$endif}
 
 {$ifdef ver3_0}
   El := 0;
 {$else}
-  for El := 0 to (PTD^.SetSize - 1) div SizeOf(Integer) do
+  for El := 0 to (PTD^.SetSize - 1) div SizeOf(LongInt) do
 {$endif}
     begin
       if El = Els then
         Max := Rem
       else
-        Max := SizeOf(Integer);
+        Max := SizeOf(LongInt);
       For I:=0 to Max*8-1 do
         begin
           if (tsetarr(ValueArr[El])[i]<>0) then
             begin
-              V := I + SizeOf(Integer) * 8 * El;
+              V := I + SizeOf(LongInt) * 8 * El;
               If Result='' then
                 Result:=GetEnumName(PTI,V)
               else
@@ -1195,7 +1195,7 @@ begin
             to reverse the shift }
           BitOfs := 31 - BitOfs;
 {$endif}
-          ResArr[ElOfs] := ResArr[ElOfs] or (1 shl BitOfs);
+          ResArr[ElOfs] := ResArr[ElOfs] or (LongInt(1) shl BitOfs);
         end;
     end;
 end;