Delphi-PRAXiS
Seite 3 von 3     123   

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 Counter Beginnt nicht wieder mit zählen (https://www.delphipraxis.net/44477-counter-beginnt-nicht-wieder-mit-zaehlen.html)

Hallo_Thomas 20. Apr 2005 10:48

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

Grumble 20. Apr 2005 11:25

Re: Counter Beginnt nicht wieder mit zählen
 
hi,

irgendwie fehlen da dateien in deiner zip datei, wenn ich mich nicht irre
:)

leddl 20. Apr 2005 11:49

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:
  1. Gebe ich als erstes eine 6 ein, ist Counter immer 0, da die ListBox eben von oben nach unten durchgegangen wird. Und da das als erstes eingegebene Element eine 6 ist, und dieses Element bei der Eingabe neuer Zahlen immer das letzte Element bleibt, wird nach der Schleife "Counter" immer 0 sein, da eben als letztes eine 6 gefunden und Counter auf 0 gesetzt wird.
  2. Geben ich als erstes (und vielleicht noch als 2., 3., ...) eine 1,3 oder 7 ein, stehen die immer ganz unten in der ListBox. Daher zeigt Counter immer an, wieviele 1er, 3er oder 7er eingegeben wurden, bis die erste 6 kam.
Du siehst also, so betrachtet macht dein Code, was du willst. ;)
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:
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) ;
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.

Hallo_Thomas 20. Apr 2005 12:19

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

Grumble 20. Apr 2005 12:22

Re: Counter Beginnt nicht wieder mit zählen
 
[edit] geloescht [end edit] sorry

leddl 20. Apr 2005 13:22

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 21:30 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz