Path Name Prüfen...
-
Und wennes sich um eien Exe handlet die gerade benutzt wird? Was lieferet CreateFile dann zurück? Doch auch INVALID_HANDLE oder?
-
Hm, jå, hast recht.
-
Hmm, bäh, hast doch nicht recht.
-
PathFileExists()
Unschlagbar
-
Gibts bei mir auch nicht.
-
...PathFileExists() geht aber erst am Win98 oder Win95 mit InternetExplorer 4.0
-
Naja, über die Einschränkung kann man wohl hinwegsehen.
In der Statistik auf unserer HP (s.u. Link) hat keiner mehr eine Konfiguration mit der es nicht geht.
-
Original erstellt von WebFritzi:
Gibts bei mir auch nicht.LOL
-
Wieso lachst du? Das war schon ernst gemeint. In meinem SDK ist diese Funktion nicht vorhanden.
-
Also ich habe die Funktion aber auch bei mir in der SDK.
Hast du vielleicht ne ältere Version, oder überhaupt kein MS Produkt?
Also ich habe noch die 6.0 Autoren Version.
-
Original erstellt von WebFritzi:
Wieso lachst du? Das war schon ernst gemeint. In meinem SDK ist diese Funktion nicht vorhanden.Das ist dann wohl pP.
Du solltest mal updaten. 64Bit kommt ganz bestimmtMich würde die Version auch mal interessieren..
-
Nehmt noch Rücksicht auf Windows 95 User, jedenfalls bis 2004. Da beginnt ja die neue Windows Generation (.NET). Ab da kann man so langsam 95/98/ME und natürlich 3.11 und dessen Vorgänger vernachlässigen.
-
Wo kann ich die Version denn auslesen?
-
Nehmt noch Rücksicht auf Windows 95 User, jedenfalls bis 2004.
Machen wir doch. Du mußt lediglich den IE updaten. Du bekommst doch auf einem frisch installierten 95er mit IE 1.00 noch nichtmal Deine Help-Files geöffnet, da ist dieser 'Aufwand' locker vertretbar.
Die shlwapi.dll ist eine Fundgrube für viele praktische Funktionen. Da ist es fast eine Sünde, diese nicht zu benutzen.
-
hat eigentlich speziell nix mit WinAPI zu tun,
Microsoft:
_splitpath, _wsplitpath
Break a path name into components.void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );
void _wsplitpath( const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *fname, wchar_t *ext );
Routine Required Header Compatibility
_splitpath <stdlib.h> Win 95, Win NT
_wsplitpath <stdlib.h> or <wchar.h> Win 95, Win NTFor additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail versionReturn Value
NoneParameters
path
Full pathdrive
Optional drive letter, followed by a colon (:)dir
Optional directory path, including trailing slash. Forward slashes ( / ), backslashes ( \ ), or both may be used.fname
Base filename (no extension)ext
Optional filename extension, including leading period (.)Remarks
The _splitpath function breaks a path into its four components. _splitpath automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the multibyte code page currently in use. _wsplitpath is a wide-character version of _splitpath; the arguments to _wsplitpath are wide-character strings. These functions behave identically otherwise.Generic-Text Routine Mappings
TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined
_tsplitpath _splitpath _splitpath _wsplitpathEach argument is stored in a buffer; the manifest constants _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, and _MAX_EXT (defined in STDLIB.H) specify the maximum size necessary for each buffer. The other arguments point to buffers used to store the path elements. After a call to _splitpath is executed, these arguments contain empty strings for components not found in path. You can pass a NULL pointer to _splitpath for any component you don‚t need.
Borland:
#include <dir.h>
int fnsplit(const char *path, char *drive, char *dir, char *name, char *ext);
int _wfnsplit(const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *name, wchar_t *ext );Beschreibung
fnsplit übernimmt einen vollständigen Dateinamen (Parameter path) als String in der Form
X:\DIR\SUBDIR\NAME.EXT
und zerlegt path in seine vier Einzelkomponenten. Diese werden dann in den durch drive, dir, name und ext bezeichneten Strings gespeichert (Alle fünf Parameter müssen übergeben werden, einzelne davon dürfen aber NULL sein, was zur Folge hat, daß die zugehörige Komponente zwar analysiert, aber nicht gespeichert wird). Wenn eine Pfadkomponente NULL ist, dann gehört die Komponente zu einem leeren String, der nicht NULL ist.
Die Maximalgrößen aller beteiligten Strings (inklusive des abschließenden Nullzeichen \0) sind durch die Konstanten MAXDRIVE, MAXDIR, MAXPATH, MAXFILE und MAXEXT in dir.h festgelegt.Konstante Max 16-bit Max 32-bit String
MAXPATH 80 260 path
MAXDRIVE 3 3 drive inklusive Doppelpunkt (:)
MAXDIR 66 256 dir inklusive führendem und abschließendem umgekehrten Schrägstrich (\)
MAXFILE 9 256 name
MAXEXT 5 256 ext inklusive führendem Punkt (.)fnsplit unterstellt, daß die durch drive, dir, name und ext bezeichneten Strings eine ausreichende Größe haben, um jede Komponente zu speichern, die nicht NULL ist. fnsplit verteilt die Interpunktionszeichen aus path in folgender Weise:
drive enthält den Laufwerksbezeichner mit einem Doppelpunkt (C:, A:, usw.);
dir enthält den führenden und den abschließenden umgekehrten Schrägstrich (\BC4\INCLUDE\, \SOURCE\, usw.);
name enthält den Dateinamen;
ext enthält den Punkt, der die Namenserweiterung einleitet (.C, .EXE, usw.).fnmerge und fnsplit verhalten sich invers zueinander. Die Anwendung von fnmerge auf die durch fnsplit ermittelten Elemente eines vollständigen Pfadnamens ergeben wieder das Original.
Rückgabewert
fnsplit liefert einen Integerwert zurück, der sich aus fünf in dir.h definierten Flags zusammensetzt. Ein gesetztes Flag zeigt an, daß die zugehörige Komponente in path vorhanden war. Folgende Flags sind in dir.h definiert:
EXTENSION Eine Namenserweiterung
FILENAME Ein Dateiname
DIRECTORY Mindestens ein Verzeichnis
DRIVE Ein Laufwerksbezeichner
WILDCARDS Jokerzeichen (* und/oder ?)
-
Original erstellt von WebFritzi:
Wo kann ich die Version denn auslesen?eigentlich müsste doch die Version auf der CD stehen, von der du es Installiert hast, oder Irre ich mich?
-
Wat für ne CD? Ich habe den BCB, und da ist das SDK, sowohl die Headers als auch die Help-Files, dabei. Die Version des BCB ist Ver 3, aber das ist ja egal. Also, wo kann ich die Versions No meines SDK auslesen?
-
Achso du hast den Borland!
Kann es sein, dass die Funktion MS-Spezifisch ist?
-
Lies doch mal wenigstens diese Seite des Threads. Dann wird deine letzte Frage beantwortet.
-
Ist ja schon gut! :o