|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.05.2020, 05:26 | #1 |
Новичок
Джуниор
Регистрация: 03.05.2020
Сообщений: 2
|
TFileStream и многомерный динамический массив
Сохранение многомерного динамического массива посредством TFileStream выполняется неверно.
Для проверки сохраняю и статический массив с таким же содержимым. Код:
если вместо него использовать приведенные варианты сохранения динамического массива, результат оказывается некорректным: Вариант 1 сохраняет хотя бы часть верных значений. После сохранений проверяю целостность динамического массива (procedure TForm1.RdRecDClick), сравнивая его отдельные элементы с такими же элементами статического - они одинаковы. Подскажите, в чем ошибка? |
03.05.2020, 06:20 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,285
|
Многомерный динамический массив не хранится одним непрерывным куском в памяти, в отличие от статического. Попробуйте записать его в файл построчно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
03.05.2020, 08:32 | #3 |
Новичок
Джуниор
Регистрация: 03.05.2020
Сообщений: 2
|
BDA, большое спасибо за ответ,
он соответствует тому, что я наблюдал: сначала из отладчика динамический массив сохранялся полностью, затем запустил exe - в массиве появился непонятный кусок; при выделении небольшого фрагмента в отдельную программу (чтобы разобраться), в сохраненных данных вдруг оказывались и осмысленные строки, содержащие, например, путь к сохраняемому файлу (он вычисляется в этой программе), к тому же первая строка часто сохранялась. Вариант со строками меня вполне устраивает, да и массив всего в сотни КБайт, но интересно, нельзя ли динамический массив привязать к выделению памяти одним куском, что-то вроде GetMem()? Или getmem() также не выделяет единого фрагмента памяти? Я попробовал так: getmem(arDyn,maxC*maxD*sizeOf(TDatR ec)); не работает, добавил setLengtn(arDyn,maxC,maxD); - тоже не работает. Последний раз редактировалось bvn123; 03.05.2020 в 09:06. |
04.05.2020, 04:18 | #4 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многомерный массив | СтудПом | Общие вопросы C/C++ | 6 | 24.11.2017 17:21 |
Многомерный массив | Должно быть имя? | Общие вопросы Delphi | 9 | 03.05.2015 20:34 |
Многомерный динамический массив С++Builder | Karina89 | Помощь студентам | 1 | 16.11.2011 18:38 |
Динамический многомерный массив | Lazy maximka | Помощь студентам | 8 | 25.04.2011 17:46 |
Как создать многомерный динамический массив в Delphi? | Velross | Помощь студентам | 3 | 06.01.2010 20:50 |