Autor Beitrag
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Di 16.12.08 19:23 
Hi Leutz,

ich möchte folgende Funktion in mein Programm einbauen:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 16.12.08 20:08 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Type
  TKartenDeck: Array of Karte

  function Mischen(aStapel: TKartenDeck):TKartenDeck;


oder alternativ:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Type
  TKartenDeck: Array of Karte

  procedure Mischen(var aStapel: TKartenDeck);

_________________
PROGRAMMER: A device for converting coffee into software.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.12.08 09:44 
Fast ;)
ausblenden Delphi-Quelltext
1:
2:
Type
  TKartenDeck = Array of Karte;
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mi 17.12.08 20:42 
ich hab zwar schon als beantwortet gemeldet, hab trotzdem noch ne Frage zu meinem Text:

ausblenden volle Höhe 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,

_________________
»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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mi 17.12.08 21:06 
also eher so?:

ausblenden 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.

_________________
»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