Hallo, bin neu hier und möchte Eure Hilfe.
Ich spiele ein bisschen mit
OOP und baue ein Objekt für ein Kartenspiel.
Das Objekt (TCard) kann ich initialisieren (create) und ein Blatt-Array (vom Type TCard) von mehreren Karten generieren, mischen und rudimentär darstellen.
Um das Blatt auf mehrere Stapel/Spieler aufzuteilen nutze ich mehrere Blatt-Arrays, denen ich per Copy(Blatt-Array, Index, Anzahl) einen Kartenstapel zuweise, dabei bekomme ich einen Fehler "Inkompatible Typen" obwohl die vom gleichen Type sind.
Kann mir das jemand erklären?
Hier folgen Auszüge meines Quellcodes:
type
CardWert = (ass,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,z ehn,bube,dame,koenig,jokerw);
CardFarbe = (kreuz,pik,herz,karo,jokerf);
CardMotiv = TBitmap;
TCard = class(TObject)
private
{ private declarations }
Farbe : CardFarbe;
Wert : CardWert;
Count : Integer;
Motiv :CardMotiv;
MotivBack : CardMotiv;
path:string;
Zahl:integer;
protected
{ protected declarations }
public
{ public declarations }
constructor Create(CWert:CardWert; CFarbe : CardFarbe; CCount : Integer; CMotiv, BMotiv :CardMotiv; pa:string; za:integer);
published
{ published declarations }
end;
...
...
...
var
Form1: TForm1;
Blatt: array of TCard; // alle Karten
a , b : array of TCard;
tb : array of TCard;
implementation
...
es folgen der constructor create ....
und weitere prozeduren ...
...
dann kommt die Prozedur mit dem Fehler:
procedure TForm1.Abheben;
var a,t,zz,i : integer;
begin
zz:=0;
repeat
randomize;
a:=random(length(blatt));
inc(zz);
until ((a > 30) and (a < 90)); // Abheben min. 30 max. 90 Karten von 109
setlength(tb,a);
tb:= copy(blatt,0,a-1); {inkompatible typen????}
{ TODO : Aufklärung "Inkompatible Typen" ???? }
end;