Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];

Вниз

Хранение табличных данных в файлах   Найти похожие ветки 

 
Lamerr   (2003-05-07 09:22) [0]

Необходимо сохранить в файле прямоугольную таблицу с заголовками столбцов и данными в Real(в ячейках находятся переменные типа Real).
Что-то вроде екселевского файла...
Количество строк и столбцов не известно заранее.
С текстовыми файлами работать долго и муторно.
Идеальным было бы создание файла из записей, в которых хранились бы заголовки столбцов и динамические массивы с данными с тем.
Но динамические массивы в файлах хранить нельзя...
Просмотрел несколько книжек, но решения так и не принял.
Подскажите, пожалуйста, в каком направлении вести поиск?
Нужно получить файл, который можно было бы БЫСТРО прочитать и обработать.
Исплользовать потоки? Может статьи есть на эту тему...
Спасибо заранее. :о)


 
Digitman   (2003-05-07 09:32) [1]

Чем тебя BDE + Paradox не устраивает для этой цели ?


 
Anatoly Podgoretsky   (2003-05-07 09:33) [2]

Текстовые файлы, очень просто и дадут гибкость, а работает очень быстро.


 
Lamerr   (2003-05-07 09:40) [3]

Вообще-то мне нужно потом эти данные в TChart запихать...
А если у меня 5-10 тысю строк, то искать разделители, переделывать каждую в строку в Real...
Долго очень.:о)


 
Lamerr   (2003-05-07 09:44) [4]

to Digitman:
BDE + Paradox не устраивает тем, что во-первых файл должен иметь максимально низкий объем и, во-вторых все это должно работать на ЛЮБОМ компе, где есть моя прога (прога работает сама и ничего больше не просит).



 
Anatoly P   (2003-05-07 09:48) [5]

А TFileStream чем плох?


 
evvcom   (2003-05-07 09:48) [6]


> Но динамические массивы в файлах хранить нельзя...

Почему нельзя? Все можно. Формат твой, что хочешь в него, то и пиши. Определись для себя, что например, первым числом пойдет размерность массива, а далее данные, и в ПУТЬ!


 
Lamerr   (2003-05-07 09:49) [7]

Текстовые файлы - хорошо, согласен. Однако, мне нужно получить минимальный объем и максимально быстрое чтение...


 
Anatoly Podgoretsky   (2003-05-07 09:49) [8]

Lamerr © (07.05.03 09:40)
Искать разделители не нужно, прочитай в старых учебниках про текстовые файлы.


 
Lamerr   (2003-05-07 09:54) [9]

to Anatoly Podgoretsky
В старых учебниках? В каких именно, не посоветуете? Был бы благодарен... :о)


 
Lamerr   (2003-05-07 09:56) [10]

to evvcom:
Это если используется поток можно. А в стандартный типизированный файл записей - нельзя.


 
Lamerr   (2003-05-07 09:58) [11]

Прошу прощения, мне придется удалиться на час-полтора. Но я обязательно вернусь. Спасибо всем. :о)
Буду очень рад, если увижу вас снова. :о)


 
evvcom   (2003-05-07 09:58) [12]


> А в стандартный типизированный файл записей - нельзя.

В вопросе этого не звучало.

> Это если используется поток можно.

Ну и используй поток, кто мешает?


 
Anatoly Podgoretsky   (2003-05-07 10:01) [13]

Lamerr © (07.05.03 09:56)
Нельзя, или текстовый иди двоичный нетипизированный.


 
ND   (2003-05-07 10:42) [14]

Ini - файл не пробовал и писать и читать очень просто.


 
Mikelson   (2003-05-07 10:51) [15]

Еще XML. Универсальнее не придумаешь.


 
kull   (2003-05-07 11:13) [16]


> Anatoly Podgoretsky © (07.05.03 09:33)
> Текстовые файлы, очень просто и дадут гибкость, а работает
> очень быстро.

Насчет гибкости, тогда уж ADO лучше.
Тогда вообще формат хранения беспокоить не будет.


 
Lamerr   (2003-05-07 11:35) [17]

