[Overview][Types][Classes][Index] |
Sets the dimensions for the array to the specified number of columns and rows.
Source position: dynamicarray.pas line 44
public procedure TPointerPointerArray.SetLength( |
Cols: Integer; |
Rows: Integer |
); |
Cols |
|
Number of columns for the two-dimensional array. |
Rows |
|
Number of rows for the two-dimensional array. |
SetLength ensures that columns and/or rows are adjusted when the the new size values are smaller than the existing dimensions for the array. The OnDestroyItem event handler is signalled (when assigned) to perform actions needed for Pointers removed from the array elements.
Cols contains the new number of columns for the array.
Rows contains the new number of rows for the array.
|
Performs actions needed when the Pointer in an array element is removed from the array. |
|
|
Provides indexed access Pointer values in the elements for the array. |
|
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 |