Witam! Zająłem się ostatnio plikami INI. Wszystko wporzo, ale mam problem. Program działa jak należy, ale tylko z BCB, z Windowsa już jest błąd. Nie jestem u siebie i piszę taką prościutką grę. I w FormCreate dałem kod:
GetPrivateProfileString("Options", "graphic", "error", imgPath, sizeof(imgPath), GetCfgPath());
first_time = GetPrivateProfileInt("Options", "first_time", 1, GetCfgPath());
try
{
img->Picture->LoadFromFile(imgPath);
}
catch(...)
{
ShowMessage("Błąd przy wczytywaniu obrazku!" + AnsiString(imgPath));
Application->Terminate();
}
if (first_time)
ShowMessage("Witaj po raz pierwszy w programie! Sprawdzisz tutaj swój czas reakcji. Kliknij na start, a gdy pojawi się obrazek kliknij w niego.");
WritePrivateProfileString("Options", "first_time", " 0", GetCfgPath());
startTime = 5;
Kod GetCfgPath():
char *GetCfgPath()
{
char CurrentDir[_MAX_PATH];
char cfgPath[256], cfgName[256];
strcpy(cfgName, "config.em");
GetCurrentDirectory(sizeof(CurrentDir), CurrentDir);
strcpy(cfgPath, CurrentDir);
strcat(cfgPath, "\\");
strcat(cfgPath, cfgName);
return cfgPath;
}
GetCfgPath() zwraca ścieżkę pliku INI, który u mnie ma rozszerzenie *.em (każde raczej działa, próbowałem nawet *.mp3 u siebie i wczytuje). Ścieżkę podaje dobrą. I wychodzi na to, że plik INI jest nie poprawny. Jego treść:
[Options]
graphic = img.bmp
first_time = 0
I niestety nie działa wczytywanie wartości graphic z Windowsa. Obsługę przejmuje catch(...) i komunikat "Błąd...". Z Builder wszystko w porządku i gra działa. Co jest źle w kodzie lub pliku? Pomocy!