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