Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eine Schleife für die Labels mit Variablenzuordnung(Array)? (https://www.delphipraxis.net/45284-eine-schleife-fuer-die-labels-mit-variablenzuordnung-array.html)

Khabarakh 3. Mai 2005 16:51

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
1. Wenn du dich schon in einer Methode von TForm1 befindest, kannst du Form1 weglassen. Dann bekommst du auch keine Probleme bei mehreren Instanzen.
2. "Counte": soll das nicht Counter heißen :wink: ?
3. Das lässt sich extrem verkürzen:
Delphi-Quellcode:
var s: string;
begin
  for i := 0 to Anzeige.Count - 1 do
  begin
    s := Anzeige.Items[i];
    case s[Length(s)] of
      '0'..'6':
        if StrToInt(s) < 40 then
          Inc(Counte(StrToInt(s[Length(s)])))
        else
          Counte(StrToInt(s[Length(s)])) := 0;
      '7'..'9':
        if StrToInt(s) < 30 then
          Inc(Counte(StrToInt(s[Length(s)])))
        else
          Counte(StrToInt(s[Length(s)])) := 0;
    end;
  end;
  for i := 0 to 9 do
    (FindComponent('Label'+IntToStr(i+192)) as TLabel).Caption:=IntToStr(Counte[i]);
[edit]So sollte es stimmen:
Delphi-Quellcode:
for i := 0 to Anzeige.Count - 1 do
  begin
    s := Anzeige.Items[i];
    Index := StrToInt(s[Length(s)]);
    for ii := 0 to 9 do
      if (Index = ii) and (Counte[Index] < 30 + Integer(Index <= 6) * 10) then
        Inc(Counte[Index])
      else
        Counte[Index] := 0;
  end;
Gut, das mit dem Boolean zu Integer ist etwas verkünstelt, ich war zu faul, noch ein case einzufügen :wink: .

Hallo_Thomas 3. Mai 2005 17:59

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
@Khabarakh

hab das probiertt, funkt nich

Delphi-Quellcode:
begin
  for i := 0 to Form1.Anzeige.Count - 1 do
  begin
    s := Form1.Anzeige.Items[i];
    case s[Length(s)] of
      '0'..'6':
        if StrToInt(s) < 40 then
          Inc(Counte[StrToInt(s[Length(s)])])
        else
          Counte[StrToInt(s[Length(s)])] := 0;
      '7'..'9':
        if StrToInt(s) < 30 then
          Inc(Counte[StrToInt(s[Length(s)])])
        else
          Counte[StrToInt(s[Length(s)])] := 0;
    end;
  end;
  for i := 0 to 9 do
    (FindComponent('Label'+IntToStr(i+192)) as TLabel).Caption:=IntToStr(Counte[i]);
 end;
hab das probiert funkt nich

Delphi-Quellcode:
var index,ii,i:integer;
begin
for i := 0 to form1.Anzeige.Count - 1 do
  begin
    s := Form1.Anzeige.Items[i];
    Index := StrToInt(s[Length(s)]);
    for ii := 0 to 9 do
      if (Index = ii) and (Counte[Index] < 30 + Integer(Index <= 6) * 10) then
        Inc(Counte[Index])
      else
        Counte[Index] := 0;
        for x:= 0 to 9 do
    (   FindComponent('Label'+IntToStr(x+192)) as TLabel).Caption:=IntToStr(Counte[x]);
  end;
  end;
P.S. können wir uns auf diese Zeile einigen, denn hier muss der Fehler liegen

Delphi-Quellcode:
(   FindComponent('Label'+IntToStr(x+192)) as TLabel).Caption:=IntToStr(Counte[x]);


Delphi-Quellcode:
P.S. hier hieß es nicht Counter weil ich hier den Counter schon als normale Variable vergeben habe

Sharky 3. Mai 2005 18:06

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
Zitat:

Zitat von Hallo_Thomas
.... funkt nich

Ist ja auch kein Funkgerät. :roll:

Was funktioniert denn nicht? Kommt eine Fehlermeldung?

Hallo_Thomas 3. Mai 2005 18:25

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Sharky es gibt keine Fehlermelung

So hab jetzt mal mein Beispielprogramm so eingestellt das es genau den Fehler macht

Die 10 Zahlen rechts unten sollen die Counter darstellen die eigenlich Zählen müssten

Sharky 3. Mai 2005 19:35

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai,

warum hast Du denn die Methode Addmyitem bei deiner Form2 deklariert wenn Du sie doch nur in Form1 benutzt.

Das problem liegt aber an dem FindComponent. Es findet die Labels nicht auf der Form1.
Ich habe das ganze mal etwas umgeschrieben.

Schaue Dir vor allem mal mein Set of Byte an ;-)

Hallo_Thomas 3. Mai 2005 20:02

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
@Sharky

Ich danke Dir, bin ja ect begeistert von dem Ergebnis,
Das mit der 2 Unit war eine Fehlgeschlagene Probe, ich wollte sehen ob ich dadurch ´das Programm schneller wird

Sharky 4. Mai 2005 06:53

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Hallo_Thomas
...Ich danke Dir, bin ja ect begeistert von dem Ergebnis,....

Ich habe eben noch einmal den ganzen Code etwas überarbeitet.
  • Nur noch ein OnClick für alle SpeedButtons
  • Optimierung der Funktion AddMyItem
  • Bilder werden nur noch einmal geladen
  • Umsortierung der Methoden wegen der Übersichtlichkeit
Schaue Dir einfach mal an was ich so gemacht habe und beachte die Kommentare im Code ;-)

freak4fun 4. Mai 2005 08:36

Re: Eine Schleife für die Labels mit Variablenzuordnung(Arra
 
Super sharky. :thumb:

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Seite 2 von 2     12   

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