Witam.
Piszę odtwarzacz muzyczny i od pewnego błądzę z problemem zapisu ścieżek utworów z playlisty do pliku. Próbowałem do pliku .txt lecz po n-utworze przestało mi zapisywać. Próbowałem też informacje umieścić w rejestrze, lecz efekt był ten sam, gdyż rejestr to nic innego jak plik tekstowy w formacie .INI . Macie może jakieś ciekawe informacje, które mi się przydadzą?
o_O? Naucz się poprawnie operować na plikach? Bo co to niby znaczy że po n-tym przestało zapisywać? Samo się nic nie stało. Widocznie masz buga w kodzie i tyle. No chyba że masz FAT32 i stworzyłeś plik który ma 4GB na przykład, ale wątpię.
Taki problem nie powinien raczej występować, chyba że robisz coś bardzo źle. Podaj kawałek kodu odpowiedzialny za zapisywanie i opisz dokładniej jak przejawia się to "przestało mi zapisywać".
Zapisuje plik w formacie INI:
[sciezki]
sciezka1
sciezka2
sciezka3
sciezka4 itd.
Zapisuję za pomoca funkcji
BOOL WritePrivateProfileString(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
używam pętli for (ilosc sciezek to okolo 5000 jesli to ma znaczenie).
This function is provided only for compatibility with 16-bit versions of Windows. Applications should store initialization information in the registry
użyj normalnych strumieni ofstream
, albo fopen
w stylu C. Ewentualnie jakiejś biblioteczki do obsługi plików ini chociażby property_tree
z boost
'a :)
A jest jakiś powód czemu nie zapisujesz tego normalnie tylko za pomocą winapi?
A tak btw. Format ini nie jest odpowiedni do zapisywania czegoś takiego :)
Już lepiej i szybciej zapisać kolejne ścieżki do plików oddzielone NULL'ami, lub struktury z informacjami, które chcesz wyświetlać w odtwarzaczu. Do tego spakować to jakąś biblioteczką kompresji. Dysk to wąskie gardło i szybciej będzie wczytać plik i go zdekompresować niż wczytać gotowe dane :)
Bezpośrednia odpowiedź na pytanie jest tu: http://support.microsoft.com/kb/78346
Świetnie. Już wszystko jasne. Dziękuję wszystkim za cenne informacje.