Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 07.09.2007, 17:45   #1
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию Save in Game

Я хочу зделать сохранения в игре. Мне нужно сохранить значение SpinEdit в файл, пусть ето будет .ini файл. А потом мне нужно будет загрузить игру и прочитать тот файл. Подскажыте кому не лень.
ChukCha вне форума Ответить с цитированием
Старый 07.09.2007, 19:16   #2
Азазель
Пользователь
 
Аватар для Азазель
 
Регистрация: 04.09.2007
Сообщений: 12
По умолчанию

Вот пример сохранения:
Код:
uses ...IniFiles

function GetCurrentDir(): String;
var
  len: Integer;
  Buf: String;
begin
  SetLength(Buf, MAX_PATH+1);
  len:=GetCurrentDirectory(MAX_PATH, PAnsiChar(buf));
  GetCurrentDir:=Copy(Buf, 1, len);
end;


var 
  Ini:TIniFile;
begin 
Ini:=TIniFile.Create(GetCurrentDir + '\Save.ini');
 Ini.WriteInteger('SpinEdit','Key1',SpinEdit1.Value);
 Ini.UpdateFile; 
 Ini.Free;
end;

Последний раз редактировалось Азазель; 07.09.2007 в 19:46.
Азазель вне форума Ответить с цитированием
Старый 07.09.2007, 19:19   #3
Азазель
Пользователь
 
Аватар для Азазель
 
Регистрация: 04.09.2007
Сообщений: 12
По умолчанию

А вот и загрузка:
Код:
uses ...IniFiles

function GetCurrentDir(): String;
var
  len: Integer;
  Buf: String;
begin
  SetLength(Buf, MAX_PATH+1);
  len:=GetCurrentDirectory(MAX_PATH, PAnsiChar(buf));
  GetCurrentDir:=Copy(Buf, 1, len);
end;

var 
  Ini:TIniFile;
begin
  Ini:=TIniFile.Create(GetCurrentDir + '\Save.ini');
  SpinEdit1.Value:=Ini.ReadInteger('SpinEdit','Key1',0);
 Ini.UpdateFile;
 Ini.Free;
end;

Последний раз редактировалось Азазель; 07.09.2007 в 19:37.
Азазель вне форума Ответить с цитированием
Старый 08.09.2007, 09:08   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,540
По умолчанию

ну тут наверно лучше заменить GetCurrentDir на ExtractFilePath(Application.ExeName ), т.к. CurrentDirectory вроде как после использования OpenDialog какого-нить изменится и ini не найдешь. А Ini.UpdateFile лично я ни разу не писал и все работало. Че этот UpdateFile вапще делает?
pu4koff вне форума Ответить с цитированием
Старый 10.09.2007, 21:57   #5
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

А проще нельзя?

Var
s, dir: String;
f: TextFile;


На создание формы
dir:=GetCurrentDir;

Сохранение
AssignFile(f, dir+'Save\1.ini');
Rewrite(f);
WriteLn(f, SpinEdit1.Value
);
CloseFile(f);

Загрузка
AssignFile(f, dir+'Save\1.ini');
Reset(f);
ReadLn(f, s);
CloseFile(f);
... строка из файла в переменной s , делайте с ней что хотите.

Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 10.09.2007 в 22:01.
Beermonza вне форума Ответить с цитированием
Старый 11.09.2007, 17:17   #6
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию для Beermonza

У меня вопрос.
Я на форму кинул две кнопки:Save, Load, i SpinEdit.
Когда нажымаю сохранить и загрузить пишет "Invalid FileName".
AssignFile(f, dir+'Save\1.ini'); Когда я ету строку отредактировал на AssignFile(f, dir+'1.ini'); то сохраняет но сохраняет не в той директории где .ехе файл а папкой вверх и применяет имя папки где .ехе файл и 1 тоисть Save1.ini, программа сохраняет значение SpinEdit в етот файл но не загружает.
Проще посмотрите вложение.
Вложения
Тип файла: rar Save.rar (6.3 Кб, 15 просмотров)

Последний раз редактировалось ChukCha; 11.09.2007 в 17:20.
ChukCha вне форума Ответить с цитированием
Старый 11.09.2007, 19:48   #7
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию Пояснения

ChukCha, у вас все проблемы из-за неправильного указания пути.
GetCurrentDir, т.е. переменная dir, хранит путь ...\Save\bin ,
AssignFile(f, dir+'1.ini'); - инициализирует файл bin1.ini в папке \Save, поскольку нет знака "\".
Следует написать так:
AssignFile(f, dir+'\1.ini'); , тогда файл появится в вместе со всеми файлами проекта, и при чтении будет искать его там же.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 11.09.2007, 20:00   #8
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию Дополнение

Spin'ов у меня нету, а вот простой пример на Edit1 есть.
Вложения
Тип файла: rar Save.rar (163.7 Кб, 13 просмотров)
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
game maker - Движок для создания игр! Vituskz Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 29.06.2010 12:10
Вопрос по 3d game studio Goblin Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.05.2010 18:51
Знакомы вы с 3d game studio ? House Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 30.07.2008 11:56
Игра на Intel Game Contest kilometr Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 23.07.2007 09:38


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840