![]() |
Verzeichnis aus Dateinamen extrahieren
Um den Namen des Verzeichnisses (ohne den restlichen Pfad), in dem eine Datei gespeichert ist, zu extrahieren, ist folgende Funktion nutzbar:
Delphi-Quellcode:
function GetFileDir(const aBasepath, aFilename: string): string;
begin Result := Copy(aFilename, Length(aBasepath) +1, PosEx('\', aFilename, Length(aBasepath) + 1) - Length(aBasepath)); end; |
Re: Verzeichnis aus Dateinamen extrahieren
Hallo,
oder ExtractFilePath benutzen. Heiko |
Re: Verzeichnis aus Dateinamen extrahieren
Zitat:
|
Re: Verzeichnis aus Dateinamen extrahieren
Aber
Delphi-Quellcode:
sollte gehen. Besonders dolle ist das allerdings nicht, geb ich zu.
ExtractFilename(ExcludeTrailingPathDelimiter(ExtractFilePath(aFilename)));
|
Re: Verzeichnis aus Dateinamen extrahieren
Man muss folgendes übergeben:
C:\meineApplikation\ C:\meineApplikation\meineDaten\meineDatei.txt um dann meineDaten zu bekommen? Mein Vorschlag, da ich kein PosEx habe:
Delphi-Quellcode:
ExcludeTrailingBackslash, falls man D5 hat und den Backslash nicht will
function GetFileDir(const aBasepath, aFilename: string): string;
begin Result := ExtractFilePath(aFileName); Delete(Result, 1, Length(aBasePath)); end; @:DeddyH Wenn mehr als ein Ordner-Zweig zw. aBasepath und aFilename liegt, wird das nix. |
Re: Verzeichnis aus Dateinamen extrahieren
Zitat:
C:\meineApplikation\ wenn der Pfad der Datei in einem Edit-Feld angegeben wird? :gruebel: |
Re: Verzeichnis aus Dateinamen extrahieren
Zitat:
Ginge es nur um den direkt übergeordneten Ordner der Datei, könnte man sich die Übergabe von aBasePath ja gleich sparen. |
Re: Verzeichnis aus Dateinamen extrahieren
Zitat:
Aber zurück zum OT: Der Thread-Ersteller möchte den Verzeichnisnamen des Verzeichnisses bekommen, in dem die Datei liegt. Daher müsste gelten:
Delphi-Quellcode:
Das liefert allerdings immer einen leeren string, weil das dritte Argument von Copy eine negative Zahl ist (weil PosEx in dem Fall immer 0 zurück gibt). Und in dem Fall wäre der Vorschlag von DeddyH vielleicht nicht die schönste, aber eine schnelle Lösung.
aBasepath := ExtractFilePath(aFilename)
Man könnte z.B. auch aFilename an den '\' splitten und in ein Array speichern und anschliessend
Delphi-Quellcode:
zurück geben (ArrayVar[High(ArrayVar)] ist ja dann der Dateiname selber) :)
ArrayVar[High(ArrayVar) - 1]
|
AW: Verzeichnis aus Dateinamen extrahieren
Für alle die das noch mal aufrufen
sVerzeichnis:= 'c:/Verzeichnis/Unterverzeichnis/Datei.txt'; sVerzeichnis:= ExtractFileDir(sVerzeichnis); = c:/Verzeichnis/Unterverzeichnis |
AW: Verzeichnis aus Dateinamen extrahieren
Besser ExtractFilePath verwenden, denn ExtractFileDir hat einen Bug und Embarcadero hat nicht vor Diesen zu reparieren.
Bei X:\Datei.txt (z.B. USB-Stick, Netzlaufwerk oder CD) liefert es X: aber beim "Pfad" muß ort unbedingt der \ enthalten sein, da X: relativ zum aktuellen Arbeitsverzeichnis dieses Laufwerks ist, während X:\ wirklich "immer" das Rootverzeichnis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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 by Thomas Breitkreuz