![]() |
Foldernamen von Dateinamen unterscheiden
ich muss in meiner Anwendung Pfade zum Lesen und Schreiben von Dateien verarbeiten.
Übergebe ich an meine Funktion eine Stringliste welche nur einen Pfad beschreibt ist die Funktion korrekt, wenn aber das letzte Element einen Dateinamen beschreibt bekomme ich ein unnötiges \ Zeichen im Ergebnis. Was ist der beste Ansatz um dieses Problem zulösen ? ich kann unter Umständen nicht auf das Verzeichnis zugreifen zur Laufzeit meines Programms
Delphi-Quellcode:
function CombinePathStringlist(aPathList: TStringList;
AddServerPrefix: Boolean): String; var i: Integer; begin Result := ''; for i := 0 to (aPathList.Count - 1) do begin Result := IncludeTrailingPathDelimiter(Result + aPathList[i]); end; if AddServerPrefix then Result := IncludeTrailingPathDelimiter(ServerPathPrefix + Result); end; |
AW: Foldernamen von Dateinamen unterscheiden
![]() ![]() ![]() ![]() ... Wie willst du sonst entscheiden können, ob es eine Datei/Verzeichnis ist? :stupid: PS: Auf eine "File"-Extension, bzw. Punkt im Namen, zu prüfen, sagt auch nichts darüber aus. |
AW: Foldernamen von Dateinamen unterscheiden
ich könnte darauf bauen das kein user seinen Folder für *.txt Dateien \subolder.txt nennt ....
|
AW: Foldernamen von Dateinamen unterscheiden
Unter Windows ist allein aus dem Namen nicht zu entscheiden, ob es ein Folder oder ein File ist. Lediglich eine Überprüfung auf wie schon gesagt
Delphi-Quellcode:
oder auf
TFile.Exists(Result)
Delphi-Quellcode:
schafft Klarheit. Man kann also nur auf ein existierendes File prüfen.
faDirectory in TPath.GetAttributes(Result)
BTW: Das aktuelle Delphi 12 bietet übrigens ein passendes TPath.Combine overload für das Zusammensetzen an. |
AW: Foldernamen von Dateinamen unterscheiden
Wir haben kunden, da wird der Username a.mustermann genannt, und somit gibt es ein C:\Users\a~123456.mus
Mit dem Spaß, dass am Ende einige Kurznahmen länger sind, als der Langname. (zum Glück stirbt in paar Monaten Win10 aus und in Win11 sind die Kurznamen standardmäßig aus) |
AW: Foldernamen von Dateinamen unterscheiden
Zitat:
|
AW: Foldernamen von Dateinamen unterscheiden
Das Einzige was geht, wäre, dass angegebene Pfade immer mit \ enden müssen.
|
AW: Foldernamen von Dateinamen unterscheiden
Zitat:
|
AW: Foldernamen von Dateinamen unterscheiden
Es gäbe noch andere Wege. Man kann mittels des Abfragens der Strings der Stringliste anhand der Attribute herausbekommen, ob es sich um eine Datei oder einen Pfad handelt.
"GetFileAttributes(...)" ![]() oder ![]() File Attribute Constants: ![]() Zu der Anmerkung Zitat:
|
AW: Foldernamen von Dateinamen unterscheiden
Moin Bernhard,
ich frage mich gerade wie aPathlist entsteht, denn wenn das einen gültigen Pfad ergeben soll, in dem Du lesen/schreiben kannst, muss dieser ja schon existieren. Wenn der Pfad hingegen nicht existieren muss, sondern eventuell erst erzeugt wird kannst Du es nicht unterscheiden, da der Name, wie schon gesagt wurde, nichts darüber aussagt, ob es sich um ein Verzeichnis oder eine Datei handelt. Je nachdem wie diese Liste von Verzeichnisnamen erzeugt wird, könnte es sogar ganz dumm laufen und es steht mitten in der Liste etwas was als Verzeichnis dienen soll, wo in dem entsprechenden Verzeichnis aber schon eine Datei gleichen Namens existiert und dann liesse sich das Verzeichnis nicht anlegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 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-2025 by Thomas Breitkreuz