[Overview][Types][Classes][Index] Reference for unit 'DynamicArray' (#lazutils)

TPointerPointerArray.MoveColRow

Moves a column or row at the specified ordinal position to a new location in the array.

Declaration

Source position: dynamicarray.pas line 47

public procedure TPointerPointerArray.MoveColRow(

  IsColumn: Boolean;

  FromIndex: Integer;

  ToIndex: Integer

);

Arguments

IsColumn

  

True if a column is moved in the method. False if a row is moved.

FromIndex

  

Ordinal position for the column or row moved in the method.

ToIndex

  

New ordinal position where the column or row is stored.

See also

TFPList.Move

Example

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