AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Existenz langer Pfade

Ein Thema von tomkupitz · begonnen am 3. Jul 2017 · letzter Beitrag vom 4. Jul 2017
Antwort Antwort
SneakyBagels
(Gast)

n/a Beiträge
 
#1

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 14:45
Zitat:
"\\QNAP\MyShare\Daten\usw.txt" => "\\?\UNC\QNAP\MyShare\Daten\usw.txt"
Wenn du deiner Funktion \\192.168.0.1\volumenname übergibst, dann würde \\?\UNC\192.168.0.1\volumenname daraus werden was in einem Fehler resultiert.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 14:49
Wenn du deiner Funktion \\192.168.0.1\volumenname übergibst, dann würde \\?\UNC\192.168.0.1\volumenname daraus werden was in einem Fehler resultiert.
Habe ich bei mir gerade mit Windows 10 getestet. Ergibt bei mir keinen Fehler.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#3

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 14:51
Ist \\?\UNC\192.168.0.1\volumenname (oder welche IP auch immer, aber es muss eine IP sein) bei dir erreichbar mit \\?\UNC\ davor?

Edit:
gerade "\\?\UNC\192.168.0.1\volumenname" (Festplatte am Router die so auch zum Test existiert) unter Windows 10 getestet mit Resultat
Zitat:
[Window Title]
Explorer

[Content]
Die Datei "\\?\UNC\192.168.0.1\volumenname" wurde nicht gefunden. Überprüfen Sie die Schreibweise, und wiederholen Sie den Vorgang.

[OK]

Geändert von SneakyBagels ( 4. Jul 2017 um 14:54 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#4

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 14:58
Äh, Du testest das mit dem Windows-Explorer??

Nur noch mal zur Erläuterung: Ein UNC-Pfad hat die Form "\\server\blub". Der Präfix "\\?\" und "\\?\UNC\" hat mit UNC nichts zu tun, sondern ist eine Krücke die von MS irgendwann (für Windows NT?) erfunden wurde, um die API-Aufrufe zu erweitern.

Ich teste das z.B. mit
Delphi-Quellcode:
    
  if DirectoryExists(GetPrefixedPath('\\192.168.0.1\data\test'))
  then
    writeln('Direktory gefunden');
Und das funktioniert.

Geändert von samso ( 4. Jul 2017 um 15:05 Uhr) Grund: Erläuterung nachgereicht
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#5

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 15:12
Welchen Unterschied hat denn dann \\?\UNC und \\?\

?
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 15:37
Ich würde das mal frei so beschreiben:

"\\?\": Notation für ein lokales Laufwerke oder Gerät
"\\?\UNC\": Notation für ein Netzwerklaufwerk

Wie wir ja aus #1 gelernt haben funktioniert die Notation "\\?\\\QNAP\abc" ja nicht. Die Notation "\\?\UNC\QNAP\abc" führt hingegen zum gewünschten Ergebnis.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#7

AW: Existenz langer Pfade

  Alt 4. Jul 2017, 15:53
Zitat:
"\\?\": Notation für ein lokales Laufwerke oder Gerät
"\\?\UNC\": Notation für ein Netzwerklaufwerk
So etwas in der Art dachte ich mir schon. Gut zu wissen. Ich denke unsere Lösungen sind jetzt quasi gleich. Aber ich bin sicher es geht noch besser.

Delphi-Quellcode:
function getUNCPath(const aPath: string): string;
begin
 Result := aPath;

 if aPath.StartsWith('\\') then
  begin
   if TPath.GetExtendedPrefix(aPath) = TPathPrefixType.pptNoPrefix then
    Result := '\\?\UNC\' + Copy(aPath, 3, Length(aPath));
  end
 else
  Result := '\\?\' + aPath;
end;

function removeUNCFromPath(const aPath: string): string;
begin
 Result := aPath;

 if TPath.GetExtendedPrefix(aPath) = TPathPrefixType.pptExtended then // \\?\ present
  Delete(Result, 1, 4)
 else if TPath.GetExtendedPrefix(aPath) = TPathPrefixType.pptExtendedUNC then // \\?\UNC\ present
  Delete(Result, 3, 6);
end;

Geändert von SneakyBagels ( 4. Jul 2017 um 15:59 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 07:38 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