![]() |
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. |
AW: Foldernamen von Dateinamen unterscheiden
Als ich damals keine Lust auf Windows 10 hatte, habe ich in system32 einen Ordner namens GWX.exe angelegt. Dann war Ruhe im Karton.
Zitat:
|
AW: Foldernamen von Dateinamen unterscheiden
Ich hatte letztens ein ganz modernes Chinesisches Spiel gesehn, das hat sich brav nach C:\Programme installiert und weil es seine Daten in seinem Verzeichnis speicherte, wurde die EXE als AdminRequired markiert ... böse wer dummes denkt :stupid:
|
AW: Foldernamen von Dateinamen unterscheiden
Zitat:
Das hat also wohl weder was mit Linux, noch mit der eventuellen Unkenntnis der Entwickler bezüglich der Sitten und Gebräuchen unter Windows zu tun. |
AW: Foldernamen von Dateinamen unterscheiden
Zitat:
seit 1.7 vor 13 Jahren. |
AW: Foldernamen von Dateinamen unterscheiden
Ist halt schon eine Weile her, dass ich noch mit SVN zu tun hatte. Die paar verbliebenen SourceForge-Verzeichnisse auf meinem Rechner sind dann offensichtlich schon etwas älter als das Folder-Datum suggeriert...
|
AW: Foldernamen von Dateinamen unterscheiden
Ich hab meine SVN-Repos auf GIT umgestllt, da des ja auch SVN auschecken kann.
Wobei Emba es 'ne Weile andersrum gemacht hatte, also sein neues Git-Repo der Demos weiterhin mit SVN ausgecheckt (vorher Sourceforge und nun Github), aber da sind die nun auch endlich auf GIT freiwillig gemusst, seit GitHub Serverseitig entfernt hat, dass man dort mit SVN auschecken kann. Nur beim Thema Branch sind leben die hinterm Mond und machen für jedes neues Delphi ein neues Repo auf. :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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