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

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

Работа с ADO или ODBC без использования объектов(!) [D5]


RAA ©   (2002-12-12 15:08:00) 

У меня есть прогруммулька вида service её размер сейчас получился 18кб....если работать через объект TADOQuery то
Во первых размер проги сразу увеличиваеться на 250 кило((((
А во вторых она у меня просто нивкакую нихочет проходить процедуру MainADO:=TADOQuery.create(nil);

Помогите....конечно хотелось бы не использовать модуль ADODB а сделать всё ручками по новому(!))))


RAA   (2002-12-13 21:35:00) [1]

asmith >> Друг будь любезен кинь на мыло golovin@samaraenergo.ru
У меня действительно сейчас с временем просто бяда...сессия однако.......


asmith   (2002-12-13 17:03:00) [2]

Проверь, не остались ли где ссылки на неиспользуемые модули (uses). Можно также включить генерацию линкером Мар-файла и поразглядывать его на предмет наличия ненужных модулей. А кроме того, стоит соптимизировать (в смысле немного порезать) ADODB_TLB.PAS, если нет времени и желания это делать - могу прислать его мылом.


RAA   (2002-12-12 21:50:00) [3]

asmith У меня как-то странно без всякой инфростуктуры размер проги разросся до 263 кило(((((((


RAA   (2002-12-12 20:01:00) [4]

Пасибо Вам(!)
Завтра опробую(!)))


asmith   (2002-12-12 19:48:00) [5]

sniknik почти прав - Project->Import Type Library->выбираешь Microsoft ActiveX Data Objects 2.X Library->выключаешь внизу Generate Component Wrapper->жмешь Create Unit->Delphi сгенерит ADODB_TLB.PAS - юзаем для работы с ADO только ее и больши ничего! Включаем ее в проект и далее как ранее описывалось. И все эти Connection, Recordset и все остальное - описано в ней. Кстати, вместо этого подхода (раннего связывания) можешь вместо Connection, Recordset написать просто OleVariant и заюзать позднее связывание примерно так:
var
aConnection : OleVariant;
Data : OleVariant;
...
CoInitialize(nil);
aConnection := CreateOleObject("ADODB.Connection");
...
Data := CreateOleObject("ADODB.Recordset");
и так далее.


RAA   (2002-12-12 19:24:00) [6]

Да с модулями adodb и activex TADOQuery заработал но и размер практически с никакой структурой весит 440кило(!)))

asmith - плз поподробней распиши что и как надо сделать(!)))


sniknik   (2002-12-12 18:09:00) [7]

CoInitialize(); в ActiveX

а для остального сделай импорт ADO, меню Component-> Import ActiveX Control. по моему речь об этом.

а вот модуль adodb и другие тебе не нужен без лишних килобайт не обойдется. :о)


RAA   (2002-12-12 17:59:00) [8]

Я даже подключил модуль adodb целиком но всё равно он так и не нашёл CoInitialize();

Если не сложно опиши поподробнее(!) плз(!)


RAA   (2002-12-12 17:44:00) [9]

aConnection : Connection;

А :Connection это из какого модуля?

asmith пасибо тебе уже более понятно куда двигаться(!)))


asmith   (2002-12-12 16:57:00) [10]

Я это проходил, нужно было в сервисе работать с ADO и не хотелось, чтобы написанный без VCL сервис сильно раздулся. Импортировал биб-ку типов ADO и работал напрямую с интерфейсами примерно так (обработка ошибок опущена для компактности):
var
szConnStr : string;
aConnection : Connection;
Data : Recordset;
szQueryString : string;
...
CoInitialize(nil); // это обязательно-без этого видимо твоя TADOQuery не работала
aConnection := CoConnection.Create();
szConnStr := GetConnectionString();
OleVariant(aConnection).Open(szConnection);
Data := CoRecordset.Create();
Data.Set_ActiveConnection(aConnection);
Data.CursorLocation := adUseClient;
szQueryString := "select * from SomeTable";
Data.Open(szQueryString, szConnection, adOpenKeyset, adLockBatchOptimistic, adCmdText);
// using data here
Data.Close();
Data := nil;
aConnection := nil;
CoUninitialize();
...
Если размер покажется великоватым (не будет 250 к, но все же), можно руками вычистить модуль импорта биб-ки типа от вещей, которые не будут использоваться), у меня после этого сервисы с довольно развитой функциональностью весили порядка 70 К.


Наверх

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