|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.07.2017, 18:05 | #1 |
Регистрация: 09.12.2009
Сообщений: 3
|
Как загрузить базу SQLite из TStream?
Здравствуйте!
Я использую Delphi XE и обрабатываю локальный файл SQLite 3 с помощью FireDAC: Код:
Подскажите, возможно ли это? Сейчас я реализовал эту возможность через перехват функций: когда FireDac пытается прочитать файл на жестком диске, я ему "подсовываю" TStream. Однако работатет через раз... Возможно посоветуете другой компонент, который может читать базу из TStream? P.S. Сохранить TStream в файл нельзя. Надо читать прямо из потока. |
26.07.2017, 00:40 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
FireDac постоянно дорабатывается, попробуйте взять более свежую версию
|
27.07.2017, 15:47 | #3 | |
Форумчанин
Регистрация: 01.06.2012
Сообщений: 139
|
Цитата:
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
|
|
27.07.2017, 19:05 | #4 |
Регистрация: 09.12.2009
Сообщений: 3
|
Просто не стал подробно описывать, чтобы не вводить в заблуждение...
Занимаюсь восстановлением удаленных файлов. Задача: просмотр удаленного файла SQLite. Т.е. файла физически на диске нет, но я могу передавать компоненту его содержимое. То есть мне нужен компонент который поддерживает что-то типа OnGetFileSize OnReadFile(const Start, Size; var Buffer) Ну или компонент, который не использует DLL, а имеет полностью открытый код, чтобы я мог добраться до чтения файла и добавить туда свои процедуры. |
27.07.2017, 21:41 | #5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
я бы проанализировал какие winapi функции использует компонент скорее всего банальные CreateFile и Read/WriteFile и сделал бы их сплаисинг...
ключевое слово сплайсинг, т.е. подмена стандартных функций на свои...
Не стесняемся, плюсуем!
Последний раз редактировалось Slym; 27.07.2017 в 21:43. |
27.07.2017, 22:46 | #6 |
Регистрация: 09.12.2009
Сообщений: 3
|
Slym, большое спасибо за совет!
Я так и делаю, перехватываю функции и подменяю их: CreateFileW CloseHandle SetFilePointer ReadFile GetFileSize С другими компонентами работает отлично. FireDAC вроде тоже других функций не использует (я проверял через API Monitor). Однако с ним возникла такая проблема: сначала все работает отлично. Потом я просто подключаю к проекту какой-либо юнит (причем в любом месте проекта) и начинаются чудеса. Например в Uses подключаю стандартный DateUtils и FireDAC начинает материться, что файл БД испорчен и не читается. Комментирую использование DateUtils - перехват снова работает. Я так понимаю что эти "чудеса" появляются из-за проблем с памятью, видимо я где-то накосячил с перехватом... Найти проблему так и не смог (да и, честно говоря, даже представления не имею как такое странное поведение отследить). Вот и начал искать другой компонент, чтобы обойтись без перехвата... Последний раз редактировалось hy5; 27.07.2017 в 22:54. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как источником данных сделать базу sqlite в visual studio | jasis | C# (си шарп) | 0 | 05.07.2016 00:13 |
Некорректная вставка в базу, SQLite | poroshin | PHP | 10 | 05.02.2014 22:46 |
Не могу загрузить кириллицу в SQLite | АлМазСофт | БД в Delphi | 0 | 12.09.2013 12:54 |
Как загрузить в базу данных MySQL таблицу ? | pufystyj | PHP | 4 | 19.02.2011 20:18 |
Можно ли загрузить IXMLDOMDocument из TStream | NieL | Общие вопросы Delphi | 2 | 26.11.2010 20:48 |