Похоже, оптимальным вариантом будет являться поток.
Текстовый файл всем хорошь, однако его долго читать.
Anatoly Podgoretsky, подскажите, пожалуйста, где почитать насчет разделителей. :о)


 
evvcom   (2003-05-07 11:41) [18]

Какие разделители? Есть жестко заданный формат: 4 байта - длина буфера, далее сам буфер. А в буфере данные лежат по 4 (или 8, или 10 байт, как угодно) безо всяких разделителей.


 
Lamerr   (2003-05-07 11:53) [19]

to evvcom:
Речь идет о текстовых файлах, в которых столбцы разделются определенными смволами.


 
evvcom   (2003-05-07 11:54) [20]

Ты ж вроде уже на потоки согласился.

> Похоже, оптимальным вариантом будет являться поток.



 
Lamerr   (2003-05-07 12:00) [21]

to evvcom:
На потоки-то я согласился, но у них есть одна неприятная особенность - их нельзя посмотреть по F3, или сразу открыть в Ексель. :о)


 
Palladin   (2003-05-07 12:09) [22]

определись что тебе надо


 
evvcom   (2003-05-07 12:13) [23]

Тогда может тебе еще и html формат предложить, тогда еще и в IE посмотреть сможешь. Действительно, определись, чего тебе надо, потом вопросы и задавай.


 
REA   (2003-05-07 12:16) [24]

Еще есть микрософтовский Structured Storage формат. Но в принципе Т.З. нужно сформулировать точнее.


 
Reindeer Moss Eater   (2003-05-07 12:18) [25]

TStream, TWriter + его методы WriteListBegin + WriteListEnd + WriteInteger + WriteString.


 
Lamerr   (2003-05-07 12:20) [26]

Господа, вся эта дискуссия и затеяна для того чтобы разобраться что использовать ВЫГОДНЕЕ и РАЦИНАЛЬНЕЙ.
И Т.З. сформулировано как раз исходя их этих соображений...


 
Palladin   (2003-05-07 12:26) [27]

Гибкость => свой формат файла => потоки


 
REA   (2003-05-07 12:29) [28]

Единого ответа нет, но чаще всего имеет смысл применять базы данных. Для задач поменьше подходят любые другие варианты (в зависимости от объемов данных и скорости работы с ними).


 
Lamerr   (2003-05-07 12:41) [29]

to REA:
Базы в моем случае не подходят. Слишком тяжеловесно.


 
Erik Ivanov   (2003-05-07 12:47) [30]

Зачем мучится?! Береш DBF ставиш прямой компонент доступа Halcon или еше чего и вперед. Никаких проблем, занимать немного будет и в excel можно открыть. А если делать свой формат то это дополнительный месяц разработки (для тебя).


 
Lamerr   (2003-05-07 12:52) [31]

to Erik Ivanov:
А подробнее? :о)


 
KSergey   (2003-05-07 13:44) [32]

> Lamerr © (07.05.03 12:52)

А куда подробнее? Что именно подробнее? Уже и так все сказано...


 
Digitman   (2003-05-07 13:49) [33]


> Lamerr


все-таки - подумай о DBF) ... BDE - да, тяжеловато ... но есть Halcon ! Есть CodeBase ! Да мало ли компактных и эффективных готовых "движков" существует для прямого доступа к DBF-формату) ... с другой стороны, и Excel без проблем импортирует этот формат ... подумай !)


 
Lamerr   (2003-05-07 13:56) [34]

to KSergey,Digitman:
Lamerr © (07.05.03 09:44)


 
Serginio   (2003-05-07 14:08) [35]

Ar:Array of array of Double;
Запись
f:=TFileStream.Create("C:\Proba.txt",fmCreate or fmOpenReadWrite);
f.Seek(0,soFromBeginning);
len:=Length(ar);
f.Write(len,SizeOf(len));
For i:=0 to Length(ar) Do
Begin
len:=Length(ar[i]);
f.Write(len,SizeOf(len));
f.Write(ar[i][0],SizeOf(double)*len)
end;
чтение
f:=TFileStream.Create("C:\Proba.txt",fmCreate or fmOpenReadWrite);
f.Seek(0,soFromBeginning);
len:=Length(ar);
f.Read(len,SizeOf(len));
SetLength(ar,Len);
For i:=0 to Length(ar) Do
Begin
f.Read(len,SizeOf(len));
SetLength(ar[i],len);
f.Read(ar[i][0],SizeOf(double)*len);
end;

