ShedirAchird napisał(a)
Jak sobie poradzić z tymi funkcjami w WinApi? Przecież wystarczy, żeby jakaś zwróciła ścieżkę w którym folderze jest program odpalany, do tej ścieżki dodałbym nazwę podfolderu i nazwę daty. Tylko jak to zrobić?
nie wiem po cholerę tak kombinujesz, przecież nie podając ścieżki bezwzględnej, automatycznie używasz ścieżki względnej, czyli zwykle względem folderu z którego uruchamiasz program, Ty myślisz, że ludzie się bawią z takimi pierdołkami jak ustawianie pełnej ścieżki, taki mechanizm jest już wbudowany w system...
funkcją GetCurrentDirectory właśnie pobierzesz ścieżkę do folderu względnego, względem którego w programie używasz ścieżek względnych (nie zaczynających się od litery dysku), teoretycznie zwykle do niczego ci to nie jest potrzebne, nie musisz wiedzieć z jakiego folderu został uruchomiony program, żeby używać plików/folderów od gałęzi z tego folderu, innymi słowy to co jest wyżej w systemie plików cię w ogóle nie interesuje, a twój obszar roboczy z plikami zaczynasz od tego folderu początkowego dla twojego programu
char str[512] = "Folder\\"; // folder w katalogu roboczym twojego programu
int offset = strlen(Folder); //offset do początku zapisu
//ustalenie nazwy pliku
time_t rawtime;
tm* timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime(str + offset, sizeof(str) - offset, "%H-%M-%S.dat", tm);
//otwarcie pliku
hFile = CreateFile(str, ...); //otwarcie pliku funkcją win32
//lub
std::fstream file(str); //przez stream ceplusowy
//czy tam jeszcze innym cholerstwem, praktycznie w każdym możesz używać ścieżek względnych
mało tego, jeśli plików jest więcej możesz sobie przesunąć katalog roboczy do tego folderu
SetCurrentDirectory("Folder\\"); //wejście w folder 'folder'
char str[512];
//ustalenie nazwy pliku
time_t rawtime;
tm* timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime(str, sizeof(str), "%H-%M-%S.dat", tm);
//otwarcie pliku w "Folder\[data].dat"
hFile = CreateFile(str, ...);
//itd
SetCurrentDirectory(".."); //powrót do poprzedniego katalogu
oba kody będą robić to samo