AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Befehle aus Listbox ausgliedern?

Ein Thema von Hallo_Thomas · begonnen am 24. Apr 2005 · letzter Beitrag vom 24. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 13:16
Habe dieser Art Befehl eindeutig zuviele in der Listbox stehen;
kann ich den Befehl irgendwohin ausgliedern, damit die Listbox wieder schneller wird?

Delphi-Quellcode:
begin
      Counter := 0;
      for g := MeineListe.count-1 DownTo 0 do
        begin
        if StrToInt(MeineListe.Strings[g]) in [1,3,10] then
          Inc(Counter)
            else if StrToInt(MeineListe.Strings[g]) in [6] then
              Counter := 0 ;
              Label1.Caption:= IntToStr(Counter) ;
        end;
      end;

Danke
Angehängte Dateien
Dateityp: zip beispiel_157.zip (287,4 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#2

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 13:27
Der Code rechnet doch nur etwas, abhängig von den Items der ListBox, aus. Also würde es reichen die Rechung nur dann auszuführen, wenn ein Item hinzukommt. Pack den Code also in eine eigene Prozedur und ruf diese immer nach dem Einfügen eines Items auf.

Edit: Außerdem musst du die StringList noch im onDestroy der Form freigeben. Warum nutzt du überhaupt eine zusätzliche StringList? Du kannst doch direkt die Items der ListBox nehmen, ist ja auch nur ne StringList.

MfG Pr0g
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 13:29
Also als allererstes mal kannst du natürlich - wie ich dir bereits in deinem alten Thread gesagt habe - die Anzeige im Label aus der For-Schleife auslagern. Das geht sowieso nicht so schnell.
Außerdem kannst du doch einfach bei jeder Eingabe direkt prüfen, wieviele 1er, 3er und 7er seit der letzten 6 eingegeben wurden. Mußt ja nich jedes mal die ganze ListBox durchgehen.
Einfach zb ne globale Variable, die du im Create auf 0 setzt. Dann überprüfst du bei jeder Eingabe, obs ne 1, 3 oder 7 is und erhöhst sie. Wird ne 6 eingegeben, setzt du sie halt wieder auf 0. Sollte dir viel Rechenzeit sparen.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 13:39
Ich bin ja noch nicht ganz so in der Materie vertieft, ich brauche am besten Beispiel dazu damit ichs versteh.

Unter die Button hab ichs deswegen nicht geschrieben, weil ich die Stringliste gern abspeichern wollte und weils im Orginal ca. 40 solcher Buttons gibt, und ca. genu so viele Labels.
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 13:47
Der gedanke der mir dabei schwebte mit der zusätzlichen Stringlist war der, das die Listbox entlastet werden würde und dadurch eine schnelle Anzeige ermöglicht würde, war leider nicht der Fall. Dies klappt im Moment nur in einer sepperaten 2.Listbox, leider funktioneren bei einem Reset dann die Labels nicht wenn ich die2. Lisbox über die 1. schiebe.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#6

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 14:00
Hab dein Beispiel mal angepasst und als Beispiel #1 angehangen. Eine weitere Optimierung ist in Beispiel #2 zu finden, dort werden die Werte in der Tag-Eigenschaft der Buttons gespeichert.
Angehängte Dateien
Dateityp: zip beispiel2_159.zip (1,6 KB, 8x aufgerufen)
Dateityp: zip beispiel1_214.zip (1,6 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 14:00
Zitat von Hallo_Thomas:
Unter die Button hab ichs deswegen nicht geschrieben, weil ich die Stringliste gern abspeichern wollte und weils im Orginal ca. 40 solcher Buttons gibt, und ca. genu so viele Labels.
Versteh ich nich...
Was hat denn das Auslagern in eine Prozedur für eine Auswirkung auf das Speichern der ListBox?
Du mußt doch einfach nur in jedem ButtonClick eine Prozedur aufrufen, die den Counter entsprechend erhöht oder zurücksetzt.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 16:44
Dadurch dürften dann doch im Label nicht mehr die alten werte stehen dachte ich?
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 16:50
Ich versteh das ganze Problem immer noch nicht? Du sagst, du hast umdie 40 Labels. In deinem geposteten Quelltext wird aber doch auch nur eines beschrieben. Genau das kannst du doch auch in eine externe Funktion auslagern. Zur Not kannst du über Delphi-Referenz durchsuchenFindComponent auch noch per Parameterübergabe bestimmen, in welchem Label angezeigt werden soll.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Befehle aus Listbox ausgliedern?

  Alt 24. Apr 2005, 17:37
Nicht in dem Text, aber im Richtigen sind fast so viel.

Hab jetzt gerade das eine schöne Programm runtergeladen, ich nglaub das triffts im wesentlichen.

da habe ich wieder ein altes Problem



AddMyItem('1', clRed);
Ich möchte in der Listbox die aktuellste Zahl gern oben haben

InsertMyItem(0,'1', clRed); hab ich da versucht, hat aber nicht funktioniert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.
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