AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Dateien in ListView eintragen - Fortschritt anzeigen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien in ListView eintragen - Fortschritt anzeigen lassen

Ein Thema von Yheeky · begonnen am 25. Feb 2005 · letzter Beitrag vom 26. Feb 2005
 
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Dateien in ListView eintragen - Fortschritt anzeigen lassen

  Alt 25. Feb 2005, 22:22
Hi,

ich habe folgenden Code hier aus der DP genommen und in mein Programm eingebaut. Es handelt sich um den Code, mit dem man die Dateien eines Verzeichnisses (inkl. Unterverzeichnisse) auslesen kann. Dies kann ja bei vielen Dateien sehr lange dauern. Meine Frage ist nun, wie ich den Fortschritt in einer ProgressBar anzeigen lassen kann. Zudem sollten die Dateien erst in der ListView gezeigt werden, wenn alle eingetragen wurden (das geht mit BeginUpdate und EndUpdate, doch wo baue ich das hier im Code ein?).
Hier ist der genaue Code:

Code:
function TForm1.FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True) : TStringDynArray;
var
  wfd         : TWin32FindData;
  hFile       : THandle;
  SLVItem     : TListItem;
  IDTag       : TID3v2;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';
  if Recurse then
  begin
    hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
    if hFile <> INVALID_HANDLE_VALUE then
    try
      repeat
        if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY =
          FILE_ATTRIBUTE_DIRECTORY then
          if (string(wfd.cFileName) <> '.') and (string(wfd.cFileName) <> '..')
            then
            FindAllFiles(RootFolder + wfd.cFileName, Mask, Recurse);
      until FindNextFile(hFile, wfd) = False;
    finally
      windows.FindClose(hFile);
    end;
  end;
  hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);

  if hFile <> INVALID_HANDLE_VALUE then
  try
    repeat
      if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <>
        FILE_ATTRIBUTE_DIRECTORY then
      begin
      SLVItem := Form1.SmartListView1.Items.Add;
      SLVItem.SubItems.Add(wfd.CFileName);

      // MP3
      if LowerCase(Copy(wfd.CFileName, LastDelimiter('.', wfd.CFileName)+1, Length(wfd.CFileName)-LastDelimiter('.', wfd.CFileName))) = 'mp3' then
         begin
         SLVItem.ImageIndex := 0;
         SLVItem.SubItems.Add('Mp3 - Datei');

         // ID-Tags auslesen

         IDTag := TID3v2.Create;
         IDTag.ReadFromFile(RootFolder + wfd.CFileName);
         SLVItem.SubItems.Add(IDTag.Artist);
         SLVItem.SubItems.Add(IDTag.Title);
         SLVItem.SubItems.Add(IDTag.Genre);

         end;

      // WAVE
      if LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) = 'wav' then
         begin
         SLVItem.ImageIndex := 0;
         SLVItem.SubItems.Add('Wave - Datei');
         end;

      // MPG, MPEG, AVI, WMV, ASF
      if IstVideoDatei(wfd.cFileName) = True then
         begin
         SLVItem.ImageIndex := 1;
         SLVItem.SubItems.Add('Video - Datei');
         end;

     // Wenn es keiner der o.a. Dateien ist
     if (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'mp3') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'wav') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'mpg') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'mpeg') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'wmv') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'asf') and
        (LowerCase(Copy(wfd.cFileName, LastDelimiter('.', wfd.cFileName)+1, Length(wfd.cFileName)-LastDelimiter('.', wfd.cFileName))) <> 'avi') then
        begin
        SLVItem.ImageIndex := 2;
        SLVItem.SubItems.Add('Sonstige Datei');
        end;


     end;
    until FindNextFile(hFile, wfd) = False;
  finally
    Windows.FindClose(hFile);

  end;


end;
Ich hoffe, mir kann jemand helfen. Danke!

Gruß Yheeky
  Mit Zitat antworten Zitat
 


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:13 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