![]() |
case geht nich ?!?
Delphi-Quellcode:
sieht ja ganz schön aus aber geht nich :( woran liegts?
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; |
Re: case geht nich ?!?
i hat am anfang einen unbestimmten Wert beispielsweise 767567576, du musst die variable initialisieren.
Gruß |
Re: case geht nich ?!?
Moin Pascal,
"geht nicht" hat ja nicht wirklich Aussagekraft, aber: Du verwendest eine lokale Variable, die nicht einmal initialisiert wird, also einen Zufallswert enthält. Initialsierung nutzt Dir aber auch nichts, da der Wert nach dem verlassen der Routine verworfen wird. Du müsstest die also woanders unterbringen. |
Re: case geht nich ?!?
Delphi-Quellcode:
Hättest deinen Code etwas strukturiert, wäre dir das fehlende "end" sofort ins Auge gesprungen ;)
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer; begin inc(i); case i of 1..4: timer5.Enabled:=true; 5: showmessage('test'); 6: timer1.Enabled:=false; end; end; end; |
Re: case geht nich ?!?
ah ok danke leute ich habs dann gelöst.
ich hab gedacht das n integer am anfang immer 0 is naja bin ja noch nich so lang dabei^^ das end hab ich nur vergessen rein zu kopieren^^ |
Re: case geht nich ?!?
Zitat:
:zwinker: greetz Mike |
Re: case geht nich ?!?
leddl, schau dir deinen Code mal bitte genauer an, du hast ein end zuviel !
Gruß |
Re: case geht nich ?!?
:oops: Man sollte nach zuviel Java-Programmierung nich mal kurz zwischen Dusche und Essen ne Antwort zu ner Delphi-Frage schreiben :lol:
|
Re: case geht nich ?!?
Moin Pascal,
Zitat:
Aber mit einer lokalen Variable kannst Du das Problem auch nicht lösen, wenn Du sie initialisierst... |
Re: case geht nich ?!?
Also passy, wenn du i zu anfang der Prozedur auf 0 setzt, dann kann ich dir für jeden Aufruf der Funktion vorraus sagen, dass er machen wird ... Und zwar immer "timer5.enabled := true"
@ leddl, aber was ist dann mit dem switch :P |
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^^
|
Re: case geht nich ?!?
Zitat:
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 |
Re: case geht nich ?!?
Zitat:
|
Re: case geht nich ?!?
Hi,
ein
Delphi-Quellcode:
anstelle von
const i:integer = 0;
Delphi-Quellcode:
in der Timerroutine hätte es auch getan.
var i:integer;
Gruss |
Re: case geht nich ?!?
Zitat:
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; |
Re: case geht nich ?!?
Zitat:
Gruss |
Re: case geht nich ?!?
leute ich weiß gar nich was ihr habt das problem is scho lang gelöst
|
Re: case geht nich ?!?
[oh]{$WRITEABLECONST ON}[/oh]
@thkerkmann: dem ist nicht unbedingt so. |
Re: case geht nich ?!?
Widerspricht das nicht irgendwie dem Sinn einer Konstante?
|
Re: case geht nich ?!?
Zitat:
Amn hätte nur dem Vorteil, des direkten Setzens der Variable... |
Re: case geht nich ?!?
Erinnert mich irgendwie an den alten Mathematikerwitz: "Sei epsilon kleiner 0." :lol:
Ich meinte, bei einer Konstante gehe ich davon aus, dass sie IMMER den gleichen Wert hat. Eine Konstante zu verändern ist meiner Meinung sinnlos. |
Re: case geht nich ?!?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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