Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: 1- und 2 Dimensionales Array vergleich

  Alt 24. Okt 2004, 01:07
Moin,

ich habe die gleichen Probleme gesehen und hier mal einen erweiterten Vorschlag...

Delphi-Quellcode:
type
  TMyArray = array of boolean;
  TMyArrays = class
  private
    _Arrays:array of TMyArray;
    function GetArray(index: word): TMyArray;
  public
    constructor create;
    destructor destroy; override;
    function Count:word;
    procedure addArray(x:array of boolean);
    property Arrays[index:word]:TMyArray read GetArray;
  end;

  :

{ TMyArrays }

procedure TMyArrays.addArray(x: array of boolean);
var i, j:integer;
    abbruch:boolean;
begin
  abbruch:=false;
  i:=0;
  while (i < length(_Arrays)) and not abbruch do begin
    if length(_Arrays[i]) = length(x) then begin
      j:=0;
      while (j < length(x)) and not abbruch do begin
        abbruch:=(x[j] <> _Arrays[i][j]);
        inc(j);
      end;
      abbruch:=not abbruch;
    end;
    if not abbruch then
      inc(i);
  end;
  if not abbruch then begin
    setlength(_Arrays, length(_Arrays)+1);
    setlength(_Arrays[length(_Arrays)-1], length(x));
    for i:=1 to length(x) do
      _Arrays[length(_Arrays)-1][i-1]:=x[i-1];
  end;
end;

function TMyArrays.Count: word;
begin
  Result:=length(_Arrays);
end;

constructor TMyArrays.create;
begin
  setlength(_Arrays, 0);
end;

destructor TMyArrays.destroy;
begin
  setlength(_Arrays, 0);
  inherited;
end;

function TMyArrays.GetArray(index: word): TMyArray;
begin
  Result:=_Arrays[index];
end;
Diese Klasse realisiert dein Problem.

und hier ein Beispiel für den Aufruf:

Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var a, b:array of boolean;
    MyArrays:TMyArrays;
begin
  setlength(a, 1);
  a[0]:=true;
  setlength(b, 1);
  b[0]:=false;
  MyArrays:=TMyArrays.create;
  try
    MyArrays.addArray(a);
    MyArrays.addArray(b);
    showmessage(inttostr(MyArrays.Count));
  finally
    MyArrays.Free;
  end;
end;
hoffe es ist zuverstehen und es hilft dir...

MfG
Thorsten
  Mit Zitat antworten Zitat