Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann man das noch optimieren? (https://www.delphipraxis.net/38567-kann-man-das-noch-optimieren.html)

Opa Knack 21. Jan 2005 01:57


Kann man das noch optimieren?
 
Hallo,

ich habe eine StringGrid und eine Datei, in der ich nach Übereinstimmungen der Zellen der ersten beiden Spalten der StringGrid suchen muß. Diese Datei liegt im ASCII-Format vor, jedoch ist sie nicht gegliedert und sieht aus wie Kraut und Rüben.

Umgesetzt habe ich dies nun, indem ich die Datei in ein Memofeld lade und anschließend eine Suche laufen lasse, die mit jeder Zelle des StringGrids angestossen wird. Bei Übereinstimmungen wird die entsprechende Zeile des StringGrids in ein weiteres Grid geladen, in dem am Schluß das Resultat erscheint.

Nun zur Frage: Fällt jemandem eine bessere Lösung ein?

Danke
Opa

yankee 21. Jan 2005 06:31

Re: Kann man das noch optimieren?
 
sry, ich habe Probleme dein problem zu verstehen.
Kannst du mal den Code posten, wie du es bisher löst? Das würde erheblih zum verständnis beitragen...
Wie sieht diese Datei aus? Suchst du nach strings mit konstanter Länger oder ist ist das eien csv-datei?

SirThornberry 21. Jan 2005 07:46

Re: Kann man das noch optimieren?
 
bessere Lösung wäre das ganze nicht in ein Memo sondern in ein String zu packen da bei der Abfrage "Memo.Text" sonst jedesmal ein String erst zusammengebaut wird was ziemlich unperformant ist. Desweiteren könntest du die Daten in eine Struktur pressen damit die suche schneller geht.

Thanatos81 21. Jan 2005 08:06

Re: Kann man das noch optimieren?
 
Du könntest auch, falls du mehrere Zeilen brauchst, eine StringList benutzen. Würde ich sowieso für alle Vorgängr empfehlen, die der Benutzer nicht sehen muss, da die TStringList doch einiges schneller ist als ein TMemo.

SirThornberry 21. Jan 2005 09:02

Re: Kann man das noch optimieren?
 
@thantos81: Das Memo benutzt ja intern auch schon eine Stringlist (zumindest TStrings) was mit Memo.Lines ansprechbar ist. Aber auch da wird über ".Text" der String dann erst dynamich zusammengebaut.

Thanatos81 21. Jan 2005 10:52

Re: Kann man das noch optimieren?
 
@SirThornberry
Da hast du natürlich recht, aber ich habe die Erfahrung gemacht, das visuelle Komponenten wesentlich langsamer arbeiten. Auch wenn die unsichtbar sind, und/oder BeginUpdate gesetzt wurde. Kann aber auch subjektives empfinden sein, habe das noch nicht gestoppt.

SirThornberry 22. Jan 2005 14:39

Re: Kann man das noch optimieren?
 
das Stimmt - da die visuellen Komponenten ja immer noch prüfen ob beginupdate ausgeführt wurde sind sie damit auf jeden fall schon ein bischen langsamer. Eine reine Stringlist wäre besser als das Memo aber noch besser ist eben das man die .Text methode nur einmal aufruft oder gleich auf die Items damit der Text nicht jedes mal zusammengebaut wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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