Zapisanie dużej ilości znakow do pliku

0

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ą?

0

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ę.

0

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ć".

0

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).

1

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 :)

0

A jest jakiś powód czemu nie zapisujesz tego normalnie tylko za pomocą winapi?

1

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 :)

1

Bezpośrednia odpowiedź na pytanie jest tu: http://support.microsoft.com/kb/78346

0

Świetnie. Już wszystko jasne. Dziękuję wszystkim za cenne informacje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1