AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

FMX : TStrings.clear oder setString sehr langsam

Ein Thema von stalkingwolf · begonnen am 25. Mai 2021 · letzter Beitrag vom 25. Mai 2021
Antwort Antwort
Seite 1 von 2  1 2   
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#1

FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 10:51
7x items.clear auf 7 verschiedene TStrings dauert 4 Sekunden.
Das ist doch relativ langsam.

Ich habe 7 Comboboxen welche ich bei Laufzeit fülle.
Erst leeren, dann eine Tstringlist füllen und per addStrings die Comboboxen füllen.
Das hinzufügen geht fix, aber das clear dauert ewig.

Also umgeschrieben und am Ende mit setStrings da ganz füllen. Nun dauert setStrings ewig.

Übersehe ich etwas oder sind die Dinger mittlerweile so träge?

Edit : das ist unter Android und unter Windows so träge.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 10:53
Hallo,
BeginUpdate/EndUpdate benutzen.
OnChange-Events prüfen und ggfs. vorher retten / auf NIL setzen / Event zurücksetzen
Heiko
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#3

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 11:00
Sorry vergessen.
Beginupdate und endupdate habe ich drin.
Aber onChange hatte ich übersehen. Danke für den Hinweis

Wobei das mit dem onChange bringt nichts.

Geändert von stalkingwolf (25. Mai 2021 um 11:05 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.059 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 11:44
Profiler drauf werfen, alles andere ist Kaffeesatzleserei.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 12:42
Hallo,
Zitat:
Wobei das mit dem onChange bringt nichts.
Andere Events?
Heiko
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#6

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 13:05
Nein andere Events gibt es nicht.
Das sind 4sek unter Windows und 14! sek unter Android.

Profiler muss mich mal schlau machen.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.059 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 13:15
Nur Strings oder auch Objekte in die Stringlist hinzugefügt?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.986 Beiträge
 
Delphi 12 Athens
 
#8

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 13:20
Ein konkretes Beispiel zum Nachstellen wäre jetzt vielleicht angebracht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#9

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 13:24
Ein konkretes Beispiel zum Nachstellen wäre jetzt vielleicht angebracht.
Code:
combox1.items.clear;
Das soll nun nicht unfreundlich wirken, aber mehr ist es nicht. Und die Combobox ist sogar leer.

Zitat:
Nur Strings oder auch Objekte in die Stringlist hinzugefügt?
Nur Strings.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.059 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: FMX : TStrings.clear oder setString sehr langsam

  Alt 25. Mai 2021, 14:18
Ja, verstehe nicht?
Debug-DCUs an und in die FMX debuggt?

Code:
FMX.ListBox.TCustomListBox.Clear
FMX.ListBox.TCustomListBox.TListBoxStrings.Clear
Delphi-Quellcode:
procedure TCustomListBox.Clear;
begin
  BeginUpdate;
  try
    RealignContent;
    FToInflate.Clear;
    if Content <> nil then
      Content.DeleteChildren;
    FGroups.Clear;
    SelectionController.SetCurrent(-1);
  finally
    EndUpdate;
  end;
end;
Hängt das an der RealignContent?
SelectionController.SetCurrent(-1);?
Dauert es lange im EndUpdate?

Lasst euch doch nicht immer alles aus der Nase ziehen.
Mal so ein bisschen Eigeninitiative zeigen.

Am Ende ist es wieder so ein: "Hey, ich habe die 127 anstehenden Windows-Updates durchinstalliert und nach 43 Monaten mal neugestartet, jetzt ist wieder alles gut!"

Komm, sei nett und frickle uns ein kleines Beispielprojekt zusammen.
Formular, Combobox, ein Button zum Löschen. Projekt zippen und hochladen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 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