Pfade Windows/Linux: Konvertierung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Pfade Windows/Linux: Konvertierung

Beitrag von Ich934 »

Prima. Die kann ja noch mehr wie meine kleine Funktion. Dankeschön!
Tipp für PostgreSQL: www.pg-forum.de

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Pfade Windows/Linux: Konvertierung

Beitrag von wp_xyz »

wp_xyz hat geschrieben:
So 7. Mär 2021, 10:53
Ich weiß nicht, wann das eingeführt wurde, aber ein aktueller Lazarus (2.0.10) passt die Pfad-Trenner automatisch ans Zielbetriebssystem an (getestet auch auf einer VM mit Win2000), wobei allerdings mein Eindruck ist, dass der Windows-Backslash von Linux nicht immer akzeptiert wird. Daher würde ich vorschlagen, du nimmst konsequent den Linux-Slash, dann bist du auf der sicheren Seite.
Diesen Beitrag hat anscheinend niemand gelesen...

Im beigefügten Windows-Projekt wird an drei Beispielen der "falsche" Slash verwendet, und der wird automatisch gegen den Backslash ausgetauscht. Das funktioniert zurück bis mindestens Laz 1.8.4 .

Welche Beispiel hast du denn im Sinn, bei dem unbedingt von dir selbst eine Ersetzung des Pfadtrenners vorgenommen werden muss?
Dateianhänge
windows_slash.zip
(2.15 KiB) 57-mal heruntergeladen

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Pfade Windows/Linux: Konvertierung

Beitrag von Ich934 »

Naja wie im Ursprungsthread geschrieben. Benutzer arbeitet unter Windows, speichert den Pfad, startet unter Linux und dann muss der Pfad entsprechend konvertiert werden.

Schau mir das nochmals genau an. Aber wie gesagt gab es da vor zwei Jahren bei mir Probleme...
Tipp für PostgreSQL: www.pg-forum.de

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Pfade Windows/Linux: Konvertierung

Beitrag von Warf »

Das ist soweit ich weiß ein windows feature, das windows in einigen high level APIs mittlerweile (relative) Unix Pfade erlaubt. Aber drauf verlassen würde ich mich nicht. Durch die Rückwärtskompatibilität von Windows, stellt windows einige alte APIs bereit die nie upgedated wurden, und bei einigen low level APIs funktioniert das auch nicht.

Es ist zwar recht selten das man mal was findet was ein problem mit Unix pfaden hat, wenn dann sucht man sich aber z.T. dumm und dämlich nach dem Fehler. Gleichzeitig geben dir die Windows APIs dann aber Windows pfade zurück, und so kam ich auch schon dazu das ich pfade hatte bei denen nach dem konkatinieren die hälfte des pfades windows und die andere hälfte unix style war. Spätestens wenn du pfadinformationen vom system bekommst, musst du also eine konvertierung vornehmen.
Außerdem ist das auch nur auf windows der fall. Auf POSIX systemen werden Windows Pfade nicht erkannt, tatsächlich kannst du auf einigen systemen (ich glaube Linux) einfach \ als Dateinamen verwenden.

Langer rede kurzer Sinn, du kannst, solang du ausschließlich relative pfade verwendest, zwar theoretisch Unix Pfade (mit /) nehmen, während das die meißte zeit zwar wunderbar funktioniert kann bei manchen Windows API calls kann das in die hose gehen, d.h. man muss was das angeht eventuell ein bisschen aufpassen, aber vor allem muss man alle pfade die als input reinkommen (z.b. von APIs, oder Nutzern, etc.) dann dennoch in Unix Pfade konvertieren. Ums konvertieren kommt man also nicht drum rum

Antworten