Вверх ↑
Этот топик читают: Гость
Ответов: 262
Рейтинг: 6
#1: 2006-10-13 12:11:01 ЛС | профиль | цитата
На просторах инета я наткнулся на компонент для Delphi работающий с SQLite. При ближайшем рассмотрении в нем обнаружилась папка в которой лежал SQLite в виде .obj файлов. Я написал к нему юнит описание SQLite3ApiObj полностью повторяющий SQLite3Api. Теперь любой желающий может скомпилировать свою программу и запустить без sqlite3.dll. Не знаю нужно ли это кому нибудь, но выкладываю.
Версия SQLite 3.2.8.

[size=-2]------ Добавлено в 12:11
забыл добавить, что содержимое нужно поместить в elementdelphicode и в коде элементов использующих SQLite поменять название юнита с SQLite3Api на SQLite3ApiObj.
PS: Я знаю, что размер exe-шника "слегка" вырастет

Аттач ниже.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2006-10-13 12:15:23 ЛС | профиль | цитата
Chesh,
Я знаю, что размер exe-шника "слегка" вырастет
а просто интересно на сколько больше готового exe-шника+sqlite3.dll ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 262
Рейтинг: 6
#3: 2006-10-13 12:25:34 ЛС | профиль | цитата
Tad, 302 кб exe-шник с obj, 66,5 кб без него. Размер DLL 349 кб. Итого 349+66,5=415,5 против 302.
А еще нашел obj от версии 3.3.4. если надо скажите, выложу.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#4: 2006-10-13 12:44:23 ЛС | профиль | цитата
Ну собственно, DLL - это безусловное пристегивание ВСЕХ фич, без анализа их использования...
Так что, результат этого "насколько" еще зависит и от того, насколько "все" из SQLite ты используешь.
ИМХО
карма: 9

0
Ответов: 2125
Рейтинг: 159
#5: 2006-10-13 13:08:39 ЛС | профиль | цитата
в коде элементов использующих SQLite поменять название юнита с SQLite3Api на SQLite3ApiObj
Чтобы каждый раз не менять, нужно через условную компиляцию сделать. А ещё, хорошо бы символы условной компиляции добавить в Settings (для каждого компилятора). А ещё, хорошо бы символы условной компиляции и в sha-файле хранить.
карма: 1

0
Ответов: 262
Рейтинг: 6
#6: 2006-10-13 15:00:56 ЛС | профиль | цитата
Galkov, а еще HiAsm пакует экзэшник, а длл врядли упакована
tsdima, да ты прав, но я не стал пока трогать основной юнит, вдруг сообщество не одобрит такое нововведение. Если одобрите - то после выходных выложу на SVN.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2006-10-13 15:51:23 ЛС | профиль | цитата
Если одобрите - то после выходных выложу на SVN.

В каком же виде?
карма: 27
0
Ответов: 2125
Рейтинг: 159
#8: 2006-10-13 16:27:46 ЛС | профиль | цитата
Основной юнит трогать не надо. А вот компоненты - да, чтобы они подключали тот или другой основной юнит в зависимости от символов условной компиляции.
карма: 1

0
Ответов: 3655
Рейтинг: 69
#9: 2006-10-13 17:56:43 ЛС | профиль | цитата
Чё то вы тут много понаписали а главного не сказали .
При использовании SQLiteObj.zip не надо будет таскать с прогой ещё и файл SQLite.DLL.
Плюсы очевидны при желании можно уменьшить общий вес программы,и не таскать не нужные фичи из DLL.
Минусы - такая прога может не влезть на форум и качать примеры ни какого трафика не хватит.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#10: 2006-10-13 18:24:05 ЛС | профиль | цитата
такая прога может не влезть на форум
я думал, что EXE-шники уже все повыкидывал...
а главного не сказали
а второй пост Автора про что тогда ???
карма: 9

0
Ответов: 262
Рейтинг: 6
#11: 2006-10-14 11:54:36 ЛС | профиль | цитата
Dilma, тов. tsdima предложил сделать через условную компиляцию. Можно сделать это в SQLite3Api, а можно в каждом из элементов работабщих с SQLite, в секции uses. По моему, все таки, первый вариант лучше. Также добавить SQLite3Api.inc с {$define SQLITE_INDLL}
карма: 0

0
Ответов: 2125
Рейтинг: 159
#12: 2006-10-14 13:56:16 ЛС | профиль | цитата
Также добавить SQLite3Api.inc
Может не надо плодить .inc файлы?
карма: 1

0
Ответов: 262
Рейтинг: 6
#13: 2006-10-15 04:33:07 ЛС | профиль | цитата
tsdima писал(а):
Может не надо плодить .inc файлы?
мне тоже не нравиться такое разнообразие. К тому же не подконрольное разработчику схем. Но как выйти из ситуации? Не знаю пока есть ли возможность это реализовать - может сделать элемент среды типа HubEx, назвать его ProjectOption, а в нем пропертисы _prop_MT_ENABLED, _prop_SQLITE_INDLL, и так далее. Логика работы проста: если на схеме есть этот элемент то берем данные и генерим условия компиляции, если нет, то по умолчанию.
Не знаю как реализовать это самому. Скорее это вопрос к Dilma.
карма: 0

0
Ответов: 2125
Рейтинг: 159
#14: 2006-10-15 21:50:50 ЛС | профиль | цитата
ProjectOption давно пора сделать, которые в .sha файле будут сохраняться. Вполне допустимо, как компонент, либо как специальные свойства (определённого типа) главного компонента проекта. Без вмешательства в среду это вполне можно сделать - учесть в CodeGen.

[size=-2]------ Добавлено в 21:50
Можно сделать это в SQLite3Api
Пожалуйста. Кстати, я немного сократил каталог SQLiteObj, убрал почти всю C-RTL. Теперь "добавка" ещё меньше, в каталоге осталось лишь 4 файла

Подключение obj будет только если в командную строку компилятора добавить -DSQLITE_OBJ
Например так:
"%fname%" -DSQLITE_OBJ -Q "-E%opath%"[/code]
карма: 1

0
файлы: 1SQLiteApi.zip [132.4KB] [559]
Ответов: 262
Рейтинг: 6
#15: 2006-10-16 10:28:28 ЛС | профиль | цитата
tsdima писал(а):
...немного сократил каталог SQLiteObj...
это здорово.
А вот у меня вопрос. А почему, если ты объединил SQLiteApi и SQLiteApiObj, такая странная функция CheckSQLiteLoaded ? в оригинальном SQLiteApi там есть проверка на наличие SQLite3.DLL.

И в добавку SQLite 3.3.4. в OBJ ах

[size=-2]------ Добавлено в 10:28
А вот здесь я объединил оригинальный SQLite3Api(без изменений), SQLite3ApiOBJ, SQLiteApi от tsdima и SQLite 3.3.4 в одном флаконе. В таком виде и предлагаю выложить его на SVN.
Условие компиляции находиться в SQLite3Api.inc. Для сборки без sqlite3.DLL поставьте в нем $ перед define.
карма: 0

0
файлы: 1SQLite3Api_and_obj3_3_4.zip [134.5KB] [583]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)