Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,54 @@
|
|||
unit MyObjDef;
|
||||
{$mode objfpc}{$h+}
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Variants;
|
||||
|
||||
function MyObjCreate: Variant;
|
||||
|
||||
implementation
|
||||
|
||||
var
|
||||
MyObjType: TInvokeableVariantType;
|
||||
|
||||
type
|
||||
TMyObjType = class(TInvokeableVariantType)
|
||||
procedure Clear(var V: TVarData); override;
|
||||
procedure Copy(var aDst: TVarData; const aSrc: TVarData; const Indir: Boolean); override;
|
||||
function GetProperty(var aDst: TVarData; const aData: TVarData; const aName: string): Boolean; override;
|
||||
end;
|
||||
|
||||
function MyObjCreate: Variant;
|
||||
begin
|
||||
Result := Unassigned;
|
||||
TVarData(Result).VType := MyObjType.VarType;
|
||||
end;
|
||||
|
||||
procedure TMyObjType.Clear(var V: TVarData);
|
||||
begin
|
||||
V.VType := varEmpty;
|
||||
end;
|
||||
|
||||
procedure TMyObjType.Copy(var aDst: TVarData; const aSrc: TVarData; const Indir: Boolean);
|
||||
begin
|
||||
VarClear(Variant(aDst));
|
||||
aDst := aSrc;
|
||||
end;
|
||||
|
||||
function TMyObjType.GetProperty(var aDst: TVarData; const aData: TVarData; const aName: string): Boolean;
|
||||
begin
|
||||
Result := True;
|
||||
case LowerCase(aName) of
|
||||
'bark': Variant(aDst) := 'WOF WOF!';
|
||||
'moo': Variant(aDst) := 'Mooo!';
|
||||
else
|
||||
Variant(aDst) := Format('Sorry, what is "%s"?', [aName]);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
MyObjType := TMyObjType.Create;
|
||||
finalization
|
||||
MyObjType.Free;
|
||||
end.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
program Test;
|
||||
{$mode objfpc}{$h+}
|
||||
uses
|
||||
MyObjDef;
|
||||
|
||||
var
|
||||
MyObj: Variant;
|
||||
|
||||
begin
|
||||
MyObj := MyObjCreate;
|
||||
WriteLn(MyObj.Bark);
|
||||
WriteLn(MyObj.Moo);
|
||||
WriteLn(MyObj.Meow);
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue