Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не читает ini-файлы! [D7, XP]


Bogdan1024 ©   (2006-02-02 23:42:00) 

Есть файл с контентом:
[Menu]
HitpointsX = 1451
HitpointsY=6751
ExpoX=1451
ExpoY=7051
DefX=1451
DefY=7361
Att1MX=2519
Att1MY=6751
Att2MX=2591
Att2MY=7051
AttRAX=2591
AttRAY=7361
AmmoX=5161
AmmoY=6751
VisX=5161
VisY=7051
MessX=5541
MessY=7361

Я пытаюсь прочесть его вот так:
procedure ReadGameIni;
var Ini:TIniFile;
begin
Ini := TIniFile.Create('game.ini');
//Menu
HitpointsX := Ini.ReadInteger('Menu','HitpointsX',145);
HitpointsY := Ini.ReadInteger('Menu','HitpointsY',675  );
ExpoX := Ini.ReadInteger('Menu','ExpoX',145         );
ExpoY := Ini.ReadInteger('Menu','ExpoY',705           );
DefX := Ini.ReadInteger('Menu','DefX',145              );
DefY := Ini.ReadInteger('Menu','DefY',736                );
Att1MX := Ini.ReadInteger('Menu','Att1MX',259                );
Att1MY := Ini.ReadInteger('Menu','Att1MY',675                  );
Att2MX := Ini.ReadInteger('Menu','Att2MX',259                    );
Att2MY := Ini.ReadInteger('Menu','Att2MY',705                      );
AttRAX := Ini.ReadInteger('Menu','AttRAX',259                        );
AttRAY := Ini.ReadInteger('Menu','AttRAY',736                          );
AmmoX := Ini.ReadInteger('Menu','AmmoX',516                             );
AmmoY := Ini.ReadInteger('Menu','AmmoY',675                               );
VisX := Ini.ReadInteger('Menu','VisX',516                                  );
VisY := Ini.ReadInteger('Menu','VisY',705                                    );
MessX := Ini.ReadInteger('Menu','MessX',554                                     );
MessY := Ini.ReadInteger('Menu','MessY',736                                      );
Ini.Free;
end;
Но он не читает те значения, которые в файле, а берёт дефалтовые! Почему?!? Все переменные типа смол инт.


Eraser   (2006-02-03 01:33:00) [1]


> Плохиш ©   (03.02.06 00:39) [7]


> Не надо обманывать, для TIniFile файл ищется в каталоге
> вындовс.

Угу... я ошибся.
> Bogdan1024 ©

однако это сути дела не меняет... везде, по-возможности, в подобных ситуациях, старайся указывать абсолютный путь.


Плохиш   (2006-02-03 00:39:00) [2]


> Eraser ©   (03.02.06 00:20) [6]
>
> > Bogdan1024 ©   (03.02.06 00:11) [5]
>
> так и должно быть. Файл создастся (если вызван хоть один
> WriteX) в текущем каталоге

Не надо обманывать, для TIniFile файл ищется в каталоге вындовс.


Eraser   (2006-02-03 00:20:00) [3]


> Bogdan1024 ©   (03.02.06 00:11) [5]

так и должно быть. Файл создастся (если вызван хоть один WriteX) в текущем каталоге, который далеко не всегда каталог, где находится exe программы.


Bogdan1024   (2006-02-03 00:11:00) [4]

Спасибо, теперь работает.
А почему так? Ведь если задаёшь относительный путь, то он его тоже открывает, ну, ошибки не выдаёт.


Gero   (2006-02-02 23:58:00) [5]

Сорри, я опоздал.


Gero   (2006-02-02 23:57:00) [6]

Где находится файл 'game.ini'?


Eraser   (2006-02-02 23:48:00) [7]


> Bogdan1024 ©   (02.02.06 23:42)


> Ini := TIniFile.Create('game.ini');

Если файл находится в каталоге программы используй след. конструкцию:
Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'game.ini');


Fay   (2006-02-02 23:48:00) [8]

Указывай полный путь к файлу.


Наверх

Титульная страница Поиск, карта сайта Написать письмо