AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Thema durchsuchen
Ansicht
Themen-Optionen

256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen

Ein Thema von Bernhard Geyer · begonnen am 4. Okt 2018 · letzter Beitrag vom 8. Nov 2018
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen

  Alt 17. Okt 2018, 14:24
Die LongPathes gibt es schon eine ganze Weile in Windows. Einfach überall "\\?\" vorklatschen funktioniert aber nicht. Der Präfix entfernt zwar das Längenlimit von 260 Charakter, leider aber auch das Postprocessing von Pfaden. Mit entsprechenden Windowsapi-Funktionen kann man einen Pfad zuvor normalisieren. Bei uns habe ich damals extra einen Datentyp eingefügt, der dies Implizit macht. So kann man den Datentyp als Parameter für die Stellen verwenden, an denen es wichtig ist. Der Pfad selber ist aber bis dahin ein "normaler" Pfad. Generell empfiehlt es sich erst dann in den Longpath zu wandeln, wenn man auch wirklich auf Dateien zugreifen muss.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen

  Alt 17. Okt 2018, 19:51
Einfach überall "\\?\" vorklatschen funktioniert aber nicht. Der Präfix entfernt zwar das Längenlimit von 260 Charakter, leider aber auch das Postprocessing von Pfaden.
Was genau meinst du denn mit Postprocessing von Pfaden? Ich kenne leider nur das Expandieren auf Ebene des Object Managers. Und das funktioniert schon seit NT 3.51 tadellos mit langen Pfadnamen, denn unterhalb des Win32-Subsystems ist das die Normalität. Abgesehen davon hat man auch auf Win32-Ebene die Option \??\ als Präfix zu benutzen um bestimmte Logiken im Betriebssystem zu umgehen.

Mit entsprechenden Windowsapi-Funktionen kann man einen Pfad zuvor normalisieren.
Beispiel? Was genau meinst du hier? Umwandlung von relativen in absolute Pfade? Also im Grunde MSDN-Library durchsuchenGetFullPathName und die nativen Freunde davon, welche in dem oben verlinkten Artikel erwähnt werden?

Bei uns habe ich damals extra einen Datentyp eingefügt, der dies Implizit macht.
Und genauso macht man das auch , es sei denn es ist anderweitig in der Logik verankert.

Generell empfiehlt es sich erst dann in den Longpath zu wandeln, wenn man auch wirklich auf Dateien zugreifen muss.
Warum? Was ist denn schädlich daran generell mit langen Pfadnamen zu arbeiten? Denn wenn sich eine Empfehlung ergibt, scheint es ja einen Nachteil bei der Nutzung langer Pfadnamen zu geben. Mit ist kein Nachteil bekannt, bin daher auf die Antwort schon gespannt.

Ach ja, noch als Nachtrag zu meinem vorherigen Beitrag: shlwapi ist beispielsweise ganz schlimm in Sachen hartkodierte Beschränkung auf MAX_PATH, ebenso weitere Teile der "Shell", während bspw. WIN32_FIND_DATA wieder harmlos ist, weil es hier um ein einziges Segment des Pfads geht und eben nicht um den gesamten Pfad. Das soll an Beispielen erst einmal reichen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (17. Okt 2018 um 19:57 Uhr)
  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:43 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