Dateien einlesen ProgressBar
-
Hallo Gemeinde,
ich habe eine Frage eher konzeptioneller Natur.
Ich lese Textdateien aus einem Ordner und lese auch deren Inhalt gleich aus. Jetzt hätte ich gerne eine ProgressBar die auch mit 100% endet. Da ich aber mit einer while-Schleife die Dateien einlese weiß ich zu dem Zeitpunkt ja nicht wieviele Dateien es werden, habe damit also keine Referenz für die Bar.
Gibt es eine schnelle Möglichkeit erst die Anzahl zu ermitteln und dann einzulesen oder mache ich hier einen grundsätzlichen Denkfehler?Danke und Gruß
myerscola
-
Ich habe das damals so gelöst, dass ich mir die Dateinamen zuerst in eine TStringList geschrieben habe, bevor ich die Datein tatsächlich einlese und auswerte. Die Anzahl der Dateien entspricht dann TStringList::Count.
Vielleicht gibt es noch eine einfachere Methode...Gruß
KK
-
ok, danke erst mal. Ich dachte es gäbe vlt. eine Funktion um die Anzahl zu ermitteln. Ich kann meine while-Schleife ja auch 2x laufen lassen - einmal wie Du sagst ohne die Dateien zu öffnen und dabei die Durchgänge zählen.
Wollte nur wissen ob der Profi was Eleganteres zu bieten hat.
-
Bin kein Profi, muss mir mit so einfachen Mitteln helfen...
Im BCB fällt mir aber auch nichts anderes ein. Vielleicht gibt es in der Win-API ja was, aber da hab ich keine Ahnung von.
Gruß KK
-
Hallo,
mit readdir kann man auch die Anzahl der Dateien ermitteln.
Ein Beispiel gibts in der alten BCB3-Hilfe.// einbinden #include <dirent.h>
edit:
Noch ein Beispiel mit WinApi:HANDLE hFind; WIN32_FIND_DATA fd; bool bRet = true; hFind = FindFirstFile( "D:\\GIF\\*.*", &fd ); while ( hFind != INVALID_HANDLE_VALUE && bRet ) { bRet = FindNextFile( hFind, &fd ); Memo1->Lines->Add(fd.cFileName); }
Der Inhalt des Verzeichnisses und damit die Anzahl der Dateien muss wohl in jedem Fall selbst ermittelt werden.