Seite 2 von 3

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:12
von ts-soft
Mein PC ist deutsch, C:\ ist das Systemlaufwerk!

Wenn ich den Windows-Explorer öffne, befindet sich dort ein Ordner "Programme", genauso wie
"Dokumente und Einstellungen", diese existieren aber garnicht, es sind lediglich links, das kann man
aber im Explorer nicht unbedingt erkennen, andere Dateimanager zeigen diese falschen Ordner entweder
garnicht an, oder Kennzeichnen sie als Link.

Man darf Windows nicht mehr alles Glauben, was es anzeigt :mrgreen:

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:19
von CSHW89
ich wollte ja nur damit ausdrücken, dass wenn man ein projekt entwickelt, und es auch betriebsystem-unabhängig programmieren will, sich nicht darauf verlassen soll, das der ordner 'c:\programme\' existert. egal ob nun der benutzer vista, 7, oder doch xp hat. stattdessen sollte man

Code: Alles auswählen

GetEnvironmentVariable("ProgramFiles")
benutzen.

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:25
von ts-soft
Manchmal gibt der User auch den Pfad ein, und für den existiert alles, was er sieht!
Der PathRequester von PB zeigt mir auch C:\Programme an, gibt aber C:\Program Files zurück,
da ist man aus dem Schneider.

In meinem ja!Commander zeige ich ja auch die "falschen" Ordner an, verzweige aber in die richtigen
Ordner.

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:36
von HeX0R
Ist ja abartig, wieviel Code man braucht, um den echten Pfad zu erhalten :shock: .
Da sollte man dem User vielleicht einfach in Zukunft verbieten Pfade von Hand einzugeben und immer einen "Browse-Button" anbieten.

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:47
von ts-soft
Jetzt stell Dir vor, Du bist noch XP-User und hast hiervon noch nie gehört. Einer Deiner Anwender
macht Dich zur Schnecke und Du guckst Dir hilflos Deinen Source an :bounce:

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 22:59
von c4s
ts-soft hat geschrieben:Jetzt stell Dir vor, Du bist noch XP-User und hast hiervon noch nie gehört. Einer Deiner Anwender
macht Dich zur Schnecke und Du guckst Dir hilflos Deinen Source an :bounce:
*hust*
Also ganz verstanden habe ich noch immer nicht was es damit auf sich hat. Gibt es einfache Literatur um einen programmierenden noch XP-Nutzer einzuführen?

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 23:11
von ts-soft
Einfache Literatur wird es wohl nicht geben, ich denke außer MSDN gibt es nicht viel.
Wenn ich nicht selber so einen Dateimanager programmiert hätte und da ich sowieso
nur alternative Dateimanager nutze, bin ich schnell über die Problematik gestolpert.
Hätte ich noch XP würde ich so was wie Dateimanager nicht machen wollen.

Genauso problematisch sind dann die Wow64 Sachen wegen 64-Bit und die heimlichen
Umlenkungen nach Virtual Store.

Das kann man sich ohne entsprechendes OS wohl nicht alles Trocken erarbeiten.

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 23:55
von Thorium
ts-soft hat geschrieben: Das kann man sich ohne entsprechendes OS wohl nicht alles Trocken erarbeiten.
Jo. Unter nem 64bit Vista/7 hast du gleich 2 Ordner für "Programme": "Program Files" und "Program Files (x86)".
Für 32bit Programme ist "Program Files (x86)" "Programme" und für 64bit Programme ist es "Program Files". :?

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 13.04.2010 23:57
von AndyMars
Zum Thema: "." und ".." auslassen ist in der Regel die normale zu empfehlende Verhaltensweise.

Wegen virtuellen Verzeichnissen unter Vista und Win7: Es ist nicht zwingend notwendig, immer zu wissen, was hinter einem virtuellen Pfad steht - man kann ihn einfach benutzen - oder ignorieren...
Ich hab da so ein Programm, welches rekursiv die Grösse von Verzeichnissen eruiert. Das "funktionierte" schon eine Weile unter Vista. Es zeigte unter Umständen einfach zu grosse Summen an. Falsch zwar, aber nicht weiter tragisch. Jetzt hab ich das im Prinzip so gelöst:

Code: Alles auswählen

Pfad.s="c:\"
SDir=ExamineDirectory(#PB_Any,Pfad,"*.*")
If SDir
	While NextDirectoryEntry(SDir)
		If ~DirectoryEntryAttributes(Sdir)&#FILE_ATTRIBUTE_REPARSE_POINT ;Vista, Win7 - virtuelle Verzeichnisse nicht scannen
  		DateiName$=DirectoryEntryName(SDir)
	  	If (DateiName$<>".") And (DateiName$<>"..")
	  		Debug DateiName$
	  	EndIf
	  EndIf
	Wend
	FinishDirectory(SDir)
EndIf

Re: ExamineDirectory erkennt "." und ".."

Verfasst: 14.04.2010 00:16
von ts-soft
Wenn aber der Vater, also das an ExamineDirectory übergebene Verzeichnis ein Link ist,
gibts einen IMA.