AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringlist mit 60000 Einträgen zu langsam

Ein Thema von friedemann2009 · begonnen am 10. Feb 2010 · letzter Beitrag vom 12. Feb 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.522 Beiträge
 
Delphi 12 Athens
 
#17

Re: TStringlist mit 60000 Einträgen zu langsam

  Alt 11. Feb 2010, 07:20
Zitat von Hawkeye219:
aber ich vermute, dass die meiste Zeit nicht für das Lesen der Quelldaten, sondern für den Zusammenbau der Ergebnisdaten benötigt wird
...
Bei jedem Lesezugriff auf die Eigenschaft Text einer Stringliste werden alle Strings der Liste verkettet, damit das Ergebnis geliefert werden kann. Bei einem Schreibzugriff auf die Eigenschaft muss der zugewiesene String wieder in die einzelnen Zeilen zerlegt werden. Die Verwendung eines Hilfsstrings führt hier zu einer spürbaren Verkürzung der Laufzeit.
In neueren Delphiversionen hätte man auch einfach statt
ziel.Text := ziel.Text + ...; einfach nur
ziel.Add(...); machen können.

Beim Auslesen dann
Delphi-Quellcode:
ziel.LineBreak := ' ';
zielende := ziel.Text;
PS:
Delphi-Quellcode:
for x:=0 to ziel.Count-1 do
  zielende:= zielende + ' ' + ziel.Strings[x];
Diese hatte doch eh nichts gebracht.
Da "ziel" nur aus EINEM langen String besteht oder hab ich irgendwie übersehn, wo mehrere Strings/Zeilen erzeugt werden?

Da es aber .LineBreak bei dir noch nicht geben wird,
Delphi-Quellcode:
ziel.Add(...);

// und am Ende dann dein
for x:=0 to ziel.Count-1 do
  zielende:= zielende + ' ' + ziel.Strings[x];
PS: Da StringRepleace in Delphi nicht grade optimal arbeitet, wäre es besser, wenn du diese mit in die Schleife reinmachst, anstatt es über den GROßEN String zu jagen.

Delphi-Quellcode:
for ii:=0 to quelle.Count-1 do
  begin
  ...
    ziel.Add({die Wörter});
  ...
  end;

for x:=0 to ziel.Count-1 do
  zielende:= zielende + ' ' + stringreplace2(stringreplace2(
    ziel.Strings[x], 'ANFUEEEE', '"'), 'EINFANFUEEEE', #39);
memo2.text := zielende;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 23:32 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