Помощь - Поиск - Пользователи - Календарь
Полная версия: Типизированный файл не хочет писаться:)
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
HelpAusHeaven
Короче у меня описан двухмерный массив:
Код
matr        : array[0..MaxX,0..MaxY] of byte;


Далее, у меня описана структура:
Код
type TMyRec = record
 Matr : array[0..MaxX,0..MaxY] of byte;
end;
TMyRecFile = file of TMyRec;


Далее, я пробую скинуть этот массив в типизированный файл:
Код
var
 F     : TMyRecFile;
 MyRec : TMyRec;
begin
 AssignFile(F, 'template1.txt');
 ReWrite(F);
 MyRec.Matr := matr;
 Write(F, MyRec);
 CloseFile(F);
end;

И получаю ошибку несовместимые типы данных...
Почему? Все же совместимо... Как же мне тогда скинуть массив в файл??
APAL
Может дело в том, что имя файла задано из 9 символов, хотя ограничение под ДОС 8 + 3 (расширение)?
BlackShadow
Нет, Apal, дело не в этом. Я так понял, что ошибка возникает не во время выполнения, а во время компиляции. А дело в том, что с точки зрения Pascal'я, раз уж matr у тебя массив, а MyRec.Matr другой массив, то совместимости тут не добиться. А вдруг они разные по размерам? smile.gif
Подходящее решение выглядит где-то так:
Код

Type
 TArray=Array[0..MaxX,0..MaxY] Of Byte;
 TMyRec=Record
   Matr:TArray
 End;

Var
 matr:TArray;
 MyRec:TMyRec;
 f:File Of MyRec;

Begin
 {...}
 Assign(f,'Faylo.dat');
 ReWrite(f);
 MyRec.Matr:=Matr;
 Write(f,Matr);
 Close(f)
End.

Вот так вот в жизни бывает. А можно и move'ом воспользоваться, возможно и по-быстрее выйдет. По крайней мере, если массивы выделяются динамически, то они обычно выравниваются по границе страницы... Но это уже из другой оперыsmile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.