2012-04-20 24 views
5

Próbuję odczytać plik konfiguracyjny .init w języku C++ o zawartości.GetPrivateProfileInt- odczyt tylko wartości domyślnych

[IPADDRESS]

IPADDRESS = 169.254.115.22

[ScanConfiguration]

Scanfrequency = 2500

ScanResolution = 2500

startAngle = 700000

StopAngle = 1100000

Do tej pory użyłem tego kodu do odczytu danych. Mój projekt jest zbiorem znaków Unicode i dlatego używał L przed wartościami ciągu.

int iScanFreq =GetPrivateProfileInt(L"ScanConfiguration",L"Scanfrequency", 2500, L"filename.ini"); 
    int iScanRes =GetPrivateProfileInt(L"ScanConfiguration",L"ScanResolution", 2500, L"filename.ini"); 
    int iStartAngle =GetPrivateProfileInt(L"ScanConfiguration",L"StartAngle", -450000, L"filename.ini"); 
    int iStopAngle =GetPrivateProfileInt(L"ScanConfiguration",L"StopAngle", 2250000, L"filename.ini"); 

Ale otrzymuję tylko wartości domyślne w zmiennych, a nie prawidłowe wartości z pliku. Nie zrobiłem jeszcze nic z rejestrem. Czy jest coś, co muszę zrobić w rejestrze, aby uzyskać poprawną wartość?

Wszelkie sugestie będą pomocne Dzięki.

Odpowiedz

8

Jeden pomysł przychodzi na myśl: GetPrivateProfileString i przyjaciele mają trochę dziwactwa, jak znaleźć plik INI. O ile nie podasz ścieżki do pliku INI (nawet coś tak prostego jak .\filename.ini), zakładają, że plik znajduje się w katalogu Windows. To prawie na pewno nie jest to, co chcesz, i prawdopodobnie doprowadzi do nie znalezienia pliku, a tym samym do wartości domyślnych.

Nie oczekuj także pełnej obsługi Unicode z tych funkcji. They're just Unicode wrappers around ANSI text.

+0

V..Dziękuję .. Próbowałem podając pełną ścieżkę .. Ale nie działa. – ShivShambo

+0

W tym przypadku dwukrotnie sprawdź plik INI. Może mieć BOM (znak kolejności bajtów) lub coś podobnego, co może zmylić analizator składni. – ChrisV

+0

Sprawdziłem błąd za pomocą metody GetLastError() i zwracam 2, co oznacza, że ​​nie może znaleźć podanej ścieżki. – ShivShambo

Powiązane problemy