FExists() auf Verzeichnis [erledigt]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2125
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal

FExists() auf Verzeichnis [erledigt]

Beitrag von Werner_Bayern »

Servus,

warum bekomme ich hier immer ein .f. zurück, wenn der gültige Pfad x mit
\\192.168.202.14\WW\
belegt ist?

Code: Alles auswählen

FExists(if(right(x, 1) == "\", left(x, len(x) - 1), x), "=D*")
Pfad liegt auf einem NAS, die Freigabe ist da, kann im Explorer einwandfrei aufgelöst werden, der Zugriff über dbusearea(x + "meine.dbf") funktioniert auch.
Zuletzt geändert von Werner_Bayern am Mi, 22. Mai 2013 10:36, insgesamt 1-mal geändert.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: FExists() auf Verzeichnis

Beitrag von Martin Altmann »

Moin Werner,
nimm die Funktion Directory, dann geht es (vorausgesetzt, es ist nicht leer!):

Code: Alles auswählen

len( Directory( x + "*" ) ) > 0
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2125
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal

Re: FExists() auf Verzeichnis

Beitrag von Werner_Bayern »

Moin Martin,

danke. Weißt Du warum das so ist? Die Directory-Funktion dauert halt wohl wesentlich länger, weil es alle Dateien mit allen Informationen einliest. Gerade im Netz kann sowas dann schon mal einige Sekunden dauern, wenn da viele Dateien in dem Verzeichnis sind.

Hab mir gestern noch mit FExists(x+"meine.dbf") geholfen, weil ich in diesem Fall sicher weiß, dass die Datei auch in dem Verzeichnis sein muss. Geht es nur um die Prüfung auf ein gültiges Verzeichnis, hab ich noch keine Lösung.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: FExists() auf Verzeichnis

Beitrag von Martin Altmann »

Nö - aber ich prüfe auch mit file().
Aber geht bei UNC-Pfaden auch nicht - nur mit einer Datei (oder einem Unterverzeichnis) dazu.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: FExists() auf Verzeichnis

Beitrag von georg »

Hallo,


dann sollte es auch mit "Directory(x + ".") gehen ... Das sollte nur einen Eintrag zurückliefern und deutlich schneller sein.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: FExists() auf Verzeichnis

Beitrag von Martin Altmann »

Nö - tut es leider nicht!
Aber die Idee an sich ist nicht verkehrt, denn so geht es:

Code: Alles auswählen

if len( directory( x + ".\" ,"D" ) ) > 0
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: FExists() auf Verzeichnis

Beitrag von Wolfgang Ciriack »

Wenn du nur auf die Existenz prüfen willst, kannst du das mit einem Wechsel in das Verzeichis tun und dann den Rückgabewert abfragen (ToolsIII funktion).
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FExists() auf Verzeichnis

Beitrag von brandelh »

Hi,
Deine Bezeichnung für den UNC-Pfad ist nicht vollständig !

Code: Alles auswählen

\\server\freigabe   => Laufwerk:
\\server\freigabe\* => Laufwerk:\
Hier mein Testcode und die Ergebnisse in der letzten Zeile, die "D*" sind hier auch etwas seltsam in der Wirkung, "D" reicht ;-)

Code: Alles auswählen

#include "Xbp.ch"
#include "Common.ch"

procedure main()
   ? "file('\\NAS\bilder'   )",file("\\NAS\bilder")   // .f.
   ? "file('\\NAS\bilder\'  )",file("\\NAS\bilder\")  // .f.
   ? "file('\\NAS\bilder\*' )",file("\\NAS\bilder\*") // .t.
   ? "fExists('\\NAS\bilder'  ,'D')" ,fExists('\\NAS\bilder'  ,'D')  // .f.
   ? "fExists('\\NAS\bilder\' ,'D')" ,fExists('\\NAS\bilder\' ,'D')  // .f.
   ? "fExists('\\NAS\bilder\*','D*')",fExists('\\NAS\bilder\*','D*') // .f.
   ? "fExists('\\NAS\bilder\*','D')" ,fExists('\\NAS\bilder\*','D')  // .t.
   inkey(10)
return
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2125
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal

Re: FExists() auf Verzeichnis

Beitrag von Werner_Bayern »

Servus Hubert,

Du hast Recht, mit "\*" gehts. Komische schreibweise.

Also weder mit "\\192.168.202.14\WW\" noch mit "\\192.168.202.14\WW" gehts, sondern nur mit "\\192.168.202.14\WW\*".

Das "D*" kann nicht funktionierten, Du musst da "=D*" verwenden, dann klappts.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten