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
Antwort Antwort
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
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#2

Re: FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:11
wenn ich dich jetzt richtig verstehe dürfte dir eventuell ExtractFilePath(); helfen

wenn nicht dann vergiss das
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:13
Was ist eine Lustbox? Schweinkram?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#4

Re: FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:16
Zitat von DeddyH:
Was ist eine Lustbox? Schweinkram?


lustbox
  Mit Zitat antworten Zitat
Ajin

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

Re: FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:20
Natürlich geht ExtractFilePath

[Oftopic]
Eine Lustbox... hmm

- eine Spielkonsole?
- (schlechte) deutsche Übersetzung für Joystick?


[/offtopic]
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: FindAllFiles - nur den Pfad als Result

  Alt 1. Okt 2008, 14:26
Hallo,

verstehe das nicht ganz, reicht nicht hier
SendMessage(Handle, FFM_ONDIRFOUND, FLevel, lParam(string(RootFolder + wfd.cFileName))); RootFolder wegzulassen?

Stephan
  Mit Zitat antworten Zitat
Antwort Antwort


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