Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - function of Array
der organist - Di 16.12.08 19:23
Titel: function of Array
Hi Leutz,
ich möchte folgende Funktion in mein Programm einbauen:
Delphi-Quelltext
1:
| function Mischen(aStapel: Array of Karte):Array of Karte; |
Strg+F9 sagt dann aber: Identifier expected but ARRAY found.
Wie kann ich eine solche Funktion einbauen?
MfG,
Xentar - Di 16.12.08 20:08
Delphi-Quelltext
1: 2: 3: 4:
| Type TKartenDeck: Array of Karte
function Mischen(aStapel: TKartenDeck):TKartenDeck; |
oder alternativ:
Delphi-Quelltext
1: 2: 3: 4:
| Type TKartenDeck: Array of Karte
procedure Mischen(var aStapel: TKartenDeck); |
Delete - Mi 17.12.08 09:44
Fast ;)
Delphi-Quelltext
1: 2:
| Type TKartenDeck = Array of Karte; |
der organist - Mi 17.12.08 20:21
Jo, danke, hab ich dann per Ausprobieren auch rausbekommen ==) Danke euch beiden.
der organist - Mi 17.12.08 20:42
ich hab zwar schon als beantwortet gemeldet, hab trotzdem noch ne Frage zu meinem Text:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| unit UAktion;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UKarte, StdCtrls;
type Aktion=class; TKartendeck=Array of Karte; function Mischen(aStapel:TKartendeck):TKartendeck;
implementation
function TKartendeck.Mischen(aStapel:TKartendeck):TKartendeck; var k, l, zufallskarte: Integer;
begin for k := 1 to Length(Mischen) do Mischen[k].Wert:=0; SetLength(Mischen,Length(aStapel)); for k := 1 to 8 do begin for l := 1 to Length(Mischen) do begin zufallskarte:=Random(Length(Mischen))+1; if Mischen[zufallskarte].Wert=0 then Mischen[zufallskarte]:=aStapel[l]; end; end; end;
end. |
Ich will also in anderen Units z.B. Aktion.Mischen aufrufen, allerdings brauche ich (oder nicht??) einen Kartendecktyp, um nen ganzen Kartenstapel in Arrayform in meine Funktion zu übergeben und die Funktion soll dann auch einen Kartenstaperl zurückgeben...
MfG,
Delete - Mi 17.12.08 20:51
Zum Einen ist Deine Klasse ziemlich leer (entspricht TObject), zum Anderen würde ich den Stapel als Var-Parameter übergeben und innerhalb der Funktion ändern.
Xentar - Mi 17.12.08 20:54
Jo, entweder als var Parameter, oder wenn du es unbedingt als Function machen willst, solltest du auch "result" benutzen.
Delete - Mi 17.12.08 20:57
Das Dumme ist bei solchen Rückgabewerten, dass man sie auch noch freigeben muss. Das wird gern vergessen.
der organist - Mi 17.12.08 21:06
also eher so?:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type Aktion=class private public procedure Mischen(var aStapel:Array of Karte); end; |
sieht auch ganz gut aus, muss nur am Funktionsinhalt ein bisschen herumbasteln...:D. Danke nochmal für diese (wieder mal) schnelle Lösung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!