Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 374

/ вопрос решён /

Приветствую, уважаемые эксперты!
Подскажите
как сохранять и читать динамический массив (array of integer) в поле ClientDataSet'а ну или в любой другой DataSet,
какой тип выбрать для данного поля?
желательно пример привести
заранее спасибо!

Казаков Николай Константинович Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Казаков Николай Константинович (статус: 1-ый класс)
Вопрос отправлен: 12 февраля 2013, 16:39
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: SnowLeo

Здравствуйте, Казаков Николай Константинович!
Лучше сделать подчиненную таблицу, и туда эти массивы с полем связи.
Если не подходит такой вариант, просто текстовое поле (да тот же blob), и туда все значения через запятую.

Ответ отправил: SnowLeo (статус: 1-ый класс)
Время отправки: 12 февраля 2013, 19:34


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 15 февраля 2013, 12:47; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 12 февраля 2013, 16:47 [#1]:

blob? хотя подозреваю, что это не то что нужно и задачу решаете неверно.

Что хранится в этих массивах?
Галочка "подтверждения прочтения" - вселенское зло.
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 13 февраля 2013, 08:32 [#2]:

в массиве храню числа, вообще поля в CDS должны быть такими <Наименование><Массив>.

вся трудность в том, что я вообще никогда не имел дел с блоб, в гугле большинство ссылок где в блоб пихают файл с массивами что-то не получается найти
нашел вот это http://it-blackcat.blogspot.ru/2012/06/blob-2.html,
но там используется
qInsertResearchData.Params[5].SetBlobData
в моей Delphi 7 так не получается
SnowLeo

SnowLeo (статус: 1-ый класс), 13 февраля 2013, 10:20 [#3]:

Ну все просто же. Я даже пример не буду писать...

Вот у вас есть массив с integer [1,2,3,4,5]. Напишите функцию, которая переводит его в строку с разделителями (через запятую например) - "1,2,3,4,5".
Далее вы эту строку запишите в Blob-поле, стандартным способом - BlobField.AsString := ваша_строка;

Потом, при чтении из Blob - совершаете обратный процесс.
Вадим К

Вадим К (статус: Академик), 13 февраля 2013, 16:12 [#4]:

что это за числа в массиве? случайно не id для выборки с другой таблицы?
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 13 февраля 2013, 23:28 [#5]:

зачем одномерный массив переводить в строку? Не проще сохранить его в таблицу?
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 14 февраля 2013, 08:25 [#6]:

>> Ну все просто же.

а не долго будет? у меня в массиве кол-во элементов колеблется от 4 до 6 тыс.

вот нашел кое-что, может подойдет мне или кому еще пригодится )


var
tmpBlobStream: TStream;

begin
...
tmpBlobStream = Dataset.CreateBlobStream(...);
tmpBlobStream .WriteBuffer(aData[0], Length(aData) * SizeOf(aData[0]))
Dataset.Post;
Вадим К

Вадим К (статус: Академик), 14 февраля 2013, 12:34 [#7]:

Почему Вы не отвечаете на поставленный вопрос, а ходите вокруг да около?:)
Галочка "подтверждения прочтения" - вселенское зло.
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 14 февраля 2013, 12:49 [#8]:

Вадим К
Нет не id это данные из Wav файла, массив размерностью около 5000 элементов.

Мережников Андрей
может есть более удобный вариант чем создавать 5000 столбцов в таблице и хранить в них по 1 числу
SnowLeo

SnowLeo (статус: 1-ый класс), 14 февраля 2013, 14:37 [#9]:

Казаков Николай Константинович:
>может есть более удобный вариант чем создавать 5000 столбцов в таблице и хранить в них по 1 числу

Зачем 5000 столбцов? Одна таблица с двумя столбцами. Но вот в ней будет на каждый wav файл - 5000 записей.

>а не долго будет? у меня в массиве кол-во элементов колеблется от 4 до 6 тыс.
Думаю что не долго - надо тестировать. Все зависит от конфигурации процессор и память и СУБД.
Вадим К

Вадим К (статус: Академик), 15 февраля 2013, 12:47 [#10]:

Цитата:

Но вот в ней будет на каждый wav файл - 5000 записей.

вот с этого и нужно начинать. В этом случае либо блобы, либо даже внешний файл.
Галочка "подтверждения прочтения" - вселенское зло.

18 марта 2013, 21:50: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Программирование баз данных (БД) модератором Ерёмин А.А.

18 марта 2013, 21:50: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:32
Выполнено за 0.02 сек.