AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Verzeichnis aus Dateinamen extrahieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verzeichnis aus Dateinamen extrahieren

Ein Thema von HeikoAdams · begonnen am 18. Mai 2009 · letzter Beitrag vom 18. Dez 2024
Antwort Antwort
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#1

Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 15:33
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;
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 15:37
Hallo,

oder ExtractFilePath benutzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:10
Zitat von hoika:
oder ExtractFilePath benutzen
Eben nicht. ExtractFilePath liefert - wie der Name schon sagt, den kompletten Pfad. Meine Funktion liefer nur den Namen des Verzeichnisses.
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:14
Aber ExtractFilename(ExcludeTrailingPathDelimiter(ExtractFilePath(aFilename))); sollte gehen. Besonders dolle ist das allerdings nicht, geb ich zu.
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
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:30
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:
function GetFileDir(const aBasepath, aFilename: string): string;
begin
  Result := ExtractFilePath(aFileName);
  Delete(Result, 1, Length(aBasePath));
end;
ExcludeTrailingBackslash, falls man D5 hat und den Backslash nicht will

@eddyH
Wenn mehr als ein Ordner-Zweig zw. aBasepath und aFilename liegt, wird das nix.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#6

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:36
Zitat von Satty67:
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:
function GetFileDir(const aBasepath, aFilename: string): string;
begin
  Result := ExtractFilePath(aFileName);
  Delete(Result, 1, Length(aBasePath));
end;
ExcludeTrailingBackslash, falls man D5 hat und den Backslash nicht will
Und wie berechnest du
C:\meineApplikation\
wenn der Pfad der Datei in einem Edit-Feld angegeben wird?
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:44
Zitat von DevilsCamp:
Und wie berechnest du
Alles vor "Mein Vorschlag" war nur eine Feststellung, was der Code des Ausgangsposters meiner Meinung nach macht. Der erwartet scheinbar einen bereits bekannten BasePath.

Ginge es nur um den direkt übergeordneten Ordner der Datei, könnte man sich die Übergabe von aBasePath ja gleich sparen.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#8

Re: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Mai 2009, 16:52
Zitat von Satty67:
Zitat von DevilsCamp:
Und wie berechnest du
Alles vor "Mein Vorschlag" war nur eine Feststellung, was der Code des Ausgangsposters meiner Meinung nach macht. Der erwartet scheinbar einen bereits bekannten BasePath.

Ginge es nur um den direkt übergeordneten Ordner der Datei, könnte man sich die Übergabe von aBasePath ja gleich sparen.
Sorry, ich war irgendwie der Meinung, dass ich den Thread-Ersteller zitiere

Aber zurück zum OT:
Der Thread-Ersteller möchte den Verzeichnisnamen des Verzeichnisses bekommen, in dem die Datei liegt. Daher müsste gelten:
aBasepath := ExtractFilePath(aFilename) 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.

Man könnte z.B. auch aFilename an den '\' splitten und in ein Array speichern und anschliessend
ArrayVar[High(ArrayVar) - 1] zurück geben (ArrayVar[High(ArrayVar)] ist ja dann der Dateiname selber)
  Mit Zitat antworten Zitat
mdittrich

Registriert seit: 7. Feb 2017
5 Beiträge
 
#9

AW: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Dez 2024, 13:48
Für alle die das noch mal aufrufen

sVerzeichnis:= 'c:/Verzeichnis/Unterverzeichnis/Datei.txt';

sVerzeichnis:= ExtractFileDir(sVerzeichnis);

= c:/Verzeichnis/Unterverzeichnis
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Verzeichnis aus Dateinamen extrahieren

  Alt 18. Dez 2024, 15:38
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.
$2B or not $2B
  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 02:06 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