![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
HelpAusHeaven |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Короче у меня описан двухмерный массив:
Код 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 |
![]() ![]() |
APAL |
![]()
Сообщение
#2
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Может дело в том, что имя файла задано из 9 символов, хотя ограничение под ДОС 8 + 3 (расширение)?
-------------------- |
BlackShadow |
![]()
Сообщение
#3
|
Гость ![]() |
Нет, Apal, дело не в этом. Я так понял, что ошибка возникает не во время выполнения, а во время компиляции. А дело в том, что с точки зрения Pascal'я, раз уж matr у тебя массив, а MyRec.Matr другой массив, то совместимости тут не добиться. А вдруг они разные по размерам?
![]() Подходящее решение выглядит где-то так: Код 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'ом воспользоваться, возможно и по-быстрее выйдет. По крайней мере, если массивы выделяются динамически, то они обычно выравниваются по границе страницы... Но это уже из другой оперы ![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 20:28 |