Shit LPCTSTR (INI-Dateien)
-
Original erstellt von <pfad>:
**Nein!GetModuleFileName
Dateiname abschneiden
Pfad + INI-Dateiname**`Das widerspricht dem Beitrag von soUrcerer in keinster Weise.
-
ITask::GetWorkingDirectory funzt aber nicht unter win 95 :o
-
ich bitte vielmals um entschuldigung,
die funktion muss natülich lauten:
GetCurrentDirectory()
und nicht wie fälschlich angegeben
GetWorkingDirectory() //falschgrüsse
-
Mit GetCurrentDirectory geht das nicht!
-
aba doch,
in meinem schlauen buch steht:
GetCurrentDirectory() ermittelt das aktuelle Verzeichnis eines Prozesses.
ob die funktion jetzt die lösung für obiges problem ist, sei dahingestellt.
grüsse
-
genau, für die lösung des problems ist die funktion aber nicht hilfreich
-
übrigens,
ein blick in die MSDN offenbart:
GetPrivateProfileString
...
lpFileName
Pointer to a null-terminated string that names the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory....
Also, bei relativen pfadangaben, wird im windowsverzeichnis nach der ini gesucht, und nirgendwo anders.
grüsse
-
also:
char IniFile[MAX_PATH]; char EinPfad[500] DWORD destSize = 500; GetCurrentDirectory(IniFile,MAX_PATH); strcat(IniFile, "test.ini"); // oder "\\test.ini" weiss nich genau GetPrivateProfileString("System","graphic","NULL",EinPfad,destSize,IniFile);
wie siehts denn so aus?
habs nicht getestet, aber so würd ich des machengrüsse
-
GetCurrentDirectory liefert nicht immer das richtige Verzeichnis
-
es liefert aber nachvollziehbare verzeichnisse !!!
Es gibt immer das Arbeitsverzeichnis des Prozesses aus ... das kann man natürlich nach belieben verändern, das stimmt schon, aber für gewöhlich macht man das nicht, oder nur absichtlich (z.b. in dem man ne verknüpfung erstellt und dort ein anderes arbeitsverzeichnis auswählt). Dies kann aber vom programmierer durchaus gewünscht sein, da der anwender das ini file dann ablegen kann, wo er will und es nur in der verknüpfung zum programm angeben.
hat alles vor und nachteile.
Wenn du aber unbeding den Pfad wissen willst, wo dein Programm liegt, schreib ihn dir halt bei der installation in die registry und hol ihn ab, wenn du ihn brauchst. Fänd die lösung aber nicht sehr elegant.
oder machs doch mit GetModuleFileName, wie auch schon vorgeschlagen.
grüsse
-
char inifile[5000]; int i; // Dateinamen des Moduls holen (z.B. c:\programme\bla\blumm.exe) GetModuleFileName(NULL,inifile,5000); // blumm.exe davon wegschneiden: i=(int)strlen(inifile); while (inifile[i]!='\\') { i--; } inifile[i+1]='\0'; // ...und test.ini dranhängen: strcat(inifile,"test.ini"); // Jetzt steht in inifile: c:\programme\bla\test.ini
-
Warum 5000? Warum nicht MAX_PATH?
-
weil 5000 ne schöne Zahl ist
MAX_PATH hat natürlich mehr Sinn