uses
{...} TypeInfo
{...};
type
TKartenwert = (kwBube, kwDame, kwKoenig);
// natürlich zu verfollständigen, so wie alles weitere
TKartenfarbe = (kfEichel, kfLaub
{...});
TKarte =
class(TObject)
private
FKartenwert: TKartenwert;
FKartenfarbe: TKartenfarbe;
FKartenmotiv: TBitmap;
procedure LoadKartenmotiv();
public
constructor Create(AKartenwert: TKartenwert; AKartenfarbe: TKartenfarbe);
end;
function KartenwertToString(AKartenwert: TKartenwert):
String;
function KartenfarbeToString(AKartenfarbe: TKartenfarbe):
String;
implementation
procedure TKarte.LoadKartenmotiv();
var
Filename :
String;
begin
Filename := KartenwertToString(FKartenwert) + '
_' + KartenfarbeToString(FKartenfarbe) + '
.bmp';
if (
not FileExists(Filename))
then
raise Exception...
if (Assigned(FBitmap))
then
FreeAndNil(FBitmap);
FBitmap := TBitmap.Create();
FBitmap.LoadFromFile(Filename);
end;
constructor TKarte.Create(AKartenwert: TKartenwert; AKartenfarbe: TKartenfarbe);
begin
inherited Create();
FKartenwert := AKartenwert;
FKartenfarbe := AKartenfarbe;
LoadKartenmotiv();
end;
// hier wende ich einen kleinen Trick an, da ich faul bin :mrgreen:
// daher muss TypInfo in die uses Liste!
function KartenwertToString(AKartenwert: TKartenwert):
String;
begin
Result := Delete(GetEnumName(TypeInfo(TKartenwert), Integer(AKartenwert)), 1, 2)
end;
function KartenfarbeToString(AKartenfarbe: TKartenfarbe):
String;
begin
Result := Delete(GetEnumName(TypeInfo(TKartenfarbe), Integer(AKartenfarbe)), 1, 2)
end;