|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.02.2014, 12:21 | #1 |
Пользователь
Регистрация: 30.06.2011
Сообщений: 28
|
Динамический массив и записи произвольной длины (Delphi)
Доброго времени суток, товарищи.
Недавно задался вопросом: существует ли возможность записи данных типа Packed Record (или просто Record) в динамический массив? Насколько я разобрался, если длина данных фиксирована, то такое возможно реализовать. Но как быть, если длина данных произвольная? Юзать TStream или все-таки есть возможность записать даннные произвольной длины массивом? Чтобы было что-то наподобие: A[0].Text := 'Text'; A[1].Text := 'Text_1'; A[2].Text := 'Text'_1_2; Я думал записывать сначала "шапку"(1), состоящую из самого массива, имеющего указатели на данные, но способ немного громоздкий, поэтому интересуюсь есть ли возможность писать данные произвольного размера прямо в массив или нет? (1) "Шапка": A[0] := 10; A[1] := 15; A[2] := 20; Сами данные: A0 := 'Text'; A1 := 'Text_1'; A2 := 'Text_1_2'; Кода никакого не прошу, просто подтолкните в каком направлении копать, либо может упустил чего. Заранее спасибо. |
03.02.2014, 12:46 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
03.02.2014, 12:58 | #3 |
Пользователь
Регистрация: 30.06.2011
Сообщений: 28
|
да, сформулировал невнятно, конечно. Хотел сказать, что имеем это:
Код:
Сейчас для строки произвольного размера я делаю так: Сначала просто записываю массив, содержащий в себе размер строки. Затем записываю саму строку: Код:
|
03.02.2014, 13:52 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
По прежнему не понимаю...
Ты это: http://ru.wikipedia.org/wiki/%D1%E5%...E7%E0%F6%E8%FF хочешь сделать?
I'm learning to live...
|
03.02.2014, 17:00 | #5 | |
Пользователь
Регистрация: 30.06.2011
Сообщений: 28
|
Цитата:
Если есть сзапись фиксированного размера, то ее возможно записать в файл простым присовением n-го элемента массива. Например запись такого вида: Код:
Я смогу выполнить это так: Код:
Код:
Грубо это выглядит так: TSA[1] := sSize, sName, sDataSize; Но как быть с данными произвольного размера? Можно ли их присваивать элементам массива как в случае описанном выше, с использованием данных фиксированной величины? Повторюсь: я понимаю, что можно писать сначала сам массив с данными фиксированного размера (например, с типами TDate, integer, LongInt, etc), а затем сами данные, но меня интересует как писать в каждый элемент массива данные произвольного размера? |
|
03.02.2014, 17:06 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
03.02.2014, 18:19 | #7 | |
Пользователь
Регистрация: 30.06.2011
Сообщений: 28
|
Цитата:
Буду по-старинке делать: "шапка" - "тело" и т.д. Спасибо за уделенное моему вопросу внимание |
|
03.02.2014, 18:21 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
XML не подходит?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.02.2014, 11:50 | #9 |
Пользователь
Регистрация: 30.06.2011
Сообщений: 28
|
|
05.02.2014, 13:20 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну почему же? Вполне и его можно использовать, даже если держать в памяти. Хотя я как-то с ним не особо дружу.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка массива значений произвольной длины. | sercher | Помощь студентам | 1 | 02.10.2012 22:34 |
одномерные массивы произвольной длины | Александра Раш | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 15.03.2012 14:08 |
умножение 2-х чисел произвольной длины с плавающей точкой | Ferza | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 24.06.2009 19:24 |
сложение чисел произвольной длины | Ferza | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 24.06.2009 11:16 |
Сортировка двумерного массива произвольной длины. Visual Basic | Pekc | Помощь студентам | 0 | 25.11.2007 19:30 |