Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pfad ermitteln einer Datei (https://www.delphipraxis.net/14645-pfad-ermitteln-einer-datei.html)

Alex_ITA01 13. Jan 2004 11:09


Pfad ermitteln einer Datei
 
Hallo erstmal,
ich habe da mal ein problem und zwar wenn ich angenommen in einer listbox ein dateinamen geladen habe (z.B. Hallo.txt), wie bekomme ich jetzt den Pfad heraus wo sich die datei befindet?
wenn ich C:\Hallo.txt habe , weiß ich mit ExtractFilePath();
ich habe aber nur Hallo.txt kann ich da nicht irgendwie herausfinden wo die liegt?

mfg Alex

Matze 13. Jan 2004 11:10

Re: Pfad ermitteln einer Datei
 
Mit FindFirst/FindNext suchen lassen.

Man erhält so ganz einfach den Pfad.

Alex_ITA01 13. Jan 2004 11:11

Re: Pfad ermitteln einer Datei
 
danke werde es mal probieren
mfg alex

Matze 13. Jan 2004 11:11

Re: Pfad ermitteln einer Datei
 
Achja, hier der Link dazu:

http://www.delphipraxis.net/viewtopi...ight=findfirst

Alex_ITA01 13. Jan 2004 11:16

Re: Pfad ermitteln einer Datei
 
jo danke schön,wollte nämlich grade fragen wie das geht aber hat sich ja jetzt mit dem link erledigt

mfg alex

Alex_ITA01 13. Jan 2004 11:24

Re: Pfad ermitteln einer Datei
 
@Matze: ich muss doch nochmal nachfragen :-)

und zwar habe ich das jetzt mal so gemacht:
//Aufruf
FindAllFiles('C:','*.*',true);
//Aufruf

Delphi-Quellcode:
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
      try
        repeat
          if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
            if (SR.Name <> '.') and (SR.Name <> '..') then
              FindAllFiles(RootFolder + SR.Name, Mask, Recurse);
        until FindNext(SR) <> 0;
      finally
        FindClose(SR);
      end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory <> faDirectory then
        begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name

          // folgende Zeile schreibt den vollständigen Namen in eine Memo Feld des
          // Formulars Form1
          //Form1.Memo1.Lines.Add(RootFolder + SR.Name);
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
end;
mein problem ist jetzt wo gebe ich denn an das er Hallo.txt suchen soll?
und kann ich auch mehrere Partitionen durchsuchen lassen?

MFG Alex

MathiasSimmack 13. Jan 2004 11:26

Re: Pfad ermitteln einer Datei
 
Bei "Mask" im Kopf der Prozedur:
Zitat:

Zitat von Alex_ITA01
Delphi-Quellcode:
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);

"*.*" steht nämlich für alle Dateien.

Mehrere Partitionen kannst du nur durchsuchen, wenn du vorher ermittelst, wie viele es auf dem Ziel-Rechner gibt, und wenn du o.g. Prozedur dann am besten in einer Schleife aufrufst, wobei "RootFolder" dann die jeweilige Partition (C:\ -> ?) ist.

Alex_ITA01 13. Jan 2004 11:28

Re: Pfad ermitteln einer Datei
 
achso, danke
und geht das auch mit mehrern partitionen?

mfg alex

Luckie 13. Jan 2004 11:45

Re: Pfad ermitteln einer Datei
 
Ich wüede es prinzipiell anders machen. Irgendwo muss die Datei ja herkommen. Wenn du jetzt nur den Name ohne Pfad in der Listbox anzeigen läßt, würde ich den Pfad als Objekt zu dem Item in der Listbox speichern. Wie das geht, kannst du hier kucken: http://www.luckie-online.de/files/demos/ -> Listbox_AddObject

himitsu 13. Jan 2004 11:45

Re: Pfad ermitteln einer Datei
 
z.B. so:
Delphi-Quellcode:
For i := 67 {C} to 90 {Z} do
  FindAllFiles(Chr(i) + ':', '*.*', true);


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.
Seite 1 von 2  1 2      

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