![]() |
Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Hallo,
bitte um einen Tip. Aktueller Zustand.... Wir arbeiten mit C++Builder Seattle und haben eine recht große und komplexe Applikation. Wir lesenen eine Textdatei in eine ListBox ein und das dauert bei großen Dateien zB. >10MB sehr lange. Wir lesen die Datei zeilenweise und fügen das mit Add() der Listbox hinzu. Leider gibt es standardmäßig kein ReadFromFile() oder keine Stream-Methode. Ein Memofeld geht zwar sehr schnell aber wir müssen hinterher einzelne Zeilen einfach markieren können, in der Gesamtliste schnell blättern und mit TopIndex und ItemIndex zugreifen können bzw. bestimmte Einzelzeilen zu gegebener Zeit als markiert anzeigen. Gibt es eine andere Komponente, mit der ich diese großen Dateien möglichst schnell einlesen kann ? Wenn ich einen Wald- und Wieseneditor mit meinen Dateien füttere, auch mit 100MB Größe, dann ist das sofort sichtbar. Bin für jeden Tip dankbar... Gruß vom Bodensee B.L. |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Hallo,
zeig doch mal etwas Quellcode, wie Du das Einlesen machst. (Stichwort z.B. BeginUpdate/EndUpdate) |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Wie wäre es mit:
Delphi-Quellcode:
Listboxdieesbetrifft.Items.LoadFromFile();
|
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
danke für die schnellen Antworten...
Mein Code sieht prinziell so aus... -----schnipp f = fopen(ncPfad.c_str(),"rt"); if (f != NULL) { while ( ! feof(f)) { fgets(str,190,f); LineStr = AnsiString(str); LineStr = LineStr.TrimLeft(); LBNCFile->Items->Add(LineStr); uiCount++; -----schnipp Items->LoadFromFile() hab ich auch grad getestet bringt, aber nicht wirklich eine Verbesserung. Kennt jemand eine andere Komponente ? Gerne auch etwas kostenpflichtiges ? Gruß C.R. |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Wie wäre es mit VirtualStringTree. Der ist sehr schnell und kostenlos.
|
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Code:
f = fopen(ncPfad.c_str(),"rt");
if (f != NULL) { LBNCFile->Items->BeginUpdate; while ( ! feof(f)) { fgets(str,190,f); LineStr = AnsiString(str); LineStr = LineStr.TrimLeft(); LBNCFile->Items->Add(LineStr); uiCount++; ... } LBNCFile->Items->EndUpdate; ... }; |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Hallo und danke,
BeginUpdate() und EndUpdate() haben schonmal eine Halbierung der Zeit gebracht. Danke für den Tip. Hat jemand einen Hinweis auf eine andere Komponente ? TMemo geht sehr schnell aber wie komme ich dann an die einzelnen Textzeilen und wie könnte ich die jeweils ganze Zeile mit einem Mausklick markieren ? Editiren muß ich das nicht. Schönen Abend Gruß C.R. |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Wie oben schon erwähnt, warum nicht einfach
Code:
?
LBNCFile->Items->LoadFromFile(...)
...:cat:... |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
TStringGrid? Oder vielleicht sogar TVirtualStringGrid (gibt's doch jetzt in Delphi, oder? Falls nicht
![]() Das kann allerdings von Hause aus keine Checkboxen, die muss man nachbauen. Ist aber recht einfach. Probier erstmal, ob es schnell genug wäre. |
AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Zitat:
Das ist ein TStrings, kann also wie ein Array angesprochen werden und hat natürlich eine .Count Eigenschaft. Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz