Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi case geht nich ?!? (https://www.delphipraxis.net/86193-case-geht-nich.html)

passsy 11. Feb 2007 09:57

Re: case geht nich ?!?
 
ich hba jetzt einfach ne lokale variable gemacht musste ich zwar hochscrollen (kraftanstrengung) und mir nen vernünftigen namen überlegen (kreatives arbeiten) aber mit viel liebe zum deteil hat es dann geklappt^^

turboPASCAL 11. Feb 2007 10:19

Re: case geht nich ?!?
 
Zitat:

Zitat von passsy
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
 var i:integer;
 begin
 inc(i);
 case i of
 1:timer2.Enabled:=true;
 2:timer3.Enabled:=true;
 3:timer4.Enabled:=true;
 4:timer5.Enabled:=true;
 5:showmessage('test');
 6:timer1.Enabled:=false;
 end;
 
 end;
sieht ja ganz schön aus aber geht nich :( woran liegts?

"i" ist eine Lokale Variable die nur innerhalb der Procedure ober Funktion besteht.
Bei dem Aufruf der Procedure bzw einer Function ist/ wird der Inhalt der Variable gelöscht.
Setze die Variable "i" als Global.

Weiterhin wird dann bei jedem Aufruf "i" bis in das Uneldliche hochgezählt sodas dein Case bei
"i" grösser 6 keine Wirkung erzielt.

Delphi-Quellcode:
var
  MyCounter: Integer;

//oder mit Vorinitialisierung

var
  MyCounter: Integer = 0;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if MyCounter < 6 then inc(MyCounter) else MyCounter = 1;

  Case MyCounter of
    1: timer2.Enabled := TRUE;
    2: timer3.Enabled := TRUE;
    3: timer4.Enabled := TRUE;
    4: timer2.Enabled := FALSE;
    5: timer3.Enabled := FALSE;
    6: timer4.Enabled := FALSE;
  end; // End of Case
 
end; // End of Procedure Timer1

inherited 11. Feb 2007 10:28

Re: case geht nich ?!?
 
Zitat:

Zitat von turboPASCAL
Weiterhin wird dann bei jedem Aufruf "i" bis in das Uneldliche hochgezählt sodas dein Case bei
"i" grösser 6 keine Wirkung erzielt.

Falsch. Mit dem letzten switch wird Timer1.Enabled auf false gesetzt, somit wird eben diese Timerroutine nicht mehr aufgerufen.

thkerkmann 11. Feb 2007 10:52

Re: case geht nich ?!?
 
Hi,

ein
Delphi-Quellcode:
const i:integer = 0;
anstelle von
Delphi-Quellcode:
var i:integer;
in der Timerroutine hätte es auch getan.

Gruss

SirTwist 11. Feb 2007 11:05

Re: case geht nich ?!?
 
Zitat:

Zitat von thkerkmann
ein
Delphi-Quellcode:
const i:integer = 0;
in der Timerroutine hätte es auch getan.

Hast du schonmal versucht, eine Konstante zu erhöhen oder zu vermindern?

Mal ein Tip am Rande: So ein Timer hat ein Attribut "Tag", das man beliebig nutzen kann und vom Typ Integer ist... Na?

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Tag := (Timer1.Tag + 1) mod 6;
  case Timer1.Tag of
    1: ...
    2: ...
    3: ...
    4: ...
    5: ...
    0: Timer1.Enabled := False; // Trotz 0 wird es als letztes aufgerufen
  end;
end;

thkerkmann 11. Feb 2007 11:09

Re: case geht nich ?!?
 
Zitat:

Zitat von SirTwist
Hast du schonmal versucht, eine Konstante zu erhöhen oder zu vermindern?

Ja, hab ich - ich mach das öfter so. Anscheinend hast du es noch nicht versucht. Ab Delphi 5? gibt es beschreibbare Konstanten.

Gruss

passsy 11. Feb 2007 11:28

Re: case geht nich ?!?
 
leute ich weiß gar nich was ihr habt das problem is scho lang gelöst

himitsu 11. Feb 2007 11:49

Re: case geht nich ?!?
 
[oh]{$WRITEABLECONST ON}[/oh]

@thkerkmann: dem ist nicht unbedingt so.

3_of_8 11. Feb 2007 11:56

Re: case geht nich ?!?
 
Widerspricht das nicht irgendwie dem Sinn einer Konstante?

xZise 11. Feb 2007 11:57

Re: case geht nich ?!?
 
Zitat:

Zitat von 3_of_8
Widerspricht das nicht irgendwie dem Sinn einer Konstante?

Ej wollt ich auch sagen :P

Amn hätte nur dem Vorteil, des direkten Setzens der Variable...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 Uhr.
Seite 2 von 3     12 3      

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