home *** CD-ROM | disk | FTP | other *** search
- unit Main;
-
- { Example showing how to lock a Variant Array.
-
- You might want to lock a variant array in order to get better performance. }
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Grids, StdCtrls, ExtCtrls, Menus;
-
- const
- HighVal = 12;
-
- type
- TLockingVariantForm = class(TForm)
- Grid: TStringGrid;
- MainMenu1: TMainMenu;
- UseLockedArray1: TMenuItem;
- procedure bLockAryClick(Sender: TObject);
- end;
-
- var
- LockingVariantForm: TLockingVariantForm;
-
- implementation
-
- {$R *.DFM}
-
- function GetArray: Variant;
- var
- V: Variant;
- I, J: Integer;
- begin
- V := VarArrayCreate([0, HighVal, 0, HighVal], varInteger);
-
- for I := 0 to HighVal do
- for J := 0 to HighVal do
- V[I, J] := I * J;
-
- Result := V;
- end;
-
-
- procedure TLockingVariantForm.bLockAryClick(Sender: TObject);
- type
- TData = array[0..HighVal, 0..HighVal] of Integer;
- var
- I, J: Integer;
- V: Variant;
- Data: ^TData;
- begin
- V := GetArray;
-
- Data := VarArrayLock(V);
- try
- for I := 1 to HighVal do
- for J := 1 to HighVal do
- Grid.Cells[I, J] := IntToStr(Data^[I, J]);
- finally
- VarArrayUnlock(V);
- end;
- end;
-
- end.
-