![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не читает 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]Указывай полный путь к файлу.