Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - festes Array nicht an dyn. Array übergebbar


Xanyn - Di 25.05.04 15:30
Titel: festes Array nicht an dyn. Array übergebbar
Hallo,

ich habe das Problem, dass ich kein festen Array, auf einen dynamischen Array übergeben kann.
Das ganze sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
AusgabeMerge(a: array of Real; lo, hi: integer):minmax;
...
SetLength(pufferFix, (dCount div 2));
pufferMain:=AusgabeMerge(pufferFix, lo, hi);

Der Array muss aber dynamisch sein, da er mit dCount erst zur laufzeit festgemacht wird und sich während der laufzeit ändert.

Wie kann ich klar machen das in "AusgabeMerge" das feste Array auf den dynamischen genommen wird.

Danke
Steffen

Moderiert von user profile iconPeter Lustig (15:31, 25.05.2004): Code- durch Delphi-Tags ersetzt


Anonymous - Di 25.05.04 15:48

So sollte es gehn:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
type
 TDynRealArray = array of Real;

...

function AusgabeMerge(a: TDynRealArray; lo, hi: integer):minmax;

...

var
 pufferFix: TDynRealArray;

...

SetLength(pufferFix, (dCount div 2));
pufferMain:=AusgabeMerge(pufferFix, lo, hi);


Xanyn - Di 25.05.04 23:43

Und warum funktioniert das so?
ich gebe doch eigentlich nur einen anderen namen, also definiere mir einen typ und der macht dann eh das gleiche. Spart doch nur schreibarbeit ... oder passiert bei der typ-deklaration noch was myteriöses?

Danke Steffen


EUOCheffe - Mi 26.05.04 04:32

Guck mal in der Delphi Hilfe unter "Array" nach. Da bekommst du gleich mehrere Themen angezeigt:

Zitat:
-Dynamic arrays
-Open array parameters
-Static arrays
-Variant open array parameters

Zitat:
Note

The syntax of open array parameters resembles that of dynamic array types, but they do not mean the same thing. The previous example creates a function that takes any array of Char elements, including (but not limited to) dynamic arrays. To declare parameters that must be dynamic arrays, you need to specify a type identifier:

type TDynamicCharArray = array of Char;
function Find(A: TDynamicCharArray): Integer;

For information about dynamic arrays, see Dynamic arrays.