Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.49 MB
Время: 0.007 c
1-60571
Kolesya
2002-08-07 19:07
2002.08.19
как передать фокус


1-60567
Брат
2002-08-07 16:58
2002.08.19
Сетевое окружение в OpenDialog


1-60630
andreyz
2002-08-06 05:13
2002.08.19
Иконки в гриде


1-60724
Torn
2002-08-07 02:58
2002.08.19
Как управлять скроллером в WebBrowsere-е


14-60813
Clon
2002-07-22 18:47
2002.08.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский