AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi FindAllFiles - nur den Pfad als Result
Thema durchsuchen
Ansicht
Themen-Optionen

FindAllFiles - nur den Pfad als Result

Ein Thema von Ajin · begonnen am 1. Okt 2008 · letzter Beitrag vom 1. Okt 2008
 
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:05
Grüss euch !

Ich habe mir mal Luckies tolles FindAllFIles mit Progress angeschaut.

Listbox1.Items.Add(ExtractFilename(PChar(Msg.LParam))); Bedeutet ich lasse mir einen gefundenen Eintrag in die Lustbox schreiben. In diesem Fall nur der Filename.

Listbox1.Items.Add(PChar(Msg.LParam)); Diese Variante liefert mir den ganzen Pfad + Dateiname. Ich möchte den Dateinamen weglassen.
Mit dem guten alten GetFilesInDirectory war das überhaupt kein Problem.
Bevor ich jetzt den String auf Backslashes durchsuche, zerpflücke und und... möchte ich das Problem gleich bei der Wurzel Packen.

Delphi-Quellcode:
procedure TFindFiles.Find(Handle: THandle; RootFolder: string; Mask: string; Recurse: Boolean = True);
var
  hFindFile : THandle;
  wfd : TWin32FindData;
begin
  if FFTerminate then
    Exit;
  Inc(FLevel);
  if RootFolder[length(RootFolder)] <> '\then
    RootFolder := RootFolder + '\';
  ZeroMemory(@wfd, sizeof(wfd));
  wfd.dwFileAttributes := FILE_ATTRIBUTE_NORMAL;
  if Recurse then
  begin
    hFindFile := FindFirstFile(pointer(RootFolder + '*.*'), wfd);
    if hFindFile <> 0 then
    try
      repeat
        if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY then
        begin
          if (string(wfd.cFileName) <> '.') and (string(wfd.cFileName) <> '..') then
          begin
            SendMessage(Handle, FFM_ONDIRFOUND, FLevel, lParam(string(RootFolder + wfd.cFileName)));
            Find(Handle, RootFolder + [b]wfd.cFileName[/b], Mask, Recurse);
          end;
        end;
      until FindNextFile(hFindFile, wfd) = False;
      Inc(FiFolder);
      SendMessage(Handle, FFM_PROGRESS, FiFolder, 0);
    finally
      Windows.FindClose(hFindFile);
    end;
  end;
  hFindFile := FindFirstFile(pointer(RootFolder + Mask), wfd);
  if hFindFile <> INVALID_HANDLE_VALUE then
  try
    repeat
      if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY) then
      begin
        SendMessage(Handle, FFM_ONFILEFOUND, 0, lParam(string(RootFolder + [b]wfd.cFileName[/b])));
      end;
    until FindNextFile(hFindFile, wfd) = False;
  finally
    Windows.FindClose(hFindFile);
  end;
  Dec(FLevel);
end;
Beim debuggen stand in RootFolder genau mein Pfad und in wfd.cFileName der Dateiname. Wenn ich wfd.cFileName entferne bekomme ich trotzdem jedes mal den Pfad+Dateinamen angezeigt. Wo genau muss ich den Rotstift ansetzen damit nur der Pfad als Result ohne den Dateinamen zurück kommt?

Grüsse aus NRW!
  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 10:36 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