home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 February / DPPCPRO0299.ISO / February / Delphi / Runimage / DELPHI20 / DEMOS / DOC / VARLOCK / MAIN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-06-10  |  1.2 KB  |  67 lines

  1. unit Main;
  2.  
  3. { Example showing how to lock a Variant Array.
  4.  
  5.   You might want to lock a variant array in order to get better performance. }
  6.  
  7. interface
  8.  
  9. uses
  10.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  11.   Grids, StdCtrls, ExtCtrls, Menus;
  12.  
  13. const
  14.   HighVal = 12;
  15.  
  16. type
  17.   TLockingVariantForm = class(TForm)
  18.     Grid: TStringGrid;
  19.     MainMenu1: TMainMenu;
  20.     UseLockedArray1: TMenuItem;
  21.     procedure bLockAryClick(Sender: TObject);
  22.   end;
  23.  
  24. var
  25.   LockingVariantForm: TLockingVariantForm;
  26.  
  27. implementation
  28.  
  29. {$R *.DFM}
  30.  
  31. function GetArray: Variant;
  32. var
  33.   V: Variant;
  34.   I, J: Integer;
  35. begin
  36.   V := VarArrayCreate([0, HighVal, 0, HighVal], varInteger);
  37.  
  38.   for I := 0 to HighVal do
  39.     for J := 0 to HighVal do
  40.       V[I, J] := I * J;
  41.  
  42.   Result := V;
  43. end;
  44.  
  45.  
  46. procedure TLockingVariantForm.bLockAryClick(Sender: TObject);
  47. type
  48.   TData = array[0..HighVal, 0..HighVal] of Integer;
  49. var
  50.   I, J: Integer;
  51.   V: Variant;
  52.   Data: ^TData;
  53. begin
  54.   V := GetArray;
  55.  
  56.   Data := VarArrayLock(V);
  57.   try
  58.     for I := 1 to HighVal do
  59.       for J := 1 to HighVal do
  60.         Grid.Cells[I, J] := IntToStr(Data^[I, J]);
  61.   finally
  62.     VarArrayUnlock(V);
  63.   end;
  64. end;
  65.  
  66. end.
  67.