Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Programm läuft eindeutig zu langsam (https://www.delphipraxis.net/45194-programm-laeuft-eindeutig-zu-langsam.html)

Hallo_Thomas 1. Mai 2005 18:45


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;

SubData 1. Mai 2005 18:50

Re: Prgramm läuft eindeutig zu langsam
 
Zitat:

Zitat von Hallo_Thomas
Siehe Problem=> Davon habe ich ca. Stück in der Procedure stehen,

Ja wieviel Stück denn? :)

Hallo_Thomas 1. Mai 2005 19:01

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?

gordon freeman 1. Mai 2005 19:09

Re: Prgramm läuft eindeutig zu langsam
 
Wenn es am Hinzufügen der 200 Items liegt, dann setz einfach mal ein
Delphi-Quellcode:
Listbox1.beginupdate;

//... Items hinzufügen ...

Listbox1.endupdate;
Das sollte die Sache beschleunigen.

Hallo_Thomas 1. Mai 2005 19:27

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;

gordon freeman 1. Mai 2005 19:43

Re: Prgramm läuft eindeutig zu langsam
 
:oops: Hatte mich vertan, muss in deinem Fall
Delphi-Quellcode:
Form1.Anzeige.[b]Items.[/b]beginupdate;
heißen! Das packste dann vor und nach die Schleife, in der die Procedure aufgeruden wird.

Khabarakh 1. Mai 2005 19:44

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:
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;
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.

Hallo_Thomas 1. Mai 2005 19:53

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.

Khabarakh 1. Mai 2005 20:01

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.

Hallo_Thomas 1. Mai 2005 20:18

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 08:11 Uhr.
Seite 1 von 2  1 2      

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