Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Foldernamen von Dateinamen unterscheiden (https://www.delphipraxis.net/215572-foldernamen-von-dateinamen-unterscheiden.html)

bernhard_LA 30. Jul 2024 09:41

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;

himitsu 30. Jul 2024 09:48

AW: Foldernamen von Dateinamen unterscheiden
 
Delphi-Referenz durchsuchenFileExists
Delphi-Referenz durchsuchenDirectoryExists
Delphi-Referenz durchsuchenTFile.Exists
Delphi-Referenz durchsuchenTDirectory.Exists
...

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.

bernhard_LA 30. Jul 2024 10:10

AW: Foldernamen von Dateinamen unterscheiden
 
ich könnte darauf bauen das kein user seinen Folder für *.txt Dateien \subolder.txt nennt ....

Uwe Raabe 30. Jul 2024 10:19

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:
TFile.Exists(Result)
oder auf
Delphi-Quellcode:
faDirectory in TPath.GetAttributes(Result)
schafft Klarheit. Man kann also nur auf ein existierendes File prüfen.

BTW: Das aktuelle Delphi 12 bietet übrigens ein passendes TPath.Combine overload für das Zusammensetzen an.

himitsu 30. Jul 2024 12:31

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)

dummzeuch 30. Jul 2024 12:41

AW: Foldernamen von Dateinamen unterscheiden
 
Zitat:

Zitat von bernhard_LA (Beitrag 1539336)
ich könnte darauf bauen das kein user seinen Folder für *.txt Dateien \subolder.txt nennt ....

Ein Kollege von mir hat vor kurzem einen Ordner namens bilder.dbf angelegt ...

himitsu 30. Jul 2024 12:56

AW: Foldernamen von Dateinamen unterscheiden
 
Das Einzige was geht, wäre, dass angegebene Pfade immer mit \ enden müssen.

Uwe Raabe 30. Jul 2024 14:01

AW: Foldernamen von Dateinamen unterscheiden
 
Zitat:

Zitat von dummzeuch (Beitrag 1539347)
Ein Kollege von mir hat vor kurzem einen Ordner namens bilder.dbf angelegt ...

Ich habe hier einen Haufen Ordner mit Namen .git, .hg oder .svn

THY4243 30. Jul 2024 21:25

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(...)"
https://stackoverflow.com/questions/...-xe2-correctly

oder
https://www.delphi-treff.de/tipps-tr...ute-ermitteln/

File Attribute Constants:
https://learn.microsoft.com/en-us/wi...bute-constants

Zu der Anmerkung
Zitat:

"ich kann unter Umständen nicht auf das Verzeichnis zugreifen zur Laufzeit meines Programms "
Wenn kein Zugriff zur Laufzeit besteht, ist es imho einerlei, ob es sich um eine Datei oder ein Verzeichnis handelt. Im Ergebnis lässt sich der String aus der Stringlist dann nicht verarbeiten.

Christian Seehase 2. Aug 2024 19:31

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.
Seite 1 von 2  1 2      

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