Donnerstag, 27. März 2008

Arbeiten mit Verzeichnissen und Dateinamen (Teil 1) / Working with directories and filenames (Part 1)

Visual Foxpro ist eine Entwicklungssprache, bei der man sich nicht über einen Mangel an Befehlen und Funktionen beschweren kann. Ganz im Gegenteil. Problematisch ist es allerdings schon, in diesem Befehlsdschungel so halbwegs den Überblick zu bewahren.

Verständlich, dass der ein oder andere lieber auf die wenigen Befehle zurückgreift, die er oder sie bereits seit vielen Jahren immer wieder einsetzt. Schade eigentlich, denn gerade im Bereich der Manipulation von Strings hat der Fux einiges zu bieten.

Dieser und die nächsten Einträge befassen sich mit dem Umgang mit Verzeichnissen und Dateinamen. Hier stehen eine Vielzahl von Funktionen zur Verfügung, die uns viel Fummelei abnehmen.

Das Auswählen eines Verzeichnisses ist sicherlich allen hinlänglich bekannt.

cDir = GETDIR()

Optional stellt GETDIR() jedoch diverse zusätzliche Parameter bereit:

GETDIR([cDirectory [, cText [, cCaption [, nFlags [, lRootOnly]]]]])

Parameter 1 nimmt ein Startverzeichnis auf, in dem die Auswahl beginnen soll
Parameter 2 nimmt einen erklärenden Text auf
Parameter 3 nimmt eine individuelle Caption auf
Parameter 4 nimmt Flags auf, die von ihrer Wertigkeit additiv übergeben werden
Parameter 5 setzt fest, ob übergeordnete und/oder parallele Ordner aufgerufen werden können

cDir = GETDIR([C:\TEMP\],[Bitte wählen Sie einen Ordner aus], [Ordnerauswahl], 1+2+8+16+32+64+16384, .T.)

Nach erfolgreicher Auswahl steht in cDir nun u.U. folgendes:

c:\temp\unterordner1\

Wichtig hierbei ist, dass unserem Verzeichnis bereits ein Backslash (\) angehängt wurde.
Können wir uns nicht darauf verlassen, ob eine bestimmte Funktion einen Pfadnamen inklusive Backslash am Ende liefert, so stehen uns diverse Möglichkeiten offen, diesen ergänzen.

Variante 1 (Für alle mit einem gesunden Gottvertrauen ;-) )

cDir = cDir + [\]

Variante 2 (nicht falsch aber viel zu umständlich)

cDir = cDir + IIF(RIGHT(cDir,1) = [\],[],[\])

Variante 3 (Die Richtige!!)

cDir = ADDBS(cDir)

INFO: ADDBS() hängt nur im Bedarfsfall einen Backslash an den übergebenen String. Wir müssen uns also keine Gedanken darüber machen, ob bereits einer vorhanden ist oder nicht.

Keine Kommentare:

Kommentar veröffentlichen