AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Herausfinden ob Breakpoint ist oder nicht - Wie?

Herausfinden ob Breakpoint ist oder nicht - Wie?

Ein Thema von torud · begonnen am 13. Jun 2012 · letzter Beitrag vom 18. Jun 2012
Antwort Antwort
Seite 2 von 3     12 3   
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 14. Jun 2012, 12:30
Hallo,

und sorry für das späte Feedback!

Vielen Dank für Deine Mühe. Ich bau´s mal bei mir ein und teste es. Ich melde mich dann mit einem abschließenden Feedback.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 14. Jun 2012, 13:58
TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60); // in 15er Schritten, da es programmintern evt. besser zu handhaben ist
Dann doch besser ohne Nummernwerte ... lieber "keine" Werte, als "falsche" Werte.

TTennisPunkte = (tp0, tp15, tp30, tp40, tpA);
PS: Bei ENUMs mit vordefinierten Werten gibt es keine Namen in der RTTI ... man kann sich sowas leider nie wieder in Strings umwandeln lassen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 14:23
Aha? Nun, ich bin immer den umständlichen Weg gegangen und habe es so gemacht:

Delphi-Quellcode:
type
  TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60);

const
  strTennisPunkte: Array[TTennisPunkte] of String = ('0', '15', '30', '40', 'A');
Ist hässlich, jedoch ists kaum schöner mit RTTI (RTTI - sofern ich das richtig in Erinnerung habe - bläst sie ja die Echsen so auf..)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.800 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 14:30
Tröste Dich, ich mache das auch oft so. Das kommt ohne RTTI aus und ist noch einigermaßen übersichtlich und somit IMO verständlich.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#15

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 14:35
Danke, ist beruhigend zu wissen, dass Pros das auch so machen =P
Aber unschön finde ichs trotzdem =/
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.800 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 15:09
Was findest Du daran unschön? Wenn man auf RTTI verzichten will, könnte man das auch mit einer case-Abfrage in einer Funktion machen und auf die Konstante verzichten.
Delphi-Quellcode:
type
  TMeinTyp = (mtEins, mtZwei, mtDrei);

function TMyClass.GetTypeAsString(Typ: TMeinTyp): string;
begin
  case Typ of
    mtEins:
      Result := 'Typ Eins';
    mtZwei:
      Result := 'Typ Zwei';
    else
      Result := 'Typ Drei';
  end;
end;
Aber: wenn man den Typ einmal erweitert, weil ein neuer Zustand hinzugekommen ist, darf man nicht vergessen, die Funktion auch zu erweitern. Dem Compiler ist das schnurz, ob sie im Fall des neuen Zustandes auch das richtige Ergebnis liefert. Hat man aber wie von Dir gezeigt eine entsprechende Array-Konstante deklariert, muss diese im genannten Fall auch erweitert werden, sonst wird nicht kompiliert, da das Array nicht die richtige Elementanzahl aufweist.

Delphi-Quellcode:
type
  TMeinTyp = (mtEins, mtZwei, mtDrei);

const
  MYTYPESTRINGS: array[TMeinTyp] of string = ('Typ Eins', 'Typ Zwei', 'Typ Drei');

function TMyClass.GetTypeAsString(Typ: TMeinTyp): string;
begin
  Result := MYTYPESTRINGS[Typ];
end;
Ist doch prima, so kann man sich vor der eigenen Schusseligkeit schützen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#17

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 15:15
Klar, deshalb mache ich das ja auch so.. Nur kommt mir eine weitere (Hilfs-)Definition ein bisschen redundant vor.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#18

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 16. Jun 2012, 13:40
Hallo,

ich klink mich mal wieder hier ein. Die Funktion funzt prima. Leider habe ich vergessen zu erwähnen, dass ich die Funktion auch für isSetPoint oder isMatchPoint benutzen will.

Dafür muss ich sicher eine andere funktion erstellen. Ich habe das mit den beiden Funtkionen schon hinbekommen, hadere aber noch ein wenig mit der Tiebreak-Situation.

