Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: Performanceproblem mit ca. 30000 Listboxeinträgen

  Alt 12. Mai 2005, 17:43
Delphi-Quellcode:
for pl0 := Form1.Anzeige.count - 1 downto 0 do // (1) Das ist die Schleife für die Items (30.000)
    begin

(*
*
* du bist auch ein "Held", wenn du 410 Mal auf die gleichen Daten zugreifst !!!!
*
*)

   // den Wert AUSSERHALB der inneren Schleife lesen
   // und auch gleich als Integer merken (spart 409 *30000 Aufrufe auf StrToInt !!!)
   aktwert := StrToInt(Form1.Anzeige.Items[pl0]);
      for x := 0 to 409 do // (2) Das ist die Schleife für die Berechnung
      begin
        if aktwert in werte[x] then
          Counte[x] := 0
        else
          Inc(Counte[x]);
      end;
Du brauchst deine 410 Labels (was ja auch schon Wahnsinn ist) nicht 30000 Mal beschicken.
Es würde reichen, nur jedes 100. Mal die Labels zu aktualisieren:
Delphi-Quellcode:
   if ((pl1 mod 100) = 0) then
      for x := 0 to 409 do // (3) Das ist die Schleife für die Ausgabe
      begin
        (FindComponent('Label' + IntToStr(x + 2)) as TLabel).Caption :=
          IntToStr(Counte[x]);
      end;
Andreas
  Mit Zitat antworten Zitat