Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2007, 13:27   #1
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
Печаль файл рекордов

Здраствуйте ув. форумчане. Я сделал простенькую игру и возникла проблема с сохранением рекордов.
Файл типизированный, есть 2 поля - массив [0..9] из integer (время например) и массив [0..9] в котором надо хранить имя; как известно string и тому подобное использовать нельзя, приходится создавать для каждого имени массив char итд. вобщем жутко не удобно, а у меня к тому же еще и как то странно работает (получается записать только одно поле записи, а другое всегда обнуляется).
Ну в общем не извесен ли вам более удобный способ хранения рекордов?
(или строк что в основном и нужно)
с файлом работаю как в паскале, мож лучше как то иначе?
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 20.07.2007, 13:33   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

почему нельзя в файл записать string ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 20.07.2007, 13:38   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Код:
Type MyRec=Record
           Name:string[10];
           time:integer;
end;
Alex21 вне форума Ответить с цитированием
Старый 20.07.2007, 13:44   #4
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Используйте TFileStream.

Есть у него метод WriteString, там уже строки без ограничений пишет без проблем.
Ну и соответственно, ReadString... WriteInteger, ReadInteger....
Net вне форума Ответить с цитированием
Старый 21.07.2007, 02:22   #5
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Цитата:
известно string и тому подобное использовать нельзя
Надо просто указывать размерность
s:string[255]
Строчка - по сути тот же массив из переменных типа char.
Viteef вне форума Ответить с цитированием
Старый 21.07.2007, 05:46   #6
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Вот какой код я использую примерно. Всё просто работа с INI файлами, если тебе не простота нужна была сори заморачивайся с типизироваными.
Код:
implementation

type
 ASD = record
  r:integer;
  n:string[255];
 end;

var
 mass:array[1..10] of ASD; // mass - это допустим массив в котором у тебя будут хранится рекорды и имена

{$R *.dfm}

procedure TForm1.LoadR;
var
 IniFile:TIniFile;
 i:integer; 
begin
i:=1;
IniFile := TIniFile.Create('in.tmp');
while i<>9 do //требуемое кол-во
 begin
  mass[i].r:=IniFile.ReadInteger('Название_уровня', IntToStr(i+1)+'Рекорд', 0);
  mass[i].n:=IniFile.ReadString('Название_уровня', IntToStr(i+1)+'Имя', '');
  inc(i);
 end;
IniFile.Free;
end;

procedure TForm1.SaveR;
var
 IniFile:TIniFile;
 i:integer;
begin
i:=1;
IniFile := TIniFile.Create('in.tmp');
while i<>9 do
 begin
  IniFile.WriteInteger('Название_уровня', IntToStr(i+1)+'Рекорд',  mass[i].r);
  IniFile.WriteString('Название_уровня', IntToStr(i+1)+'Имя', mass[i].n);
  inc(i);
 end;
IniFile.Free;
end;
Simply-Art вне форума Ответить с цитированием
Старый 21.07.2007, 09:43   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

По моему для этого лучше всего использовать типизированный файл. Все что надо сохранить, сохраняй для удобства в одной переменной своего типа. Максимальная длина строки 255, для имени думаю хватит.

type
TMySave = Record
name: string[255];
score: integer;
//ну и т.д.
end;

var
MySave: TMySave;
SaveFile: File of TMySave;

//запись
AssignFile(SaveFile,'save.dat');
rewrite(SaveFile);
write(SaveFile,MySave);
closefile(SaveFile);

//чтение
Assignfile(SaveFile,'save.dat');
Reset(SaveFile);
read(SaveFile,MySave);
closefile(SaveFile);
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.07.2007, 10:02   #8
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

Млин была идея попробовать ограничить длину, но что то подумал что тоже не покатит )) спасибо, так и сделаю!
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
chm файл Михаил Юрьевич Общие вопросы Delphi 2 10.07.2008 08:17
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
dll файл Briz Общие вопросы Delphi 3 22.10.2007 17:17
Файл vitalik007 Общие вопросы Delphi 2 03.09.2007 22:07