In diesem Sonderfall, gibt es ja keine 0,15,30,40,A mehr, sondern es wird immer in 1er-Schritten gezählt und wartet, bis einer der Spieler 7 Punkte und mindesten eine Differenz von 2 Punkten hat.

Tiebreak kommt immer dann zum Einsatz, wenn der Spielstand in einem Satz 6-6 ist.
Dann wird für das kommende Spiel der Spieltstand auf 0-0 gesetzt.

Macht einer der Spieler einen Punkt, erhält der dafür einen Punkt und es steht 1-0.
Das geht dann immer weiter, bis es zb. 6-0 steht. Dann hat der Spieler mit den 6 Punkten 6 Satzbälle, weil die 6 mal die Chance hat seinen 7. Punkt zu erreichen.
Würde der andere Spieler in dem konstruierten Fall 6 Punkte aufholen, müsste mindesten für 2 weitere Punkte weiter gespielt werden. Alco bis es z.b. 8-6 steht. Das kann rein theoretisch ewig so weitergehen. Rekord war letztes Jahr in Wimbledon, als 2 Spieler fast 2 Tage den letzten Satz bis ca. 55-53 gespielt haben.

Nun die Frage. Ich kann ja nicht für alle Fälle so einen Riesen Enum aufbauen. Wie kann man dieses Problem lösen?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#19

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 16. Jun 2012, 14:46
Ich weiß momentan nicht, ob es derselbe Spielmodus ist oder etwas ganz anderes.. für den Fall dass es derselbe ist, wäre folgendes machbar:
Delphi-Quellcode:
type
  TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60, tp5 = 75, tp6 = 90, tp7 = 105);

var
  tp: TTennisPunkte
nun liefert dir Ord(tp) div 15 die Werte 0, 1, 2, ..., 7

Edit: Ansonsten steck dahinter mehr oder weniger dieselbe Logik - außer dass man, sobald es zum Tiebreak kommt, alles reseten muss..

Edit2: Ahh.. interessante Spiellogik.
Zum Tiebreak kann es doch auch kommen, wenn die Punkte weit über 6 sind und es ein Tie gibt, nicht? Dh. es muss min. solange gepielt werden, bis man 6 erreicht und ab da, sobald es zum Tie kommt, werden die Punkte zurückgesetzt und alles beginnt von vorne (sorgt dafür, dass wieder min 6 Punkte erreicht werden müssen)
Da es ein anderer Spielmodus ist (nicht?) würde ich da auch nen anderen EnumTyp verwenden Verwende einfach eine Zahl für den Score, kein Enum
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (16. Jun 2012 um 14:54 Uhr)
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#20

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 16. Jun 2012, 17:19
Genau,

steht es 6-6 Games muss ein weiteres Spiel gespielt werden, um einen Satzgewinner zu ermitteln.

IN dem noch zu absolvierenden Spiel, wird anders gezählt - in Einer-punkten.

Wer zuerst mind. 7 Punkte und mind. 2 Punkte mehr als der Gegner hat, hat das Spiel und damit den Satz gewonnen.
Der Satz endet dann in der Regel mit 7/6 oder 6/7. Steht dahinter noch eine Zahl in Klammern, ist das in der Regel der Punktestand des Verlierers im Tiebreak.

Also sowas hier 7/6 (2) bedeutet, dass Spieler A den Tiebreak (das letzte Spiel eines Satzes bei Stand von 6/6) mit 7 / 2 gewonnen hat.

Also zusammenfassend kann man sagen, dass Satz- oder Matchball ist, wenn
Spieler A Games im aktuellen Satz > 5 hat und Spieler B Games < 6 UND Spieler A 40 Punkte oder Vorteil hat und Spieler B 40 Punkte oder weniger hat.
Haben beide Spieler 6 Games, muss einer von beiden wenigstens 6 Punkte und der andere max. 5 Punkte haben. Der Mindestabstand von Punkten muss 2 betragen und man benötigt mind. 2 Punkte

Ich grübel mal, dass sollte sich eigentlich auch über ne if then else machen lassen. Sieht nicht schön aus, aber sollte gehen.
Danke
Tom
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf