![]() |
TAdvStringGrid sehr langsam bei größeren Tabellen
Ich habe eine Excel Tabelle mit ca. 40.000 Zeile und 15 Spalten.
Diese lade ich ich in ein TAdvStringGrid mittels AdvGridExcelIO. Das Laden an sich dauert nicht so sehr lange (ca. 10 sek.), aber die Manipulation der Daten dauert sehr lange. Ich muss von Zeile zu Zeile gehen, dort Tests (diese dauern aber nicht lange) machen und dann teilweise die Farbe ändern und auch einen Zellinhalt in eine andere Zelle kopieren. Bei ca. 100 Zeilen kein Problem, aber bei 40.000 habe ich nicht aufs Ende gewartet. Beim Abbruch war schon über eine Stunde vergangen. Vor der Änderung habe ich
Delphi-Quellcode:
eingefügt und am Ende dann
sgFileList.BeginUpdate;
Delphi-Quellcode:
.
sgFileList.EndUpdate
Habt ihr eine Idee? Muss ich vielleicht die Exceltabelle in ein dynamisches Array schreiben und dann am Ende nur noch die Exceltabelle neu aufbauen? |
AW: TAdvStringGrid sehr langsam bei größeren Tabellen
Das AdvGrid sollte auch einen "virtual Mode" bieten.
Damit lösen sich sehr häufig Performenceprobleme die man bei einem "voll gefüllte/konfigurierten Grid" fast nie in den griff bekommt, wenn die Datenmenge zu groß ist. |
AW: TAdvStringGrid sehr langsam bei größeren Tabellen
Danke für den Hinweis. Da ich das nicht gefunden hatte, habe ich TMS kontaktiert. Man meinte, dass das viel schneller gehen müsste.
Nach einigen Stunden suche bin ich auf das Problem gestoßen.
Delphi-Quellcode:
und
BeginUpdate
Delphi-Quellcode:
hatte ich ja am Anfang nicht drin. Das habe ich dann mit eingebaut. Leider ohne Erfolg.
EndUpdate
Dann habe ich gesehen, dass ich in einer Schleife
Delphi-Quellcode:
drin hatte. Das war das Problem.
sgFileList.AutoSize := True;
Ich muss ja nur am Ende ein Autosize machen. Nun dauern meine Berechnungen um die 10 Sekunden, was für mich OK ist. |
AW: TAdvStringGrid sehr langsam bei größeren Tabellen
Wenn ich nicht weiß wo etwas Zeit verbrät, nutze ich AQTime (
![]() einmal mit Line-Profiler nur über die eigenen Units laufen lassen, schon hat man in den meisten fällen das Problem gleich gefunden. Ob man es auch so schnell lösen kann ist eine andere Frage ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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