Hallo,
ich brauche dringen schnell einen Tipp dazu.
Ich habe folgendes versucht, aber da meckert der Compiler
FUNCTION name (matrix : ARRAY [1…5,1…5] of INTEGER)
Ich sitze gerade im Rechenzentrum und versuche meine Programmierungsaufgabe zu loesen. Leider ist mein Wissen ueber Pascal sehr beschraenkt. In C++ koennte ich euch das herunterbeten, aber an der Uni foltert man uns mit Pascal 
Fuer eure Hilfe waere ich sehr dankbar!
Gruss Ben
Type TMatrix = ARRAY [1…5,1…5] of INTEGER;
FUNCTION name (matrix : TMatrix):ERGEBNISTYP; //!!! Funktionen müssen einen Ergebnistyp haben
So sollte es klappen.
Array undefinierter Größe und Dimension kannst du so übergeben (nur ein doofes Beispiel):
Type
TVektor: Array[1..5] of Integer;
TMatrix: Array[1..5,1..5] of Integer;
TTensor: Array[1..5,1..5,1..5] of Integer;
FUNCTION name (VAR data; Dim:Byte):Integer;
begin
case Dim of
1: Result := TVektor(data)[1];
2: Result := TMatrix(data)[3,2];
3: Result := TTensor(data)[2,5,3];
end;
end;
Gruß
Jochen
Hallo Jochen,
Besten Dank, so kann ich jetzt meine Aufgaben loesen. Ich finde es zwar etwas umstaendlich, dass man immer einen Typ definieren muss, aber was solls. Eigentlich ist es doch nur ein syntaktisches Problem. Finde ich ein etwas merkwuerdiges Verhalten.
Type TMatrix = ARRAY [1…5,1…5] of INTEGER;
FUNCTION name (matrix : TMatrix):ERGEBNISTYP; //!!! Funktionen
müssen einen Ergebnistyp haben
Klar, hatte ich vergessen
FUNCTION name (VAR data; Dim:Byte):Integer;
Aha, also kann man unbesimmte Daten (void) auch uebergeben, ohne einen Typ anzugeben. Die muss man nachher dann aber immer casten. Geht das nur wenn die Daten als VAR uebergeben werden, oder auch sonst?
begin
case Dim of
1: Result := TVektor(data)[1];
2: Result := TMatrix(data)[3,2];
3: Result := TTensor(data)[2,5,3];
end;
end;
Gruss Ben
Hallo Ben!
Aha, also kann man unbesimmte Daten (void) auch uebergeben,
ohne einen Typ anzugeben. Die muss man nachher dann aber immer
casten. Geht das nur wenn die Daten als VAR uebergeben werden,
oder auch sonst?
Ja und Nein.
Die Angabe „VAR“ zwingt den Compiler, nicht die Variable zu übergeben, sondern einen Zeiger auf den Speicherbereich. Es ist so einfacher Lesbar, als direkt einen Zeiger zu übergeben. Eine gleichwertige Lösung wäre z.B. auch diese:
Function Name(Parameter:stuck\_out\_tongue:ointer):Integer;
begin
With TIgrendeinTyp(Parameter^) Do
...
end;
...
Text := 'Hallo';
Value := Name(PChar(Text));
Zahl := 123;
Value := Name(@Zahl);
Objekt := TObject.Create;
Value := Name(Objekt);
Das war’s.
Gruß, Jochen
Hallo Jochen,
Ja und Nein.
Die Angabe „VAR“ zwingt den Compiler, nicht die Variable zu
übergeben, sondern einen Zeiger auf den Speicherbereich. Es
ist so einfacher Lesbar, als direkt einen Zeiger zu übergeben.
Natuerlich, das macht Sinn. Zeiger, das klingt wieder vertraut 
Vielen Dank nochmal.
Gruss Ben