Browse Source

+ beginning of variant dispatching

florian 24 years ago
parent
commit
f9ed2775c2
3 changed files with 43 additions and 28 deletions
  1. 17 7
      rtl/inc/variant.inc
  2. 8 4
      rtl/inc/varianth.inc
  3. 18 17
      rtl/win32/system.pp

+ 17 - 7
rtl/inc/variant.inc

@@ -114,7 +114,7 @@ operator :=(const source : comp) dest : variant;
   end;
 
 { Misc. }
-{ Fixme!!! 
+{ Fixme!!!
 operator :=(const source : currency) dest : variant;
   begin
   end;
@@ -129,7 +129,7 @@ operator :=(const source : tdatetime) dest : variant;
 
 { Integer }
 operator :=(const source : variant) dest : byte;
-  begin     
+  begin
      dest:=variantmanager.vartoint(source);
   end;
 
@@ -252,7 +252,7 @@ operator :=(const source : variant) dest : tdatetime;
 
 procedure invalidvariantop;
   begin
-     Runerror(221);
+     HandleErrorFrame(221,get_frame);
   end;
 
 procedure varclear(var v : tvardata);
@@ -261,10 +261,18 @@ begin
      invalidvariantop;
 end;
 
+procedure vardisperror;
+
+  begin
+     HandleErrorFrame(222,get_frame);
+  end;
+
 procedure initvariantmanager;
   var
-     i : longint;     
+     i : longint;
   begin
+     VarDispProc:=@vardisperror;
+     DispCallByIDProc:=@vardisperror;
      for i:=0 to (sizeof(tvariantmanager) div sizeof(pointer))-1 do
        ppointer(@variantmanager+i*sizeof(pointer))^:=@invalidvariantop;
      pointer(variantmanager.varclear):=@varclear
@@ -272,8 +280,10 @@ procedure initvariantmanager;
 
 {
   $Log$
-  Revision 1.1  2001-08-19 21:02:01  florian
-    * fixed and added a lot of stuff to get the Jedi DX( headers
-      compiled
+  Revision 1.2  2001-11-08 16:17:30  florian
+    + beginning of variant dispatching
 
+  Revision 1.1  2001/08/19 21:02:01  florian
+    * fixed and added a lot of stuff to get the Jedi DX8 headers
+      compiled
 }

+ 8 - 4
rtl/inc/varianth.inc

@@ -162,7 +162,9 @@ type
    pvariantmanager = ^tvariantmanager;
 
 var
-   variantmanager : tvariantmanager;   
+   VarDispProc : pointer;
+   DispCallByIDProc : pointer;
+   variantmanager : tvariantmanager;
 
 {**********************************************************************
                        to Variant assignments
@@ -244,8 +246,10 @@ operator :=(const source : variant) dest : tdatetime;
 }
 {
   $Log$
-  Revision 1.1  2001-08-19 21:02:02  florian
-    * fixed and added a lot of stuff to get the Jedi DX( headers
-      compiled
+  Revision 1.2  2001-11-08 16:17:30  florian
+    + beginning of variant dispatching
 
+  Revision 1.1  2001/08/19 21:02:02  florian
+    * fixed and added a lot of stuff to get the Jedi DX8 headers
+      compiled
 }

+ 18 - 17
rtl/win32/system.pp

@@ -66,7 +66,7 @@ const
 
    FileNameCaseSensitive : boolean = true;
 
-   sLineBreak : string[2] = LineEnding;
+   sLineBreak : string = LineEnding;
    DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;
 
    { Thread count for DLL }
@@ -1503,25 +1503,23 @@ begin
   Rewrite(T);
 end;
 
-
-
 const
    Exe_entry_code : pointer = @Exe_entry;
    Dll_entry_code : pointer = @Dll_entry;
 
 begin
-{ get some helpful informations }
+  { get some helpful informations }
   GetStartupInfo(@startupinfo);
-{ some misc Win32 stuff }
+  { some misc Win32 stuff }
   hprevinst:=0;
   if not IsLibrary then
     HInstance:=getmodulehandle(GetCommandFile);
   MainInstance:=HInstance;
   cmdshow:=startupinfo.wshowwindow;
-{ to test stack depth }
+  { to test stack depth }
   loweststack:=maxlongint;
-{ real test stack depth        }
-{   stacklimit := setupstack;  }
+  { real test stack depth        }
+  {   stacklimit := setupstack;  }
 {$ifdef MT}
   { allocate one threadvar entry from windows, we use this entry }
   { for a pointer to our threadvars                              }
@@ -1529,11 +1527,11 @@ begin
   { the exceptions use threadvars so do this _before_ initexceptions }
   AllocateThreadVars;
 {$endif MT}
-{ Setup heap }
+  { Setup heap }
   InitHeap;
   InitExceptions;
-{ Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
-  displayed in and messagebox }
+  { Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
+    displayed in and messagebox }
   StdInputHandle:=longint(GetStdHandle(STD_INPUT_HANDLE));
   StdOutputHandle:=longint(GetStdHandle(STD_OUTPUT_HANDLE));
   StdErrorHandle:=longint(GetStdHandle(STD_ERROR_HANDLE));
@@ -1551,11 +1549,11 @@ begin
      OpenStdIO(StdOut,fmOutput,StdOutputHandle);
      OpenStdIO(StdErr,fmOutput,StdErrorHandle);
    end;
-{ Arguments }
+  { Arguments }
   setup_arguments;
-{ Reset IO Error }
+  { Reset IO Error }
   InOutRes:=0;
-{ Reset internal error variable }
+  { Reset internal error variable }
   errno:=0;
 {$ifdef HASVARIANT}
   initvariantmanager;
@@ -1564,7 +1562,10 @@ end.
 
 {
   $Log$
-  Revision 1.20  2001-11-07 13:05:16  michael
+  Revision 1.21  2001-11-08 16:16:54  florian
+    + beginning of variant dispatching
+
+  Revision 1.20  2001/11/07 13:05:16  michael
   + Fixed Append() bug. Appending non-existing file now gives an error
 
   Revision 1.19  2001/10/23 21:51:03  peter
@@ -1574,7 +1575,7 @@ end.
   * bugfix #1639 (IsMultiThread varialbe setting)
 
   Revision 1.17  2001/08/19 21:02:02  florian
-    * fixed and added a lot of stuff to get the Jedi DX( headers
+    * fixed and added a lot of stuff to get the Jedi DX8 headers
       compiled
 
   Revision 1.16  2001/07/30 20:53:50  peter
@@ -1643,4 +1644,4 @@ end.
   Revision 1.2  2000/07/13 11:33:58  michael
   + removed logs
 
-}
+}