From f9ed2775c217ac0c53f9aed0ddd0e7e013757469 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 8 Nov 2001 16:16:54 +0000 Subject: [PATCH] + beginning of variant dispatching --- rtl/inc/variant.inc | 24 +++++++++++++++++------- rtl/inc/varianth.inc | 12 ++++++++---- rtl/win32/system.pp | 35 ++++++++++++++++++----------------- 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/rtl/inc/variant.inc b/rtl/inc/variant.inc index 3af374045a..0acc80ec63 100644 --- a/rtl/inc/variant.inc +++ b/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 } diff --git a/rtl/inc/varianth.inc b/rtl/inc/varianth.inc index 13510c9d42..622355f9ed 100644 --- a/rtl/inc/varianth.inc +++ b/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 } diff --git a/rtl/win32/system.pp b/rtl/win32/system.pp index 736c189a30..ccba4b843b 100644 --- a/rtl/win32/system.pp +++ b/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 -} \ No newline at end of file +}