Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Сохранение данных в оригинальном формате.   Найти похожие ветки 

 
Сергей Б.   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
1-60570
alexsandri
2002-08-07 18:18
2002.08.19
как програмно


7-60886
Сявчик
2002-06-01 08:21
2002.08.19
EXE


14-60854
Эмиль
2002-07-23 13:43
2002.08.19
Какой аналог делфийского метода Inherited в C++Builder


8-60763
FlashmanX
2002-04-15 12:53
2002.08.19
Чтение wave-файла в массив


3-60500
kiralse
2002-07-29 15:13
2002.08.19
Быстрый поиск в нескольких базах