Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизСохранение данных в оригинальном формате. Найти похожие ветки
← →
Сергей Б. (2002-08-01 16:04) [0]Всем здрасьте! Хотелось бы реализовать сохранение данных из программы, взаимодействующей с БД, на диск в файл. Но так, чтобы это был не текстовый файл, не DBF, а оригинальный формат, содержащий в себе некую структуру, состоящюю из элементов типа record или packed record. Попробовал сделать классическими методами Pascal, но в файле обнаружился лишь мусор. Подскажите кто-нибудь: с какой стороны подступиться к задаче? На что прежде всего обратить внимание? Может у кого уже реализовано такое?
← →
Skier (2002-08-01 16:06) [1]>Сергей Б.
В книге Тейксейры и Пачеко есть хороший пример
(IMHO, во втором томе)
← →
Skier (2002-08-01 16:07) [2]>Сергей Б.
В догонку они там "подменяют" класс TBDEDataSet
← →
Сергей Б. (2002-08-01 16:10) [3]О! Где бы ещё такую книжку заиметь? (Я не в Москве)
← →
Сергей Б. (2002-08-02 08:31) [4]Больше никто ничего посоветовать не хочет? :(
← →
Кулюкин Олег (2002-08-02 08:39) [5]TClientDataSet умеет сохранять данные в XML и в виде бинарника, потом их можно прочитать и работать как с обычным ДатаСетом
← →
Сергей Б. (2002-08-02 15:33) [6]Ну это сложно получается - ради пописАть-почитать добавлять кучу компонентов...
← →
Jeer (2002-08-02 15:38) [7]>Сергей Б. (02.08.02 15:33)
>Ну это сложно получается - ради пописАть-почитать добавлять >кучу компонентов...
Тебе дали дельный совет, насчет TClientDataSet-а.
Компоненты, в том числе для того и придуманы, чтобы повысить скорость создания приложения.
А воротить собственный формат ты думаешь проще ?
У тебя уже не вышло.
← →
Anatoly Podgoretsky (2002-08-02 15:47) [8]Наверно он просто неправильно делал, практически в каждой книге есть примеры записей и работа с ними через файлы
← →
Jeer (2002-08-02 15:51) [9]Скорее всего, так как примеров точно хватает.
← →
Сергей Б. (2002-08-05 15:18) [10]Спасибо за отклики, TClientDataSet вполне бы подошёл для моих задач, но есть закавыка: не могу разбраться как программно назначить экземпляру TClientDataSet локальный датасет, т.е. действие аналогичное "Assign Local Data..." из контекстного меню TClientDataSet. Ткните носом, плиззз!
← →
erik (2002-08-05 15:29) [11]LoadFromFile(const FileName: string = "");
← →
Сергей Б. (2002-08-05 15:34) [12]И что это даст? У меня, к примеру, 3 датасета. Как мне по очереди закэшировать данные из них и последовательно сохранить в файл?
← →
Кулюкин Олег (2002-08-05 16:07) [13]Надо чепляться к открытым датасетам через провайдер, а потом сохранить TClientDataSet в файл.
← →
Сергей Б (из дому) (2002-08-05 16:54) [14]А вот фокус то в том, чтобы без провайдера! В дизайнере я ведь могу выбрать DataSet с помощью "Assign Local Data...", а вот как это сделать в runtime?
← →
Кулюкин Олег (2002-08-05 17:00) [15]Ну тогда расковыряйте компонент и посмотрите что происходит при выборе "Assign Local Data..."
← →
Сергей Б (из дому) (2002-08-05 19:51) [16]Если кому то интересно, решение найдено. Подсказка была в хелпе. Без провайдера никак - я ошибался. Вот как выглядит кусок кода:
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := DataSet1;
ClientDataSet1.Data := TempProvider.Data;
TempProvider.Free;
Но, блин, вылезла другая проблема: TClientDataSet не в состоянии обработать достаточно объёмный набор данных. Точно я не вычислил, но приближаясь к ~1000 строкам программа вылетает без предупреждения об ошибке, а IDE выдаёт невразумительное сообщение. С этим можно как-то бороться или в морг?
← →
Кулюкин Олег (2002-08-06 09:36) [17]2 Сергей Б (из дому) (05.08.02 19:51)
> TClientDataSet не в состоянии обработать достаточно объёмный набор данных
Неправда, я загонял в него 80000 записей, и все жило.
← →
Сергей Б. (2002-08-06 12:26) [18]Да?!! Вот те на! Так где ТЕПЕРЬ копать? Вообще, существуют какие-нибудь методы и рекомендации по отлавливанию таких ошибок?
← →
Кулюкин Олег (2002-08-06 12:32) [19]2 Сергей Б
Если Вы приведете "невразумительное сообщение" которое выдает IDE, то может кто и ответит.
На какой строке ошибка?
← →
Сергей Б. (2002-08-06 13:13) [20]Да... что-то я заплюхался. Ошибка вылазит в другом месте, по-соседству. Только Дельфя вместо ошибки выбрасывает информационное сообщение: "Project ... faulted with message: "access violation at 0x0058c97e: read of address 0x000004a6". Process stopped." И дальше ни шагу, т.е. поиск ошибки в режиме трассировки ничего кроме вышеозначенного сообщения не выдаёт. Приходится прерывать работу программы. Наверное глупо задавать вопрос: что это такое и что мне делать?
← →
Кулюкин Олег (2002-08-06 13:16) [21]Ищите место в котором происходит ошибка.
Вспоминайте, после какого изменения она спала проявляться
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c