| Autor |
Beitrag |
der organist
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: Di 16.12.08 19:23
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,
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 16.12.08 20:08
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.12.08 09:44
|
|
der organist 
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: Mi 17.12.08 20:21
Jo, danke, hab ich dann per Ausprobieren auch rausbekommen ==) Danke euch beiden.
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
der organist 
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: Mi 17.12.08 20:42
ich hab zwar schon als beantwortet gemeldet, hab trotzdem noch ne Frage zu meinem Text:
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,
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: 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...  . Danke nochmal für diese (wieder mal) schnelle Lösung.
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|