![]() |
If ... then problem
ich habe nochmal ein problem... diesmal hoffentlich beim richtigen ort :oops:
nun habe ich wirklich ein problem... aber erst mal den Quelltext:
Delphi-Quellcode:
nun bei einem kleinen Spiel habe ich quasi eine Punkteliste gemacht.
if s=20 then
if z>w20 then begin ptsw20.Caption:=inttostr(z); rekw20.Caption:=(name.text); end; if s=50 then if z>w50 then begin ptsw50.Caption:=inttostr(z); rekw50.caption:=(name.Text); end; if s=100 then if z>w100 then//fehler ptsw100 wird immer upgedatet begin ptsw100.caption:=inttostr(z); rekw100.Caption:=(name.Text); end; nun zum problem ptsw20/ptsw50/ptsw100 sollten nur ersetzt werden, wenn z ein höherer wert erreicht hat als bisher auf dem label "gespeichert" war. nur das Problem ist: dass bei ptsw20 die Regel stimmt und die anzeige nur aktualisiert wird wenn eine höhere zahl erreicht wurde. jedoch bei ptsw50/ptsw100 werden die Zahlen immer angebasst, auch wenn sie niedriger sind. hat jemand eine Idee? |
Re: If ... then problem
Delphi-Quellcode:
Welchen Wert hat den z und w100 zu dem Zeitpunkt?w20 := StrToInt(ptsw20.caption); w50 := StrToInt(ptsw50.caption); w100 := StrToInt(ptsw100.caption); if s=20 then begin if z > w20 then begin ptsw20.Caption:=inttostr(z); rekw20.Caption:=(name.text); end; end else if s=50 then begin if z > w50 then begin ptsw50.Caption:=inttostr(z); rekw50.caption:=(name.Text); end; end else if s=100 then if z > w100 then//fehler ptsw100 wird immer upgedatet begin ptsw100.caption:=inttostr(z); rekw100.Caption:=(name.Text); end; Grüße Klaus [edit] if..then etwas angepasst [/edit] |
Re: If ... then problem
oh sry voll vergessen :)
z ist die momentan (in diesem Spiel) erreichte Punktzahl w100 ist die höchste Punktzahl die bisher erreicht wurde (w20,w50,w100 sind verschiedene Spielmodi) |
Re: If ... then problem
Hast du schonmal Breakpoints gesetzt und zur Laufzeit geguckt, welche Werte die Variablen haben? :gruebel:
MfG freak |
Re: If ... then problem
Zitat:
oder ist w100 die Punktzahl und s=100 der Spielmodus? Grüße Klaus |
Re: If ... then problem
jepp ich zeige es dir mal in einem Beispiel:
es ist ein würfelSpiel die Punktetabelle ist in w20 (würfel mit 20 seiten) w50 (50 Seitem) und w100 (100 seiten) Der Spielmodus wird durch eine eingabe definiert. (hier siet man die zuteilung für punkte und spielernamen) geholte punkte(z):200 Rekord(w100): 250 obwohl if z>w100 then übernimmt w100 die zahl 200 |
Re: If ... then problem
hast Du Dir den Code von mir oben mal angeschaut und ausprobiert?
hier kommt er nochmals aber mit case anstatt if then else zur Spielmoduserkennung.
Delphi-Quellcode:
w20 := StrToInt(ptsw20.caption);
w50 := StrToInt(ptsw50.caption); w100 := StrToInt(ptsw100.caption); case s of 20 : begin if z > w20 then begin ptsw20.Caption:=inttostr(z); rekw20.Caption:=(name.text); end; end; 50 : begin if z > w50 then begin ptsw50.Caption:=inttostr(z); rekw50.caption:=(name.Text); end; end; 100: begin // hier mal ein breakpoint setzen mit F8 weitergehen und z und w100 anschauen if z > w100 then // ptsw100 wird upgedatet wenn z > w100 ist begin ptsw100.caption:=inttostr(z); rekw100.Caption:=(name.Text); end; end; end; //case Zitat:
z ist kleiner als w100 und w100 beibt auf 250. z und w100 kannst Du dir anschauen, indem Du die Variable markierst und dan ctrl+f5 drückst. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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-2025 by Thomas Breitkreuz