Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Änderung der Caption Eigenschaft von buttons als Schleife


forerunner - So 18.04.04 15:40
Titel: Änderung der Caption Eigenschaft von buttons als Schleife
Habe mal ne Frage... Wollte das Spiel Mastermind programmieren. Vier Buttons nebeneinander. Wenn man auf einen Butten mehrmals klickt sollte es so ablaufen:

Ohne Klick ist caption vom Button "---"

beim 1. Klick "-1-"
beim 2. Klick "-2-"
beim 3. Klick "-3-"
beim 4. Klick "-4-"
und dann wieder die ANzeige vom 1. Mal klicken...

wie realisiere ich das mit der programmiersprache Delphi? mit IF THEN ELSE wird man ja nicht weit kommen, oder?

ACHTUNG: Hier schreibt ein Delphi-Newbie :-)

Danke für eure Antworten...


Christian S. - So 18.04.04 16:10

Hallo!

Zwei Sachen vorweg:
1. :welcome:
2. Bitte wähle einen Titel, der etwas über das wirkliche Problem aussagt. Es sollte zumindest klar werden, was denn das Problem ist. Einfach in Deinem ersten Beitrag auf "edit" klicken.


Nun zur Lösung:
Wenn Du nicht für jeden Button eine globale Variable einrichten möchtest, dann kannst Du es so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure increaseNumber(theButton : TButton);
var current : Integer;
begin
  if theButton.Caption = '---' then theButton.Caption := '-1-'
  else begin
    current := StrToInt(Copy(theButton.Caption, 2,1);
    current := (current mod 4) +1;
    theButton.Caption := '-' + IntToStr(current) +'-';
  end;
end;


Habe ich aus dem Kopf getippt, können also noch Fehler drin sein.


forerunner - Mo 19.04.04 16:49

Peter Lustig hat folgendes geschrieben:


Delphi-Quelltext
1:
    current := (current mod 4) +1;                    



Danke für die Hilfe. Es funktioniert!!! aber trotzdem wüsste ich gern, was in dieser Zeile passiert...


Christian S. - Mo 19.04.04 17:04

Hallo!

Kein Problem:
"current mod 4" ergibt den Rest der Division von current durch 4. Dieser Rest ist ein Wert zwischen 0 und 3. Wenn current zwischen 1 und 3 liegt, dann ist der Rest gleich current. Nur wenn current = 4 ist, dann ist der Rest = 0. (Auch bei Vielfachen von 4, aber die werden hier nicht erreicht.)
Zusammen mit dem +1 dahinter wird current, wenn es zwischen 1 und 3 liegt, um eines erhöht und wenn es 4 ist, auf 1 gesetzt.
Nochmal als Schema:

Quelltext
1:
2:
3:
4:
1 mod 4 = 1  --> (1 mod 4)+1 = 2
2 mod 4 = 2  --> (2 mod 4)+1 = 3
3 mod 4 = 3  --> (3 mod 4)+1 = 4
4 mod 4 = 0  --> (4 mod 4)+1 = 1


Hoffe, ich habe das gut erklärt.

MfG
Peter