![]() |
Befehle aus Listbox ausgliedern?
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: Befehle aus Listbox ausgliedern?
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 |
Re: Befehle aus Listbox ausgliedern?
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. |
Re: Befehle aus Listbox ausgliedern?
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. |
Re: Befehle aus Listbox ausgliedern?
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.
|
Re: Befehle aus Listbox ausgliedern?
Liste der Anhänge anzeigen (Anzahl: 2)
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.
|
Re: Befehle aus Listbox ausgliedern?
Zitat:
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. |
Re: Befehle aus Listbox ausgliedern?
Dadurch dürften dann doch im Label nicht mehr die alten werte stehen dachte ich?
|
Re: Befehle aus Listbox ausgliedern?
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
![]() |
Re: Befehle aus Listbox ausgliedern?
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
Delphi-Quellcode:
AddMyItem('1', clRed);
Ich möchte in der Listbox die aktuellste Zahl gern oben haben
Delphi-Quellcode:
hab ich da versucht, hat aber nicht funktioniert
InsertMyItem(0,'1', clRed);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:17 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