![]() |
Programm läuft eindeutig zu langsam
Siehe Problem=> Davon habe ich 200 ca. Stück in der Procedure stehen, jedes Steuert ein Label an und ein Bild, hat jemand eine Idee wie ich das vereinfachen kann, Programm wird mit der Zeit immer langsamer?
Delphi-Quellcode:
procedure TForm2.AddMyItem(const AItem: String; const AColor: TColor);
begin Form1.Anzeige.Items.InsertObject(0, AItem, Pointer(AColor)); Das Problem
Delphi-Quellcode:
begin
Counter := 0; for c2227 := Form1.Anzeige.count-1 DownTo 0 do begin if StrToInt(Form1.Anzeige.Items[c2227]) in [0..21,28..100] then Inc(Counter) else if StrToInt(Form1.Anzeige.Items[c2227]) in [22..27] then Counter := 0 ; [pre]Form1.Label12.Caption:= IntToStr(Counter) ; end; end;////////Hier werden die Daten aus der Listbox gezogen um im Label den Count darzustellen begin if counter<=c637n Then begin Form1.Image12.Picture := nil; Form1.Label12.font.color:=CLgreen; Form1.Label12.Caption:='' end; begin if counter=c637b Then begin Form1.Image12.Picture.LoadFromFile(PChar(ExtractFilePath(ParamStr(0))) + 'Chipblau.bmp'); //////////die Bilder erscheinen jedesmal Form1.Label12.font.color:=CLWhite; end; begin if counter=c637g Then begin Form1.Image12.Picture.LoadFromFile(PChar(ExtractFilePath(ParamStr(0))) + 'Chipgelb.bmp'); Form1.Label12.font.color:=CLblack end else if counter=c637p Then begin Form1.Image12.Picture.LoadFromFile(PChar(ExtractFilePath(ParamStr(0))) + 'Chippink.bmp'); Form1.Label12.font.color:=CLwhite;///Hier wird dem Label das entsprechende Bild hinzugefügt end; end; end; end; |
Re: Prgramm läuft eindeutig zu langsam
Zitat:
|
Re: Prgramm läuft eindeutig zu langsam
@Subdata: habs vervessert
Hab gehört das TImage(Ich nehme TI wegen den Transparenten Bildern) auch einiges an Resourcen frisst, hilft da eine Imagelist vieleicht? Im Moment wird alles über die Listbox berechnet, würde eine Stringlist oder so was schneller seine? Oder vieleicht indem einiges in eine 2,3,4.. Procedur verschiebe? |
Re: Prgramm läuft eindeutig zu langsam
Wenn es am Hinzufügen der 200 Items liegt, dann setz einfach mal ein
Delphi-Quellcode:
Das sollte die Sache beschleunigen.
Listbox1.beginupdate;
//... Items hinzufügen ... Listbox1.endupdate; |
Re: Prgramm läuft eindeutig zu langsam
Es wird eigentlich immer nur ein Item hinzugefügt pro Procedurdurchlauf, bloss dadurch müssen die Labels immer wieder neu berechnet werden.
@Gordon freeman; Bei mir wird die Fehlermelung "undefinierter Bezeichner" für beginupdate/endupdate angezeigt
Delphi-Quellcode:
Form1.Anzeige.beginupdate;
|
Re: Prgramm läuft eindeutig zu langsam
:oops: Hatte mich vertan, muss in deinem Fall
Delphi-Quellcode:
heißen! Das packste dann vor und nach die Schleife, in der die Procedure aufgeruden wird.
Form1.Anzeige.[b]Items.[/b]beginupdate;
|
Re: Prgramm läuft eindeutig zu langsam
Schonmal was von Codeeinrückung gehört :gruebel: ?
Du hast da ziemlich viele unnütze Blöcke:
Delphi-Quellcode:
Macht aber wahrscheinlich keine Performanceeinbußen. LoadFromFile benötigt jedoch IMHO viel Zeit. Lade die drei Bilder lieber am Anfang des Programms in drei TBitmaps.
begin if counter<=c637n Then begin
Form1.Image12.Picture := nil; Form1.Label12.font.color:=CLgreen; Form1.Label12.Caption:='' end; begin if counter=c637b Then begin Form1.Image12.Picture.LoadFromFile(PChar(ExtractFilePath(ParamStr(0))) + 'Chipblau.bmp'); //////////die Bilder erscheinen jedesmal Form1.Label12.font.color:=CLWhite; end; [...] end; end; |
Re: Prgramm läuft eindeutig zu langsam
@Khabarakh
Ich glaub das macht, dass Programm auch nich schneller und so oft wie in letzter Zeit da alles ändere bringt bei dieser Passage für mich nix. Bin im Moment auch zu verzweifelt für so einen Spass. |
Re: Prgramm läuft eindeutig zu langsam
Wie du meinst. Ich kann dir nur sagen, dass das Laden von Bildern beim OnEnter/OnExit eines Custom-Buttons bei einem meiner Programme dieses für ca. eine halbe Sekunde zum Erliegen gebracht hat, das Kopieren eines Bitmaps gerade bei kleineren Bildern jedoch fast in Nullzeit passiert.
|
Re: Prgramm läuft eindeutig zu langsam
@@Khabarakh
sorry, hatte dass nur mit den blöcken gelesen. Das mit Loadfromfile, mache ich so, weil am Anfang kein Bild an der Stelle zusehen ist, die werden dann erst ausgetauscht an der entsprechenden Stelle, so ne Art Ampel, geht das Trotzdem was Du sagst? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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