![]() |
< und > deklarieren oder sowas
Hi,
also der Titel sagt ja erstmal nicht viel, denn das Problem war das ich nicht wusste wie ich es nennen kann. Aber Egal. Mein Problem: ich möchte Karten in ihrer Wertigkeit geordnet haben. Also Schell 7 größer als grün Unter. Für die kartenbeschreibung hätte ich gedacht Schell 7 = S7 , Grün Unter = GU. Aber wie kann ich dies nun der größe nach ordnen bzw. angeben? Geht: S<H<G<K (schell<herz<grün<kreuz)? Hille PS: Bin noch nicht alzulange beim programmieren, aber es kann auch etwas komplizierter sein. |
Re: < und > deklarieren oder sowas
Erstelle dir einen Aufzählungstyp...
Delphi-Quellcode:
MfG
type
TKarten = (schell, herz, gruen, kreuz); const Karten:array[TKarten] of string = ('schell', 'herz', 'grün', 'kreuz'); Thorsten |
Re: < und > deklarieren oder sowas
Und wie kann ich dann schell < herz machen?
PS: Soweit war ich im lernen noch nicht. Kannst du mir das genauer erklären? Hille |
Re: < und > deklarieren oder sowas
Delphi-Quellcode:
jetzt sollte es schon möglich sein zu sagen
type
TFarbe = (schell, herz, gruen, kreuz); TWert = (6,7,8,9,10,U,O,K,Sau); TKarte = record farbe: TFarbe; Wert: TWert; end;
Delphi-Quellcode:
Wenn aber
var karte1,karte2: TKarte;
if (karte1.farbe < karte2.farbe) or ((karte1.farbe = karte2.farbe) and (karte1.wert < karte2.wert)) then Showmessage('Karte1 weniger wert als Karte2!'); Ansonsten musst du dase alles nach integer casten, also Delphi sagen, es soll die variable wie eine zahl behandeln:
Delphi-Quellcode:
if (Integer(karte1.farbe) < Integer(karte2.farbe)) ...... //usw. usf.
|
Re: < und > deklarieren oder sowas
Danke,
aber das wird bestimmt richtig viel, bei 32 verschiedenen Karten! Und record, was heißt das? Hille |
Re: < und > deklarieren oder sowas
Also, ich weiss ja nicht was du genau vorhast...
Die Elemente eines Aufzählungstyp haben eine Wertigkeit. (So wie die Reihenfolge in der Deklaration) Aufzählungstypen sind nur für die innere Verarbeitung da. Sie machen deinen Quellcode übersichtlicher. Ausgeben kann man sie nicht, deshalb das konstante Array. Mit Karten[herz] kommt man nun an den Text für das Element herz. Wenn du jetzt mit Mengen arbeiten würdest, dann könntest du mit einer FOR-Schleife die Menge überprüfen. Ist das zu testende Element in der Menge, wird es ausgegeben. Durch die innere Reihenfolge des Typs, wird immer alles genau in dieser Reihenfolge ausgegeben. Beim zusammenstellen der Menge brauchst du dir dann keine Gedanken mehr über die Reihenfolge zumachen. Doppelte Elemente werden dann auch gleich ausgeschlossen bzw. kommen nur einmal vor. Beispiel...
Delphi-Quellcode:
@DGL-luke:
type TKartenmenge = set of TKarten;
var Karte:TKarten; begin Kartenmenge:=[herz]; for Karte:=low(TKarten) to high(TKarten) do if Karte in Kartenmenge then Ausgabe von Karten[Karte] end; nix casten! Da nimmt man die Ordinalzahl (Ord-Funktion) Und ausserdem haben Elemente von Aufzählungstypen schon von sich aus eine Reihenfolge und können über diese miteinander verglichen werden. MfG Thorsten |
Re: < und > deklarieren oder sowas
Danke, damit kann ich schon was anfangen. Ich werde mal ausprobieren ob es so
klappt wie ich es mir vorgestellt habe. Hille |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz