AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TStrings (ListBox.Items) ohne ".add" ?

Ein Thema von MicMic · begonnen am 28. Nov 2019 · letzter Beitrag vom 29. Nov 2019
Antwort Antwort
Seite 1 von 2  1 2   
hoika

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

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 21:30
Hallo,
Zitat:
kann man eigentlich auch die Anzahl der ListBox-Items direkt angeben?
nein

Zitat:
Der Inhalt wird anders befüllt
hm, warum füllst Du die ListBox nicht sofort mit den anders befüllten Werten,
anstatt erst mal leere Strings einzutragen?
Heiko
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 21:40
Danke für die Info. Begin/Endupdate habe ich schon.
Habe eben kurz was gefunden. In meiner For-Schleife habe ich mal mit eine String-Variabel rumprobiert. Also ct := ct + ', '; und außerhalb der Schleife mit "items.commatext := ct" die Anzahl gesetzt. Aber das ist auch nicht schneller, als wie gehabt "items.add('')" in der Schleife zu nutzen.
Zitat:
hm, warum füllst Du die ListBox nicht sofort mit den anders befüllten Werten,
anstatt erst mal leere Strings einzutragen?
Die Werte bestehen nicht nur aus einen Text. Auch sieht meine ListBox ganz anders aus. Trotzdem brauche ich "items.add" damit DrawItem richtig funktioniert für meine Sache. Dachte nur, ich kann mir das "add" sparen und die Anzahl direkt setzen. Scheint aber wohl nicht zu gehen.
  Mit Zitat antworten Zitat
hoika

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

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 21:44
Hallo,
gehen tut das schon

https://docs.microsoft.com/en-us/win...ls/lb-setcount

Aber es bringt Dich hier nicht weiter, wegen der dort genannten Einschränkungen.
Heiko
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 21:49
Zitat:
Habe eben kurz was gefunden. In meiner For-Schleife habe ich mal mit eine String-Variabel rumprobiert. Also ct := ct + ', '; und außerhalb der Schleife mit "items.commatext := ct" die Anzahl gesetzt. Aber das ist auch nicht schneller, als wie gehabt "items.add('')" in der Schleife zu nutzen.
Kannst du hier einen Beispielcode posten mit der Schleife und allem?
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 21:55
@hoika, danke für die Info. Gleich gelesen... nur 32767 Items. Zu wenig

@DieDolly
Nix besonderes...
Code:
Items.BeginUpdate;
For I := 0 To Length(D1)+Length(D2)-1 Do
Begin
 // hier zwischen drin hab ich noch anderes Zeug. Datenverarbeitung. Hat aber nix mit der ListBox direkt zu tun.
 Items.Add('');
End;
Items.EndUpdate;
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 22:06
Was zum Beispiel auch Zeit kostet, ist die Listbox zu leeren. Also mit Clear.
Muss man zwar nicht immer machen aber manchmal halt schon.

Aber trotzdem mal Danke an alle. Das mit ".add" ist auch nicht so schlimm. Dachte nur, evtl. spare ich eine Sekunde, wenn ich hunderttausende Einträge irgendwie direkt setzen kann, als es mit ".add" zu machen.

Gute Nachtruhe und schöne Source-Code Träume
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 22:12
Zitat:
Dachte nur, evtl. spare ich eine Sekunde, wenn ich hunderttausende Einträge irgendwie direkt setzen kann,
Denk mal über VirtualStringTree (RootNodeCount, kein AddChild!) nach, wo du die Items selber auch zeichnest. Dürfte noch immer schneller sein.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 22:37
Bereite deine Daten so auf, dass du sie einzeln in einer Schleife in die Listbox schreiben kannst. Oder besser, schreib sie in eine Stringlist und Weise der Listbox zum Schluss die Stringlist zu.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

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

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 29. Nov 2019, 06:43
Hallo,
Zitat:
wenn ich hunderttausende Einträge
Und er soll sich bei Deinen 100.000-en Einträgen zurecht finden?

Ganz klar der falsche Ansatz.
Biete vorher einen Filter an, der die Anzahl eingrenzt und gut is.
Heiko
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 28. Nov 2019, 23:24
Das mit ".add" ist auch nicht so schlimm. Dachte nur, evtl. spare ich eine Sekunde, wenn ich hunderttausende Einträge irgendwie direkt setzen kann, als es mit ".add" zu machen.
Ich bin zwar nicht sicher, was du genau suchst... aber 100'000 Einträge aufs Mal in eine Listbox quetschen geht enorm viel schneller (als mit .add) so:

Delphi-Quellcode:
var hs : tstringlist;
  i: Integer;
begin
  hs := tstringlist.Create;
 try
  for i := 1 to 100000 do hs.Add( i.tostring );
  listbox1.Items := hs;
 finally
  hs.Free;
 end;
  showmessage( listbox1.items.count.tostring );
end;

Dabei habe ich soeben festgestellt, dass das Scrollen über den vertikalen Listbox-Scrollbalken nicht wirklich gut funktioniert. Ist das ein Delphi (10.3.3) oder ein Windows (Win10 19033) Problem?
Michael Gasser
  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 09:49 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