Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   DirectoryExists im Netzwerk will nicht wie ich (https://www.delphipraxis.net/183790-directoryexists-im-netzwerk-will-nicht-wie-ich.html)

Marco Steinebach 4. Feb 2015 20:46

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

hathor 4. Feb 2015 22:41

AW: DirectoryExists im Netzwerk will nicht wie ich
 
Delphi 5 Standard...naja...
http://www.delphipraxis.net/1222644-post11.html
...in XE2 ist die Funktion wesentlich umfangreicher.

Bernhard Geyer 4. Feb 2015 23:38

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.

himitsu 5. Feb 2015 03:01

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.

roga 5. Feb 2015 06:58

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:
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;
Vorher wird noch geprüft, ob es sich um ein Netzwerkverzeichnis handelt:
Delphi-Quellcode:
if Copy(DBPath, 1, 2) = '\\' then
begin
  if ConnectToNetwork(DBPath) <> 0 then
    // keine Verbindung zum Netzwerkordner
  ...
end;
Ich hoffe, ich konnte Dir weiterhelfen.

roga

Dejan Vu 5. Feb 2015 07:21

AW: DirectoryExists im Netzwerk will nicht wie ich
 
Zitat:

Zitat von Marco Steinebach (Beitrag 1288828)
...eine VPN-Verbindung zu einem anderen PC

Zitat:

Zitat von hathor (Beitrag 1288830)
Über alle USB Anschlüsse iterieren, um ein bestimmtes Gerät zu finden

Wer lesen kann, ist klar im Vorteil.
Zitat:

Zitat von hathor (Beitrag 1288830)
Delphi 5 Standard...naja...

Kann man mit dem modernsten Delphi das Problem besser lösen?
So mancher Beitrag ...naja... ;-)

Sir Rufo 5. Feb 2015 07:59

AW: DirectoryExists im Netzwerk will nicht wie ich
 
Zitat:

Zitat von Dejan Vu (Beitrag 1288844)
Wer lesen kann, ist klar im Vorteil.

Den darfst dir selber als heutiges Tagesmotto auf den Bildschirm kleben ;)

In dem explizit verlinkten Beitrag des Themas wird die aktuellste Version von
Delphi-Quellcode:
DirectoryExists
gezeigt (aus Delphi XE2). Die arbeitet etwas zuverlässiger.

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

DeddyH 5. Feb 2015 08:03

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?

p80286 5. Feb 2015 08:04

AW: DirectoryExists im Netzwerk will nicht wie ich
 
Zitat:

Zitat von Dejan Vu (Beitrag 1288844)
Zitat:

Zitat von Marco Steinebach (Beitrag 1288828)
...eine VPN-Verbindung zu einem anderen PC

Zitat:

Zitat von hathor (Beitrag 1288830)
Über alle USB Anschlüsse iterieren, um ein bestimmtes Gerät zu finden

Wer lesen kann, ist klar im Vorteil.

Da kann ich Dir nur zustimmen,:mrgreen: die Überschrift ist ein wenig irreführend.

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

himitsu 5. Feb 2015 09:13

AW: DirectoryExists im Netzwerk will nicht wie ich
 
Zitat:

Zitat von Sir Rufo (Beitrag 1288848)
In dem explizit verlinkten Beitrag des Themas wird die aktuellste Version von
Delphi-Quellcode:
DirectoryExists
gezeigt (aus Delphi XE2). Die arbeitet etwas zuverlässiger.

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

Wobei genaugenommen das DirectoryExisits doch eigentlich richtig funktioniert.
"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 12:00 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz