Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
ВнизТипизированный файл странно читается Найти похожие ветки
← →
Light-blr (2007-10-04 14:24) [0]Здравствуйте!
У меня две программы - одна составляет уровни для игры и записывает в типизированный файл, а другая позволяет открыть записанные уровни и играть. В обеих программах объявлены одинаковые типы и одинаковое открытие и чтение файла. Так вот, программа-редактор уровней, которая создаёт этот файл, отлично его читает. А программа-игра при попытке прочесть выдаёт какие-то странные значения.
Вот типы:
TTable=array[0..TableHei+1,0..TableWid+1]of shortint;
TLevel=record
TableW:shortint;
TableH:shortint;
NeedSteps:integer;
FreeSeconds:integer;
Table:TTable;
end;
Вот переменные:
Levels:array[1..50]of TLevel;
f:file of TLevel;
Вот сохранение:
AssignFile(f,SaveDialog1.FileName);
rewrite(f);
for i:=1 to LevelCount-1 do
Write(f,levels[i]);
closefile(f);
end;
Вот открытие в программе-редакторе:
If OpenDialog1.Execute then begin
AssignFile(f,OpenDialog1.FileName);
Reset(f);
LevelCount:=FileSize(f);
for i:=1 to LevelCount do
Read(f,Levels[i]);
inc(LevelCount);end;
Вот открытие в программе-игре:
AssignFile(f,"D:\temp\levels.dat");
Reset(f);
CountOfLevels:=FileSize(f);
for i:=1 to CountOfLevels do
Read(f,levels[i]);
и здесь CountOfLevels странным образом оказывается равным 78, в то время как в программе-редакторе, как и должно быть, FileSize возвращает значение 20. Ну и дальше вся таблица Table тоже плывёт - значения читаются неправильно.
Скажите, что сделать, чтобы правильно прочитать этот файл?
← →
Anatoly Podgoretsky © (2007-10-04 14:28) [1]> Light-blr (04.10.2007 14:24:00) [0]
Странно, как это ты умудрился записать в файл указатель на объект и какова великая цель?
А так ты видимо ничего не знаешь про выравнивания полей в записи.
← →
Инс © (2007-10-04 14:29) [2]
> Странно, как это ты умудрился записать в файл указатель
> на объект и какова великая цель?
Это массив shortint-ов у него так называется. Я тоже сначала так подумал...
← →
Инс © (2007-10-04 14:31) [3]
> Light-blr (04.10.07 14:24)
Объявите вместо array и record соответственно packed array и packed record, может поможет
← →
Light-blr (2007-10-04 14:38) [4]Странным образом помогло... Спасибо огромное!
← →
Anatoly Podgoretsky © (2007-10-04 14:43) [5]
> Это массив shortint-ов у него так называется. Я тоже сначала
> так подумал...
Мастер запутывания.
← →
Amoeba © (2007-10-04 19:31) [6]
> packed array
Массивы и так по умолчанию packed.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c