![]() |
Counter Beginnt nicht wieder mit zählen
Ich habe folgendes Problem mit dem Quellcode; der Counter zählt zwar bei 1,3,7
aber er springt nicht auf null zurück bei 6 und beginnt auch nicht wieder von vorn zu zählen bei 1,3,7, wo liegt der Fehler?
Delphi-Quellcode:
begin
Counter := 0; for g := 0 to Anzeige.Count-1 do begin if StrToInt(Anzeige.Items[g]) in [1,3,7] then Inc(Counter) else if StrToInt(Anzeige.Items[g]) in [6] then Counter := 0 ; Label6.Caption:= IntToStr(Counter) ; p.S. Anzeige = Listbox1 |
Re: Counter Beginnt nicht wieder mit zählen
Zitat:
Du hast das alles in einer Schleife. Wenn die letzte Zahl eine 6 ist ist Counter auch 0. Vielleicht nochmal durchdenken. :) MfG freak |
Re: Counter Beginnt nicht wieder mit zählen
Er soll wieder bei der Zahl 6 wieder im Label eine 0 Zeigen und wenn eine 1,3 oder 7 erscheint wieder zählen anfangen zu zählen.
|
Re: Counter Beginnt nicht wieder mit zählen
Zitat:
Zitat:
Ich sehe in diesem Code keinen Fehler. Das einzige was ich dir jetzt sagen kann ist, daß die Schleife auf jeden Fall zu schnell ist, um jede Änderung von Counter darzustellen. Da kommt das Label einfach nicht mit. Befüll dir mit Counter mal eine ListBox, dann kannst du genau überprüfen, wann Counter welchen Wert hat. PS: Die Zeile
Delphi-Quellcode:
wäre anders wahrscheinlich einfacher:
else if StrToInt(Anzeige.Items[g]) in [6] then
Delphi-Quellcode:
else if Anzeige.Items[g] ='6' then
|
Re: Counter Beginnt nicht wieder mit zählen
Sorry, is schon spät und das Filmchen nebenbei hat sein übriges getan.
Also noch mal kurz zurück mein hauptproblem liegt wohl eindeutig in dieser Zeile würde ich sagen
Delphi-Quellcode:
Ich möchte einfach, dass wenn die 6 erscheint der Counter auf null schaltet und wenn nun wieder eine 1,3, oder 7 erscheint er wieder diese befehlszeile ausführt:
else if StrToInt(Anzeige.Items[g]) in [6] then
Counter := 0 ;
Delphi-Quellcode:
Irgendwie führt diese Befehlszeile dann aus, selbst wenn ich die drücke.
if StrToInt(Anzeige.Items[g]) in [1,3,7] then
Inc(Counter)
Delphi-Quellcode:
else if StrToInt(Anzeige.Items[g]) in [6] then
Counter := 0 ; Dankeschön und gute Nacht! |
Re: Counter Beginnt nicht wieder mit zählen
OK, also meine Tips scheinen dich nicht zu interessieren...
//Edit: Mit der Zeile hier kann ich immer noch nich so recht was anfangen... Zitat:
|
Re: Counter Beginnt nicht wieder mit zählen
Da ich ein Newbie bin, versuch ich ja alles so gut umzusetzen wie ich verstehe und ausdrücken kann:
Irgendwie führt diese Befehlszeile dann aus, selbst wenn ich die 1 drücke. Ich meinte da müsste doch der Counter wieder zählen. |
Re: Counter Beginnt nicht wieder mit zählen
Ich versteh nicht, was du mit "drücken" meinst? Du gehst doch die Items einer ListBox oä durch. Was hat das mit "drücken" zu tun?
|
Re: Counter Beginnt nicht wieder mit zählen
ein gedanklicher fehler von mir, da ich den Button "1" DRÜCKE der nun als 1 in der Listbox erscheint
|
Re: Counter Beginnt nicht wieder mit zählen
Ah OK. Das is halt immer das Problem. Ständig stellen die Leute Fragen und gehen davon aus, daß jeder schon im Voraus genau weiß, wie das ganze aufgebaut is. Aber ohne Informationen stochert man halt nur im Dunklen rum...
So, wie immer, wenn mir jemand erzählen will, daß ein Code nicht funktioniert, in dem ich keinen Fehler finden kann, hab ich das mal selber ausprobiert. Und ich kann nur sagen: Wo siehst du das Problem? Bei mir funktioniert das. Nur verstehe ich den Aufbau der Funktion nicht ganz.
Delphi-Quellcode:
Ich hab jetzt hier mal mit Case gearbeitet. Damit ersparst du dir das IntToStr und die Sets. Allerdings mußte ich hierfür den Str durch das [1] in ein Char umwandeln. Das sollte aber nichts ausmachen, da ich mal davon ausgehe, daß sowieso nur Zahlen <= 9 benutzt werden, oder? Falls nicht, dann machs einfach wieder so:
Counter := 0;
for g := 0 to ListBox1.Items.Count-1 do Case ListBox1.Items[g][1] Of '1','3','7': inc(Counter); '6' : Counter := 0; End; Label6.Caption:= IntToStr(Counter) ;
Delphi-Quellcode:
Counter := 0;
for g := 0 to Anzeige.Items.Count-1 do If StrToInt(Anzeige.Items[g]) in [1,3,7] Then inc(Counter) else If Anzeige.Items[g] = '6' Then Counter := 0; Label6.Caption:= IntToStr(Counter) ; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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