И все дела


 
Digitman   (2003-05-07 14:22) [36]


> Lamerr


ну и что ? почему ты считаешь, что использование тех же Halcon или CodeBase сделают зависимым твое приложение от чего-то еще ? Это вполне самодостаточные движки ! По ресурсоемкости и эффективности они превосходят BDE, ибо изначально проектировались для высокоэффективной работы конкретно с DBF-форматом.
А собственно DBF-файл по внутр.структуре и объему вполне отвечает предъявляемым тобой требованиям.


 
Lamerr   (2003-05-07 14:30) [37]

to Digitman:
А на сколько возрастет размер exeшника? :о)


 
evvcom   (2003-05-07 14:37) [38]


> Lamerr © (07.05.03 14:30)

Ну ты что для Микроши пишешь? Если 20, 30 кБ - это много?


 
REA   (2003-05-07 14:42) [39]

Из форума на DK:
Вообще говоря, для работы с dbf, достаточно вытащить из BDE 4 файла: Bantam.dll, Idapi32.dll, Iddbas32.dll, Idr20009.dll упаковать их AsPack"om (получится 575 кб, естественно что ODBC должен присутсвовать на компе) и слить их в каталог с вашей прогой, далее достаточно TTable, filter тоже будет работать, а еще в свете ускорения процессоров можно подключить rar.dll(30 кб) и запаковывать/распаковывать базы.
А если добавить idbat32.dll и idsql32.dll (239 кб после AsPaсk"a), то и TQuery с SQL можно использовать.
И между прочем получается прога которая памяти жрет гораздо меньше и грузится быстрее, чем допустим при использовании ADO или Halcon (для сравнения dbf файл с телефонной базой на 52000 номеров, и с индексом по каждому полю (весом 12 метров, rar"ом жмется до 1,3 мег), в предлагаемой компоновке из dll отожрал 3,5 и 7 метров в Физ. и Swp памяти соответсвенно, тогда как ADO 7 и 14 мег.), да и скорость поиска более чем приличная (конечно для для телефонной базы можно обойтись вообще без индексов, особенно при использовании TQuery и SQL, и получить еще меньшие затраты ресурсов, или использовать загрузку по частям). Так что Borland"oвские программисты тоже на модульность ставку делали при создании BDE как и Microsoft на модульность ADO.
Ну и на крайний случай можно odbc32.dll и odbcint.dll упаковать и тоже слить. А можно сливать и в Windows\System, на будущее типа делать Upgrade одной двумя dll, но не советую, черевато зубодробительными проблемами.
Те же манипуляции можно проделывать и с dll"ками paradox (правда к базе индекс нужен полюбому). С остальными типами баз думаю тоже можно делать что-то подобное. Хотя для некоторых, например микросовтовского mdb, без алиасов не обойтись.

Я думаю, иcпользовать такой подход все же лучше, чем куча гемороя с Halcon и ему подобным (особенно когда у тебя D5, а Halcon для D4). Тем более что BDE не один год отлаживают.

P.S.
А получился не плохой справочник весом 1,70 мб с очень быстрым поиском(фильтровкой), и независящий от базы, но без режима редактирования.


=RNZ=
icq # : 113833174


 
Digitman   (2003-05-07 14:42) [40]


> Lamerr


Вот дался тебе этот "размер экзешника" !
Ну уж если даже так критичен он - так вынеси ты сам движок в дин.библиотеку ! Или - в пэкэдж .. И всех делов)



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.007 c
4-60005
Dimonich
2003-03-17 18:32
2003.05.19
Как свернуть прогу в трей?


14-59855
alexsys
2003-05-01 10:11
2003.05.19
С праздником!


14-59897
xman
2003-04-29 14:30
2003.05.19
Quake III Arena


1-59683
Радик
2003-05-07 16:12
2003.05.19
Открыть Word


3-59584
Morgan
2003-04-28 07:44
2003.05.19
Хелп с фильтрацией





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский