AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Hilfeersuchen - schnelle Anzeige Textdatei in TListBox
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

Ein Thema von CaseyRyback · begonnen am 31. Mai 2021 · letzter Beitrag vom 18. Jun 2021
Antwort Antwort
Seite 1 von 3  1 23      
CaseyRyback

Registriert seit: 5. Mär 2014
6 Beiträge
 
#1

Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 11:44
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.
  Mit Zitat antworten Zitat
hoika

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

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 11:59
Hallo,
zeig doch mal etwas Quellcode,
wie Du das Einlesen machst.
(Stichwort z.B. BeginUpdate/EndUpdate)
Heiko
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 12:01
Wie wäre es mit:
Listboxdieesbetrifft.Items.LoadFromFile();
  Mit Zitat antworten Zitat
CaseyRyback

Registriert seit: 5. Mär 2014
6 Beiträge
 
#4

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 14:16
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.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 14:31
Wie wäre es mit VirtualStringTree. Der ist sehr schnell und kostenlos.
  Mit Zitat antworten Zitat
TiGü

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

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 15:55
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;
   ...
};
  Mit Zitat antworten Zitat
CaseyRyback

Registriert seit: 5. Mär 2014
6 Beiträge
 
#7

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 18:02
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 18:13
Wie oben schon erwähnt, warum nicht einfach
Code:
LBNCFile->Items->LoadFromFile(...)
?

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.605 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 18:20
TStringGrid? Oder vielleicht sogar TVirtualStringGrid (gibt's doch jetzt in Delphi, oder? Falls nicht TdzVirtualStringGrid aus meiner dzlib), dann kann man den Text gleich in einer TStringList lassen.

Das kann allerdings von Hause aus keine Checkboxen, die muss man nachbauen. Ist aber recht einfach. Probier erstmal, ob es schnell genug wäre.
Thomas Mueller
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#10

AW: Hilfeersuchen - schnelle Anzeige Textdatei in TListBox

  Alt 31. Mai 2021, 19:10
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.
Zumindest an die Memo Zeilen kommst du über .Linea des Memos Ran.
Das ist ein TStrings, kann also wie ein Array angesprochen werden
und hat natürlich eine .Count Eigenschaft.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

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 17:53 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