Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Beschränkung bei Aufnahme von Einträgen in Listbox? (https://www.delphipraxis.net/161120-beschraenkung-bei-aufnahme-von-eintraegen-listbox.html)

hgiel 17. Jun 2011 15:04

Delphi-Version: 5

Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Hallo,

ich versuche gerade eine Verzeichnis von mehreren 1000 Dateien namentlich plus Pfad in eine Listbox einzutragen! Das Programm meldet keine Fehler, trägt aber NUR ca 770 Dateien in die Listbox ein???

Gibt es da eine Einschränkung, die ich nicht beachtete habe und/oder ein Stellschraube wo ich die Anzahl der Einträge erhöhen kann?

Danke schon mal...

DeddyH 17. Jun 2011 15:09

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Schau mal hier: http://www.delphipraxis.net/83868-ma...n-listbox.html

p80286 17. Jun 2011 15:12

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Hört sich so an als gäbe es da noch eine 64k Grenze
Hast Du denn mal eine Gegenprobe in einem TMemo oder einer Textdatei gemacht?

Gruß
K-H

Mehr als 1000 Dateinamen?
Da scrollt man sich ja die Finger wund.

Bernhard Geyer 17. Jun 2011 15:23

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Bei D5 könnte ich mir schon noch solche Grenzen vorstellen.

hgiel 17. Jun 2011 15:29

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Hatte den Beitrag schon gelesen - Memo - Listbox - immer werden nur 770 Dateien eingetragen! :(

DeddyH 17. Jun 2011 15:32

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Hast Du den Tipp mit ListView_SetItemCount denn auch ausprobiert?

hgiel 17. Jun 2011 15:34

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Nee, noch nicht ;-(

ListView - Listbox - da muss ich mich am Wochenende mal mit beschäftigen!

Aber schon mal Danke!!!

DeddyH 17. Jun 2011 15:38

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Ich sehe gerade, für die Listbox gibt es auch noch die LB_SETCOUNT-Message. Dort steht aber auch Folgendes:
Zitat:

Parameters

wParam

Specifies the new count of items in the list box.

Windows 95/Windows 98/Windows Millennium Edition (Windows Me) : The wParam parameter is limited to 16-bit values. This means list boxes cannot contain more than 32,767 items. Although the number of items is restricted, the total size in bytes of the items in a list box is limited only by available memory.
Das heißt für mich, dass unter Win9x eine Einschränkung auf 2^15 - 1 Einträge bestand. Aber da bist Du ja noch nicht einmal ansatzweise in der Nähe.

jaenicke 17. Jun 2011 15:39

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Nimm einfach eine TVirtualStringTree, die ist deutlich schneller und hat derlei Begrenzungen definitiv nicht.

// EDIT:
Ja, hätte mich auch gewundert bei der geringen Anzahl.

DeddyH 17. Jun 2011 15:41

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Wenn die Einträge nicht zwingend den Pfad enthalten müssen, könnte man auch einmal MSDN-Library durchsuchenLB_DIR in Erwägung ziehen.

p80286 17. Jun 2011 16:08

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Ich vermute eher, daß es ein Zeichenproblem ist.
Könnte es sein, daß in der Dateiliste ein Dateiname enthalten ist, der von einem chin. arab. .. Rechner kommt?
Wo kommen die Dateinamen überhaupt her (Findfirst/Findnext?)

Gruß
K-H

Bernhard Geyer 17. Jun 2011 16:10

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Zitat:

Zitat von p80286 (Beitrag 1107038)
Ich vermute eher, daß es ein Zeichenproblem ist.
Könnte es sein, daß in der Dateiliste ein Dateiname enthalten ist, der von einem chin. arab. .. Rechner kommt?

Dann hast du bei D5 nur noch "?" und das sollte das GUI-Control nicht stören.

p80286 17. Jun 2011 16:15

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Naja ich bin mit D7 mal über eine Türkische Datei gestolpert, Da fehlten auf einmal auch jede Menge Dateien, weil $00$.. nicht als ein Zeichen, sondern als zwei Zeichen interpretiert wurden. Und die Null ist der Tod für jeden String sobald das Win-API ins Spiel kommt.

Gruß
K-H

Bernhard Geyer 17. Jun 2011 16:24

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Zitat:

Zitat von p80286 (Beitrag 1107041)
Naja ich bin mit D7 mal über eine Türkische Datei gestolpert, Da fehlten auf einmal auch jede Menge Dateien, weil $00$.. nicht als ein Zeichen, sondern als zwei Zeichen interpretiert wurden. Und die Null ist der Tod für jeden String sobald das Win-API ins Spiel kommt.

Dan war aber nicht der eigentlich Fehler das Control sondern wie die Dateinamen bestimmt wurden und Widestrings fehlerhaft in AnsiStrings kopiert wurden. Da dürfte dann auch ein €-Zeichen probleme bereiten.

p80286 17. Jun 2011 17:20

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Ist ja letztendlich egal wer es "schuld" war, der Effekt war derselbe wie bei hgiel, darum sollte man auch diese Möglichkeit in Betracht ziehen.
(der Fehler sitzt sowieso meist vor der Tastatur)
Gruß
K-H

juergen 17. Jun 2011 19:07

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Hallo,

auf die eigentliche Frage bezogen kann ich dir versichern, dass die Grenzen einer Listbox nicht mit deinen geringen Datenmengen gesprengt wird. :)
Ich nutze eine Listbox im virtuellen Modus und hatte schon öfters ca. 290.000 Dateinamen nebst Pfadangabe eingelesen und hatte keinerlei Probleme. Natürlich dauert es dann 2-3 Minütchen.

Listview dürfte bei großen Datenmengen spürbar langsamer sein.

Welche Delphi-Version hast du eigentlich?

Edit: noch der obligatorische Hinweis: trenne Daten von der Oberfläche. Z.B. die Daten in eine TStringList halten.

jaenicke 18. Jun 2011 10:28

AW: Beschränkung bei Aufnahme von Einträgen in Listbox?
 
Zitat:

Zitat von juergen (Beitrag 1107054)
Listview dürfte bei großen Datenmengen spürbar langsamer sein.

Aber nicht mit den VirtualTrees. Damit habe ich auch schon mehrere Millionen Einträge in nicht einmal einer Sekunde hinzugefügt. ;-)

Und was die Daten angeht: Meistens dürfte es sinnvoller sein eine geeignetere Datenstruktur zu benutzen als nur eine TStringList. Wenn es wirklich nur um die Dateinamen geht, reicht die natürlich.


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