IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Типизированный файл не хочет писаться:)
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Короче у меня описан двухмерный массив:
Код
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;

И получаю ошибку несовместимые типы данных...
Почему? Все же совместимо... Как же мне тогда скинуть массив в файл??


--------------------
Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Может дело в том, что имя файла задано из 9 символов, хотя ограничение под ДОС 8 + 3 (расширение)?


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Нет, 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
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.09.2020 21:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name