![]() |
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) ; |
Re: Counter Beginnt nicht wieder mit zählen
Zu 1.) die Ends hab ich gerad etwas nach oben verschoben, läuft aber alles trotzdem genauso
zu2.) und3.) Ich bin hier bei Delphi noch recht frisch dabei, sehen wir mal von der Schule ab ist das mein erstes Programm was ich machen will, also eigentlich sehe ich im moment nur das Ziel, der Weg? Wer weis. :wall: Nun mal sehen, Problem; Ich wollte nicht das der Counter(so wie im Moment stehenbleibt, sondern er sollte die allten werte löschen, also sich auf null setzen und bei [1,3,7] wieder zählen von vorn. Bsp. Counter; 1---2---3---0---1---2---3---4---0 Item;-----1---1---7---6---1---7---7---3---6 P.S. es gibt auch Zahlen über 9 |
Re: Counter Beginnt nicht wieder mit zählen
Zitat:
Gib doch mal eine Beispielreihe aus, die der Code bei dir jetzt ausspuckt. Dafür wäre es vielleicht praktisch, das ganze so umzubauen, daß du auch die Zwischenschritte angezeigt bekommst.
Delphi-Quellcode:
Dann poste mal, was danach so alles in der ListBox steht.
Counter := 0;
for g := 0 to Anzeige.Items.Count-1 do begin If StrToInt(Anzeige.Items[g]) in [1,3,7] Then inc(Counter) else If Anzeige.Items[g] = '6' Then Counter := 0; ListBox1.Items.Add(Anzeige.Items[g] + ' ---> ' + IntToStr(Counter)); end; Label6.Caption:= IntToStr(Counter) ; Zitat:
|
Re: Counter Beginnt nicht wieder mit zählen
Jo, hab ich auch gerade festgestellt.
Mein Problem ergibt sich dadurch, dass ich meine aktuelen Zahlen oben erscheinen lasse.
Delphi-Quellcode:
Dass wollte ich auch so beibehalten
procedure TForm1.Button4Click(Sender: TObject);
Var a:String; begin a:='1' ; Anzeige.Items.Insert(0, a); |
Re: Counter Beginnt nicht wieder mit zählen
Hat sich das jetzt erledigt? :gruebel:
Wenn es dir nicht weh tut, kannst du dann mal den Code zeigen, der dein Problem jetzt löst? :mrgreen: MfG freak |
Re: Counter Beginnt nicht wieder mit zählen
*LOL* göttlicher Thread...
Kann es sein, daß er mit "Counter" eigentlich "g" meint? |
Re: Counter Beginnt nicht wieder mit zählen
Ich hoffe nicht. :mrgreen:
MfG freak |
Re: Counter Beginnt nicht wieder mit zählen
So wie ich das verstehe, ist das Problem noch nicht gelöst. :gruebel:
Warum postest du deinen Code denn nur so sporadisch? Bei solchen Codeschnipseln kann man wirklich nur raten. :roll: Du hast also für jede Zahl einen eigenen Button? Auf Klick wird die aktuelle Zahl oben eingefügt. Und wann führst du jetzt die Schleife aus? Poste doch einfach mal ein bißchen Code, sonst macht das wirklich keinen Spaß, dir zu helfen. Ich kann halt wirklich nur rumraten. Und dafür ist mir meine Zeit echt zu schade. @Catbytes: Lies dir den Thread nochmal genau durch, dann wirst du bemerken, daß du so falsch liegst, wie man nur falsch liegen kann. Was würde denn das bringen? Sobald sich eine '6' in der ListBox befindet, haste ne astreine Endlosschleife. Sauber nachgedacht! :roll: |
Re: Counter Beginnt nicht wieder mit zählen
Zitat:
Zitat:
Deine Geduld bewundere ich übrigens :mrgreen: |
Re: Counter Beginnt nicht wieder mit zählen
Hey, ich hab gestern bei nem ähnlichen Topic-Verlauf 100€ verdient. Ich hab halt noch Hoffnung! :lol:
Der Satzbau war - gerade am Anfang des Topics - wirklich furchtbar, und man mußte viel raten. Keine Frage. Allerdings finde ich es dann doch eigentlich recht einleuchtend (auch aus dem Code heraus), daß es mit dem Zählen eben um die Variable "Counter" geht, die das Vorkommen der Zahlen 1,3 und 7 zählen soll. Eine 6 setzt halt sozusagen nur den Zählerstand wieder auf 0. Eigentlich doch recht logisch. Das größere Problem war, ihm klarzumachen, daß sein Code doch eigentlich genau das macht, was er will. :mrgreen: Irgendwie wollte er das nicht einsehen. :lol: |
Re: Counter Beginnt nicht wieder mit zählen
Nun, vielleicht hilft es wenn man sich das
![]() Ich muss aber auch zugeben dass ich sein Problem mit dem Code nicht verstanden habe. Bei 1,3,7 zaehlen, bei 6 resetten. Wo ist das Problem? :gruebel: Greetz alcaeus |
Re: Counter Beginnt nicht wieder mit zählen
Liste der Anhänge anzeigen (Anzahl: 1)
Insgesamt werde der Code zulang aber im wesentlichen sieht er so aus
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var a: String; begin a:='1' ; Anzeige.Items.InsertObject(0, a,Pointer(clRed)); end; procedure TForm1.Button3Click(Sender: TObject); Var a:String; begin a:='3' ; Anzeige.Items.InsertObject(0, a,Pointer(clRed)); end; procedure TForm1.Button5Click(Sender: TObject); Var a:String; begin a:='5' ; Anzeige.Items.InsertObject(0, a,Pointer(clRed)); end; procedure TForm1.Button6Click(Sender: TObject); Var a:String; begin a:='6' ; Anzeige.Items.Insert(0, a); end; procedure TForm1.Button7Click(Sender: TObject); Var a:String; begin a:='7' ; Anzeige.Items.InsertObject(0, a,Pointer(clRed)); end; procedure TForm1.NeustartClick(Sender: TObject); begin Anzeige.Items.Clear; end; procedure TForm1.AnzeigeDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var g, Counter: Integer; begin with Control as TListBox do begin Canvas.FillRect(Rect); Canvas.Font.Color := TColor(Items.Objects[Index]); Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]); end; 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; end; end; Label6.Caption:= IntToStr(Counter) ; end; end. ; P.S. Im Orginal gibts noch mehr Zahlen Das Problem ist, das ich möchte das oben in der Listbox die neuen Zahlen erscheinen, dadurch Funktioniet der Counter nicht so wie er sollte |
Re: Counter Beginnt nicht wieder mit zählen
hi,
irgendwie fehlen da dateien in deiner zip datei, wenn ich mich nicht irre :) |
Re: Counter Beginnt nicht wieder mit zählen
Naja, wichtig is ja eigentlich im Moment erstmal die exe.
Und ich kann wieder mal nur sagen, daß selbst in diesem Testprogramm der Algorithmus genau das macht, was du programmiert hast, Hallo_Thomas... Betrachte diese 2 Fälle:
Hättest du mal früher etwas mehr gepostet, dann hätte man dazu auch gleich mehr sagen können. Das jetzt mal nur als Tip für die Zukunft. :mrgreen: Jetzt zur Lösung: Ich gehe mal davon aus, daß du willst, daß dir angezeigt wird, wieviele 1er, 3er und 7er in der ListBox über der letzten 6 stehen, oder? Also, wieviele seit der letzten 6 eingegeben wurden? Dann mußt du natürlich die ListBox auch rückwärts durchgehen:
Delphi-Quellcode:
PS: Gewöhn dir mal an, deinen Code etwas besser zu formatieren. Bei dir muß man immer suchen, was wozu gehört. Wenn du an bestimmten Stellen mit TAB etwas einrückst, macht das den Code viel lesbarer. Das erleichtert auch die Programmierung erheblich.
Counter := 0;
for g := Anzeige.Count-1 to 0 do 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) ; |
Re: Counter Beginnt nicht wieder mit zählen
Ein langer Weg, aber Die Lösung ist nahe :thumb:
Jetzt zählt der Counter bei einer Zahl [1,3,7] aber springt bei der 2. Zahl[1,3,7] sofort wieder zurück |
Re: Counter Beginnt nicht wieder mit zählen
[edit] geloescht [end edit] sorry
|
Re: Counter Beginnt nicht wieder mit zählen
:pale: :oops: *hust* *hust* Da muß der Hausgeist am Werk gewesen sein, ich war das nämlich bestimmt nicht. *hust* *hust*
Denn natürlich muß da anstatt "From ... To ..." "From ... DownTo ..." stehen. ........... Wie gesagt, ich war das nicht! Pöhser Hausgeist! :witch: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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