Skip to content

Instantly share code, notes, and snippets.

@UweRaabe
Created August 18, 2017 08:34
Show Gist options
  • Save UweRaabe/d2a9baa0fde542131d33d10f34cd2471 to your computer and use it in GitHub Desktop.
Save UweRaabe/d2a9baa0fde542131d33d10f34cd2471 to your computer and use it in GitHub Desktop.
type
TVariantArr = record
private
{ implementation may differ }
Data: Variant;
Arr: TArray<Variant>;
function GetItems(Index: Integer): Variant;
procedure SetItems(Index: Integer; const Value: Variant);
public
class operator Implicit(A: TVariantArr): Variant; overload;
class operator Implicit(A: Variant): TVariantArr; overload;
property Items[Index: Integer]: Variant read GetItems write SetItems; default;
end;
type
ISome = interface
function GetValue: TVariantArr; stdcall;
procedure SetValue(const Value: TVariantArr); stdcall;
property Value: TVariantArr read GetValue write SetValue;
end;
function TVariantArr.GetItems(Index: Integer): Variant;
begin
Result := Arr[Index];
end;
procedure TVariantArr.SetItems(Index: Integer; const Value: Variant);
begin
Arr[Index] := Value;
end;
class operator TVariantArr.Implicit(A: TVariantArr): Variant;
begin
Result := A.Data;
end;
class operator TVariantArr.Implicit(A: Variant): TVariantArr;
begin
Result.Data := A;
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment