![]() |
Delphi-Version: 5
DirectoryExists im Netzwerk will nicht wie ich
Hallo zusammen,
Ausgangssituation: ich habe eine VPN-Verbindung zu einem anderen PC und ein gemaptes Laufwerk. Mein Programm soll mittels DirectoryExists ('n:\blabla') herausfinden, ob das Verzeichnis auf dem Netzwerk-Laufwerk erreichbar ist. Das gibt aber nix, da DirectoryExists immer false zurückliefert. Rufe ich den Explorer auf, gehe auf das Laufwerk und in das gewünschte Verzeichnis hinein, und starte anschließend mein Programm, ist alles schön. Ich hab mich zwar schon durchgegooglt, und auch schon gefunden, daß ich nicht der einzige bin, aber kann mir vielleicht jemand sagen 1. warum das so ist und wie man 2. verhindern kann, daß man erst mit dem Explorer in das Verzeichnis gehen muß, damit das Programm funktioniert? Für Hilfe wäre ich echt dankbar. Herzlich grüßt Marco |
AW: DirectoryExists im Netzwerk will nicht wie ich
Delphi 5 Standard...naja...
![]() ...in XE2 ist die Funktion wesentlich umfangreicher. |
AW: DirectoryExists im Netzwerk will nicht wie ich
Der Windowsexplorer wird hier im Hintergrund einen Logon bzw. ein Connect auf ein im Moment nicht verbundenes LW durchführen. Diesen Connect müsstest du nachimplementieren.
|
AW: DirectoryExists im Netzwerk will nicht wie ich
Vielleicht auch mal nachschauen ob, bzw. welchen ErrorCode das DirectoryExists zurück gibt?
Eventuell erfährt man da mehr, warum es nichts findet. |
AW: DirectoryExists im Netzwerk will nicht wie ich
Wie Bernhard bereits schrieb, über den Windows Explorer erfolgt das Login automatisch. Ich habe auch eine Weile nach einer Lösung gesucht:
Delphi-Quellcode:
Vorher wird noch geprüft, ob es sich um ein Netzwerkverzeichnis handelt:
function ConnectToNetwork(NetPath: WideString): DWORD;
var NetResource: TNetResourceW; begin // Abschließendes "\" aus NetPath entfernen! if NetPath[Length(NetPath)] = '\' then Delete(NetPath, Length(NetPath), 1); ZeroMemory(@NetResource, SizeOf(TNetResource)); with NetResource do begin dwType := RESOURCETYPE_ANY; lpLocalName := nil; lpRemoteName := PWideChar(NetPath); lpProvider := nil; end; Result := WNetAddConnection2W(NetResource, nil, nil, CONNECT_INTERACTIVE); end;
Delphi-Quellcode:
Ich hoffe, ich konnte Dir weiterhelfen.
if Copy(DBPath, 1, 2) = '\\' then
begin if ConnectToNetwork(DBPath) <> 0 then // keine Verbindung zum Netzwerkordner ... end; roga |
AW: DirectoryExists im Netzwerk will nicht wie ich
Zitat:
Zitat:
Zitat:
So mancher Beitrag ...naja... ;-) |
AW: DirectoryExists im Netzwerk will nicht wie ich
Zitat:
In dem explizit verlinkten Beitrag des Themas wird die aktuellste Version von
Delphi-Quellcode:
gezeigt (aus Delphi XE2). Die arbeitet etwas zuverlässiger.
DirectoryExists
Allerdings wird diese Funktion alleine es nicht schaffen die Verbindung herzustellen genau wie die andere Funktion es nicht schaffen wird, denn es handelt sich ja um ein gemapptes Laufwerk und da bringt ein Test auf
Delphi-Quellcode:
am Anfang des Pfads irgendwie nichts.
'\\'
Es braucht dort noch ein wenig mehr |
AW: DirectoryExists im Netzwerk will nicht wie ich
Man müsste aber doch mit GetDriveType etc. herausfinden können, ob es sich um ein Netzlaufwerk handelt, dessen UNC-Pfad ermitteln und dann versuchen, sich zu verbinden, oder?
|
AW: DirectoryExists im Netzwerk will nicht wie ich
Zitat:
Aber davon abgesehen, gibt es zwei Arten von Netzlaufwerken? Ich kenne Sie nur als h:\...z:\ und die sind verfügbar oder gar nicht vorhanden. Das beschriebene Verhalten kenne ich nur von Diskettenlaufwerken (oder Wechselplatten). Gruß K-H |
AW: DirectoryExists im Netzwerk will nicht wie ich
Zitat:
"Im Moment ist dieser Pfad nicht existent" ... Ob er das wäre, nachdem man das Netzlaufwerk verbindet, ist eine andere Angelegenheit. :stupid: Wenn man direkt das Rootverzeichnis prüft, as kommt da denn bei raus? Wer kennt noch die Geschichte "Meister, wie kann ich prüfen, ob der Computer mit dem Internet verbunden ist?" ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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 by Thomas Breitkreuz