Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
Внизработа с файлами Найти похожие ветки
← →
картман © (2010-09-22 14:08) [0]Всем привет!
Данные вида:
col1 col2 col3
row1 x 0 x
row2 0 x x
row3 x x 0
надо хранить в файле. row - строка переменной длины, col - Integer, x - Double, Где стоит 0 значение отсутствует.
Как хранить?
Думаю так: первый байт - длина строки, за строкой - кол-во записей и т.д.
[LenStr,StrData,CntRec,[Recs]]
Так пойдет, с точки зрения скорости?
И подскажите еще, какими функциями осуществлять доступ(желательно апишными - потом на с++ надо будет переписать)
← →
Сергей М. © (2010-09-22 14:12) [1]
> желательно апишными - потом на с++ надо будет переписать
Из сишных прог ADO-объекты доступны так же как из дельфийских.
Так что возьми ADODataSet и не парься с форматом - там уже все изобретено и не самым худшим образом
← →
Palladin © (2010-09-22 14:12) [2]
> Думаю так: первый байт - длина строки, за строкой - кол-
> во записей и т.д.
ну а чего бы не пойти... все-же ходят )
тут дело в другом.... делфи или сипп(ц) без разници... буфферэд ридер + ридер в структуру... одинаково....
← →
картман © (2010-09-22 14:22) [3]
> Сергей М. © (22.09.10 14:12) [1]
обязательно подумаю. Кстати, насчет ado и там, и там... кажись, этот великий и могучий требует нехилых усилий, чтобы просто подключиться к БД и сделать селект?
> Palladin © (22.09.10 14:12) [2]
пасиб. А можно их по аглицки написать?
> тут дело в другом.... делфи или сипп(ц) без разници
ну, это чтобы не советовали StringList.LoadFromFile
а отображение файлов в память - имеет смысл только для больших размеров?
← →
Palladin © (2010-09-22 14:33) [4]Есть такое понятие. Стрёмы. Кстати гениальное. В Делфи они тоже со Стрёма начинаются. И в Джява (хоть немножко запутанно, но тут виноваты не мы а создатели класса Вектор). А дальше от Стрёма начинается куча ответвлений, что не суть есть важно. Важно то что еще есть и Ридеры из Стрёмов. Ридерам пофени откуда они ридят из МемориСтрёма, ФайлоСтрёма или еще какого нибудь пошлого ТиСиПиСтрёма. Основная задача Ридеров - прочитать Структуру из Стрёма.
Идея БуффередСтрёма заключается в чтении из абстрактного Стрёма целыми кусками, прямо таки железобетонными, по мехабайту или двум. Предоставляя структурное чтение из себя Ридерам.
В результате рождается феномен пофигизма Ридером по отношению к своим метода чтения из Стрёмов.
← →
картман © (2010-09-22 14:35) [5]
> Palladin © (22.09.10 14:33) [4]
хорошо, прочитал я большой кусок ридером из стрема - как мне с ним дальше обращаться?
← →
Сергей М. © (2010-09-22 14:37) [6]
> картман © (22.09.10 14:22) [3]
> этот великий и могучий требует нехилых усилий, чтобы просто
> подключиться к БД и сделать селект?
Ну кое-каких - да, требует. Вопрос лишь в том какие усилия считать "нехилыми" ..
А собссно к селекту твоя задача какое отношение имеет ?
Вроде никакого ..
← →
Palladin © (2010-09-22 14:40) [7]Плин... да Ридер не читает больших кусков из Стрёма. Он читает своими, нужными ему кусками, по байту, по двум, 15, 67. А вот Стрём, из которого он читает, обеспечивает ему буфферезированную отдачу информации. То бишь, Ридер запросил 4 байта (длинну строки), причем он (Ридер) даже понятия не имеет откуда он ее читает, а БуффередСтрём увидев данное непосредство, прочитал 4 байта из файла (сети, памяти) и еще РазмерБуффераБуффераСтрёма-4 байтов. И далее, когда ридер запрашивает, дальнейшие данные, БуффередСтрём уже выдает ему из буффера.
Все просто как банан.
← →
картман © (2010-09-22 14:41) [8]
> Сергей М. © (22.09.10 14:37) [6]
> Вопрос лишь в том какие усилия считать "нехилыми" ..
в сравнении с киданием TADOConnection на форму
> А собссно к селекту твоя задача какое отношение имеет ?
> Вроде никакого ..
ааа... ADO может не только с БД работать? Сразу с файлом? Не знал.
← →
картман © (2010-09-22 14:42) [9]
> Palladin © (22.09.10 14:40) [7]
ага, усё понятно
← →
картман © (2010-09-22 14:46) [10]
> > А собссно к селекту твоя задача какое отношение имеет
> ?
> > Вроде никакого ..
это я нарушаю правила форума - задаю другой вопрос
← →
Сергей М. © (2010-09-22 14:52) [11]
> в сравнении с киданием TADOConnection на форму
)
Ну, положим, разница в нехилости при кидании в дизайн-тайм и рантайм-создании компонентов в случае с ADO ничем не отличается случая с не-ADO-компонентами.
Или я тебя неверно понял..
> Сразу с файлом?
Угу. Как и TClientDataSet.
С той лишь разницей что портировать работу с TClientDataSet в приплюснытое приложение ты упаришься, а TADODataSet туда переползет относительно легко.
← →
Palladin © (2010-09-22 14:56) [12]А задача, вообще случайно, не сводится ли к передаче рекорсета с одного места в другое? )
← →
Andy BitOff © (2010-09-22 15:23) [13]> Palladin © (22.09.10 14:33) [4], [7]
Как ты все ясно, прозрачно и доходчиво объяснил =))))
← →
картман © (2010-09-22 15:25) [14]
> Сергей М. © (22.09.10 14:52) [11]
не в .Net или как там назвать правильно? А в ANSI C++. Чего-то я только видел обсуждения какой библиотекой лучше пользоваться: Qt или wxWidget, а в букваре прочел, что можно через ATL. Или я совсем ничего не понял?
> Palladin © (22.09.10 14:56) [12]
>
> А задача, вообще случайно, не сводится ли к передаче рекорсета
> с одного места в другое? )
Ну, концептуально да: в одном случае мне надо ускорить вычисления, которые я провожу на sql server, а в другом - нужно модифицировать данные под свои нужды, но базу трогать нельзя, да и неудобно(долго) с ними работать в БД будет.
А так нет, конечно.
← →
картман © (2010-09-22 15:27) [15]
> Andy BitOff © (22.09.10 15:23) [13]
да в общем понятно - я хотел узнать, нормально ли так делать, а саму суть знал на уровне теории
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c