Sfoglia il codice sorgente

* val for int64 hopefully works now correct

florian 25 anni fa
parent
commit
5e9dbab759
2 ha cambiato i file con 34 aggiunte e 30 eliminazioni
  1. 30 9
      rtl/inc/astrings.inc
  2. 4 21
      rtl/inc/int64.inc

+ 30 - 9
rtl/inc/astrings.inc

@@ -560,16 +560,28 @@ Function ValAnsiSignedInt (DestSize: longint; Const S : AnsiString; Var Code : V
 Var
   SS : ShortString;
 begin
-  AnsiStr_To_ShortStr (SS,Pointer(S));
-  ValAnsiSignedInt := ValSignedInt(DestSize,SS,Code);
+  ValAnsiSignedInt:=0;
+  if length(S)>255 then
+    code:=256
+  else
+    begin
+       AnsiStr_To_ShortStr (SS,Pointer(S));
+       ValAnsiSignedInt := ValSignedInt(DestSize,SS,Code);
+    end;
 end;
 
-Function ValAnsiUnsignedint64 (Const S : AnsiString; Var Code : ValSInt): qword; [public, alias:'FPC_VAL_UINT64_ANSISTR'];
+Function ValAnsiUnsignedint64 (Const S : AnsiString; Var Code : ValSInt): qword; [public, alias:'FPC_VAL_QWORD_ANSISTR'];
 Var
   SS : ShortString;
 begin
-  AnsiStr_To_ShortStr(SS,Pointer(S));
-  ValAnsiUnsignedInt64 := ValQWord(SS,Code);
+  ValAnsiUnsignedInt64:=0;
+  if length(S)>255 then
+    code:=256
+  else
+    begin
+       AnsiStr_To_ShortStr(SS,Pointer(S));
+       ValAnsiUnsignedInt64 := ValQWord(SS,Code);
+    end;
 end;
 
 
@@ -577,8 +589,14 @@ Function ValAnsiSignedInt64 (DestSize: longint; Const S : AnsiString; Var Code :
 Var
   SS : ShortString;
 begin
-  AnsiStr_To_ShortStr (SS,Pointer(S));
-  ValAnsiSignedInt64 := valInt64(SS,Code);
+  ValAnsiSignedInt64:=0;
+  if length(S)>255 then
+    code:=256
+  else
+    begin
+       AnsiStr_To_ShortStr (SS,Pointer(S));
+       ValAnsiSignedInt64 := valInt64(SS,Code);
+    end;
 end;
 
 {$IfDef SUPPORT_FIXED}
@@ -686,7 +704,10 @@ end;
 
 {
   $Log$
-  Revision 1.8  2000-12-08 14:04:43  jonas
+  Revision 1.9  2000-12-10 15:00:14  florian
+    * val for int64 hopefully works now correct
+
+  Revision 1.8  2000/12/08 14:04:43  jonas
     + added pos(char,ansistring), because there is also a pos(char,shortstring)
       and without the ansistring version, the shortstring version is always
       called when calling pos(char,pchar), even when using $h+ (because the
@@ -715,4 +736,4 @@ end;
   Revision 1.2  2000/07/13 11:33:42  michael
   + removed logs
 
-}
+}

+ 4 - 21
rtl/inc/int64.inc

@@ -475,29 +475,12 @@
     code := 0;
   end;
 
-Function ValQWord(Const S: AnsiString; var Code: ValSInt): QWord; [public, alias:'FPC_VAL_QWORD_ANSISTR'];
-
-  begin
-     ValQWord:=0;
-     if length(S)>255 then
-       code:=256
-     else
-       ValQWord:=ValQWord(ShortString(S),Code);
-  end;
-
-Function ValInt64(Const S: AnsiString; var Code: ValSInt): Int64; [public, alias:'FPC_VAL_INT64_ANSISTR'];
-
-  begin
-     ValInt64:=0;
-     if length(S)>255 then
-       code:=256
-     else
-       ValInt64:=ValInt64(ShortString(S),Code);
-  end;
-
 {
   $Log$
-  Revision 1.6  2000-12-09 20:52:40  florian
+  Revision 1.7  2000-12-10 15:00:14  florian
+    * val for int64 hopefully works now correct
+
+  Revision 1.6  2000/12/09 20:52:40  florian
     * val for dword and qword didn't handle the max values
       correctly
     * val for qword works again