Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FileExists mit UNC Dateifreigabe (https://www.delphipraxis.net/27010-fileexists-mit-unc-dateifreigabe.html)

ol1uw 2. Aug 2004 19:38


FileExists mit UNC Dateifreigabe
 
Hallo Allerseits

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  FileHandle    : Integer ;
  Exists   : Boolean ;   
Begin

  FileHandle := FileOpen('\\192.168.1.2\public\test.txt', fmOpenRead or fmShareDenyNone);
  if FileHandle > 0 then
   Begin
    Exists:=True;
    Fileclose(FileHandle);
   end
  else
    Exists:=False;

end;




procedure TForm1.FormCreate(Sender: TObject);
var
  Exists   : Boolean ;

Begin
 Exists := FileExists('\\192.168.1.2\public\test.txt');
end;
Beide Versuche funktionieren prima solange die Freigabe existiert, wenn nun aber das Freigabe nicht erreichbar ist
(Computer aus) benötigen beide ca. 10 - 20 Sekunden um festzustellen das die Datei nicht existiert.
Nun die Frage gibt es eine "schnellere" Methode ? bzw.
Wie die Erreichbarkeit einer Freigabe testen ?

MfG Uwe

SirThornberry 2. Aug 2004 19:48

Re: FileExists mit UNC Dateifreigabe
 
du könntest nur selbst vorher ein ping versuchen oder ein connect auf den Freigabeport mit entsprechneder Timeouteinstellung. Von Windows her liegt das Timeout eben höher und deshalb die 20 Sekunden oder so

ol1uw 2. Aug 2004 20:30

Re: FileExists mit UNC Dateifreigabe
 
Danke für den Tip

Du meinst so in etwa

Delphi-Quellcode:
  function ShareOnline(unc: string): Boolean;
  var
    IdTCPClient1: TIdTCPClient;
  begin
    if Pos('\\', unc) = 1 then
    begin
      IdTCPClient1 := TIdTCPClient.Create(Self);
      with IdTCPClient1 do
      begin
        Name := 'IdTCPClient1';
        Port := 139;
      end;
      Delete(unc, 1, 2);
      Delete(unc, Pos('\', unc), Length(unc));
      IdTCPClient1.Host := unc;
      try
        IdTCPClient1.Connect(500);
      except
        Result := false;
      end;
      if IdTCPClient1.Connected then
      begin
        IdTCPClient1.Disconnect;
        Result := true;
      end;
    end;
  end;
P.S. Die BackSlash's waren auch beim ersten alle da

SirThornberry 2. Aug 2004 20:32

Re: FileExists mit UNC Dateifreigabe
 
ja von der funktionalität meinte ich genau das


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.

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