Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - multidimensionales array als funktionsparameter


Virchov - Fr 19.03.04 17:50
Titel: multidimensionales array als funktionsparameter
Moin!


ich versuche folgendes zu machen:


Delphi-Quelltext
1:
procedure rotate3x3( a: array of array of  double; i,j,k,l: integer; tau,s: double);                    


geht natürlich nicht...


die ganze Routine sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure rotate3x3( a: array of array of  double; i,j,k,l: integer; tau,s: double);

    var g,h: double;

  begin

  g:=a[i][j];
  h=a[k][l];
  a[i][j]=g-s*(h+g*tau);
  a[k][l]=h+s*(g-h*tau);
  end;




Was ist so falsch an einem Versuch, array of array in die Deklaration reinzuschreiben?
ps Das muss ein a[1..3][1..3] werden... :bawling:


Virchov - Fr 19.03.04 17:56

sorry, fehlerbereinigt so :



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure rotate3x3( a: array of   double; i,j,k,l: integer; tau,s: double);


    var g,h: double;

  begin

  g:=a[i,j];
  h:=a[k,l];
  a[i,j]:=g-s*(h+g*tau);
  a[k,l]:=h+s*(g-h*tau);
  end;


Christian S. - Fr 19.03.04 18:00

Hallo!

In der Fehlerbereinigung kommt jetzt aber nur noch ein 1d-Array vor. :?

Naja, ich mache es trotzdem mal mit 2 Dimensionen. :-)

Es geht so

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
  TmyArray = array of array of double;

{...}

procedure rotate3x3(a : TmyArray; ...)


MfG
Peter


Virchov - Fr 19.03.04 18:16

die erste Variante var doch richtig, sorry!


Danke für den Ansatz!

Aber könnte man das machen, ohne die Funktionsparameter ändern zu müssen?
Sehr wichtig :-)!

Virchov


Virchov - Fr 19.03.04 18:27

mit typecast vielleicht?


Delete - Fr 19.03.04 19:50

Vielleicht schon, aber was bringt es dir?
Dann musst du bei jedem Aufruf casten und dann in der Prozedur zurückcasten.