[Overview][Types][Classes][Index] |
[Properties (by Name)] [Methods (by Name)] [Events (by Name)]
Implements a resizable two-dimensional array using Pointers to column and row values.
Source position: dynamicarray.pas line 31
type TPointerPointerArray = class |
||
public |
||
constructor Create; |
|
Constructor for the class instance. |
destructor Destroy; override; |
|
Destructor for the class instance. |
procedure SetLength(); |
|
Sets the dimensions for the array to the specified number of columns and rows. |
procedure DeleteColRow(); |
|
Deletes a column or row at the specified ordinal position in the array. |
procedure MoveColRow(); |
|
Moves a column or row at the specified ordinal position to a new location in the array. |
procedure ExchangeColRow(); |
|
Exchanges values for array elements in the specified columns or rows in the array. |
procedure Clear; |
|
Removes pointers and frees resources for all columns and rows in the two-dimensional array. |
property Arr []: Pointer; default; [rw] |
|
Provides indexed access Pointer values in the elements for the array. |
property OnDestroyItem: TOnNotifyItem; [rw] |
|
Performs actions needed when the Pointer in an array element is removed from the array. |
property OnNewItem: TOnNotifyItem; [rw] |
|
Performs actions needed when a new Pointer is needed for an array element added to a column or row in the array. |
end; |
|
Implements a resizable two-dimensional array using Pointers to column and row values. |
|
| | ||
TObject |
program tarrayexample; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, strings, DynamicArray; type TArrayExampleClass = class private procedure doDestroyItem(Sender: Tobject; Col,Row: Integer;var Item: Pointer); end; procedure TArrayExampleClass.doDestroyItem(Sender: Tobject; Col,Row: Integer; var Item: Pointer); begin StrDispose(Item); end; var FCols: TPointerPointerArray; ex: TArrayExampleClass; begin FCols := TPointerPointerArray.Create; ex := TArrayExampleClass.Create; FCols.OnDestroyItem := @ex.doDestroyItem; FCols.SetLength(8,8); FCols.arr[0,0] := StrNew('string1'); FCols.arr[4,7] := StrNew('string2'); FCols.arr[4,3] := StrNew('string3'); writeln('0,0:' + Pchar(FCols.arr[0,0])); writeln('4,7:' + Pchar(FCols.arr[4,7])); FCols.MoveColRow(True,4,5); writeln('after moving column 4 to 5'); writeln('5,7:' + Pchar(FCols.arr[5,7])); writeln('before exchanging row 7 and 3:'); writeln('5,3:' + Pchar(FCols.arr[5,3])); writeln('5,7:' + Pchar(FCols.arr[5,7])); FCols.ExchangeColRow(False,7,3); writeln('after exchanging row 7 and 3:'); writeln('5,3:' + Pchar(FCols.arr[5,3])); writeln('5,7:' + Pchar(FCols.arr[5,7])); FCols.DeleteColRow(true,5); writeln('after deleting column 5:'); try writeln('5,3:' + Pchar(FCols.arr[5,3])); //this raises an exception except writeln ('An exception has taken place be because 5,3 does not exist.'); end; try writeln('5,7:' + Pchar(FCols.arr[5,7])); //this raises an exception except writeln ('An exception has taken place be because 5,7 does not exist.'); end; FCols.Clear; writeln('after clear:'); try writeln('4,7:' + Pchar(FCols.arr[4,7])); //this raises an exception except writeln ('An exception has taken place be because 4,7 does not exist.'); end; FCols.Destroy; ex.Destroy; readln; end.
Version 4.0 | Generated 2025-05-03 | Home |