+ beginning of variant dispatching

This commit is contained in:
florian 2001-11-08 16:16:54 +00:00
parent 1d4499f32e
commit f9ed2775c2
3 changed files with 43 additions and 28 deletions

View File

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

View File

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

View File

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