Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение данных в оригинальном формате. [D5, Win2k, WinXP]


Страницы:   1 2

Сергей Б. ©   (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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо