powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка ADO - Не был произведен вызов CoInitialize
25 сообщений из 27, страница 1 из 2
Ошибка ADO - Не был произведен вызов CoInitialize
    #36592136
monsenior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!
Среда Win7 + Delphi 2010 + Cache 5.0.2

Пишу службу которая вытаскивает данные из CACHE, формирует XML и оправляет
результат по почте.
Есть приложение(тестовое, моё) которое полностью отрабатывает нужный фукционал.
Но при переносе в службу, ADOConnection при установки соединения выдает ошибку -
Не был произведен вызов CoInitialize.
Кто сталкивался и у кого какие мысли?

P.S. - простите меня глупого
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #36592144
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monseniorДень добрый!
Среда Win7 + Delphi 2010 + Cache 5.0.2

Пишу службу которая вытаскивает данные из CACHE, формирует XML и оправляет
результат по почте.
Есть приложение(тестовое, моё) которое полностью отрабатывает нужный фукционал.
Но при переносе в службу, ADOConnection при установки соединения выдает ошибку -
Не был произведен вызов CoInitialize.
Кто сталкивался и у кого какие мысли?

P.S. - простите меня глупого

напиши при инициализации модуля
Код: plaintext
СoInitialize( nil );
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #36592148
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monsenior,
в обычной программе этот вызов делается неявно
в DLL или в сервисе нужно делать явный вызов CoInitialize
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #36592164
monsenior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все спасибо за ответы.
Хотя и сам уже разобрался).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ошибка ADO - Не был произведен вызов CoInitialize
    #39335780
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monseniorВсе спасибо за ответы.
Хотя и сам уже разобрался).


В чем проблема куда прописать СoInitialize(nil);?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39336253
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatВ чем проблема куда прописать СoInitialize(nil);?В поток, который работает с СОМ
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39336274
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatmonseniorВсе спасибо за ответы.
Хотя и сам уже разобрался).


В чем проблема куда прописать СoInitialize(nil);?

Прописать CoInitializeEx(nil, COINIT_MULTITHREADED) будет полезнее
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458879
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiAskatпропущено...



В чем проблема куда прописать СoInitialize(nil);?

Прописать CoInitializeEx(nil, COINIT_MULTITHREADED) будет полезнее

Куда именно прописать?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458885
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatКуда именно прописать?
В любое место потока перед вызовом чего-либо, использующего COM. Например, после begin функции потока.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458893
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAskatКуда именно прописать?
В любое место потока перед вызовом чего-либо, использующего COM. Например, после begin функции потока.

Не работает все равно выходить ошибка
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458898
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все перепробовал, не работает или я что то не так делаю, подскажите плееаааааазззз!!!

Вот pas:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
unit WebModuleUnit1;

interface

uses System.SysUtils, System.Classes, Web.HTTPApp, ADODB, ActiveX, Data.DB;

type
  TWebModule1 = class(TWebModule)
    ADOConnection: TADOConnection;
    procedure WebModule1DefaultHandlerAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
    Procedure GetADOConnection;
    procedure GetInfoPersons;
  public
    { Public declarations }
  end;

var
  WebModuleClass: TComponentClass = TWebModule1;
 // ADOQuery : TADOQuery;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}



Procedure TWebModule1.GetADOConnection;
begin
  CoInitialize(nil);
  //CoInitializeEx(NIL, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY);
  try
     begin
        ADOConnection.Connected := False;
        ADOConnection.ConnectionString := 'Provider=SQLOLEDB.1;'+
                                          'Password=qwerty123;'+
                                          'Persist Security Info=True;'+
                                          'User ID=sa;'+
                                          'Initial Catalog=PDLS;'+
                                          'Data Source=AGBWS1595\SQLSERVER2008R2';
        ADOConnection.LoginPrompt := False;
        ADOConnection.Connected := True;
     end;
  finally
    CoUninitialize;
  end;
end;


procedure TWebModule1.GetInfoPersons;
begin
//  GetADOConnection;
//  CoInitialize(nil);
//  try
//    ADOQuery:=TADOQuery.Create(nil);
//    try
//      ADOQuery.Open;
//      ADOQuery.Connection := GetADOConnection;
//      ADOQuery.SQL.Clear;
//      ADOQuery.SQL.Text:= 'SELECT id, lname, fname, sname, post_id, organization_id FROM persons';
//      ADOQuery.Close;
//    finally
//      ADOQuery.Free;
//    end;
//  finally
//    CoUninitialize;
//  end;
end;

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 // GetADOConnection;
  //GetInfoPersons;
  //CoInitializeEx(NIL, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY);
  Response.Content :=
                      '<html>' +
                      '<head><title>Web Server Application</title></head>' +
                      '<body>Web Server Application </body>' +
                      '</html>';
end;

end.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458919
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatНе работает все равно выходить ошибка
Ошибка с пустым текстом?

Пробовал после begin в файле dpr написать CoInitialize?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458923
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Пробовал - ноль эмоции в интерфейсе
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39458935
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,

Жаль, что ошибка с пустым текстом. Такую, боюсь, не побороть, не повезло.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459019
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAskat,

Жаль, что ошибка с пустым текстом. Такую, боюсь, не побороть, не повезло.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459020
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAskat,

Жаль, что ошибка с пустым текстом. Такую, боюсь, не побороть, не повезло.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459022
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat
Код: pascal
1.
2.
3.
4.
5.
6.
begin
  CoInitialize(nil);
  //CoInitializeEx(NIL, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY);
  try
     begin
        ADOConnection.Connected := False;

YuRockВ любое место потока перед вызовом чего-либо, использующего COMЭто "перед"? Или "когда мне удобно"?

Askat
Код: pascal
1.
2.
3.
4.
5.
        ADOConnection.Connected := True;
     end;
  finally
    CoUninitialize;
  end;

Можете внятно объяснить, зачем Вы это делаете?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459024
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,

Я вот не понимаю, ну, что мешает посмотреть в отладчике где идет первый вызов COM и куда нужно вставить вызов функции?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459046
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Askat,

Я вот не понимаю, ну, что мешает посмотреть в отладчике где идет первый вызов COM и куда нужно вставить вызов функции?

Даже если просто кинуть сам компонент ADOConnection кинуть на TWebModule1 и при запуске выходит соответствующее сообщение, я пробовал до и после начало вставить и в самом файле *.dpr*все равно выходит сообщение...
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459051
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Askat,

Я вот не понимаю, ну, что мешает посмотреть в отладчике где идет первый вызов COM и куда нужно вставить вызов функции?

Не могли бы показать в виде примера создав проект Webbroker + ADOConnection...?
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459053
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatДаже если просто кинуть сам компонент ADOConnection кинуть на TWebModule1_Vasilisk_, что мешает посмотреть в отладчике где идет первый вызов COM
Askatя пробовал до и после начало вставить и в самом файле *.dpr*все равно выходит сообщение...Можно еще попробовать вставить в другую программу. Эффект будет тот же.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms678543(v=vs.85).aspx You need to initialize the COM library on a thread before you call any of the library functions except CoGetMalloc, to get a pointer to the standard allocator, and the memory allocation functions.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39459066
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatДаже если просто кинуть сам компонент ADOConnection кинуть на TWebModule1 и при запуске выходит соответствующее сообщение, я пробовал до и после начало вставить и в самом файле *.dpr*все равно выходит сообщение...
Значит, я вижу 3 варианта:
1. Ты вызываешь CoInitialize всё-таки поздно;
2. Вызываешь CoUninitialize не вовремя, чем аннулируешь вызов CoInitialize, после чего идет работа с COM в этом потоке, и происходит ошибка;
3. Проблема происходит в другом потоке.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39460136
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче проблему с CoInitialize решил, теперь пытаюсь вызвать запрос выходит ошибка Missing Connection or ConnectionString ?

Что здесь не так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
unit WebModuleUnit1;

interface

uses System.SysUtils, System.Classes, Web.HTTPApp, ActiveX, Data.DB,
  Data.Win.ADODB, System.Win.ComObj;

type
  TWebModule1 = class(TWebModule)
    procedure WebModule1DefaultHandlerAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;
      Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
    procedure GetPersons;
  public
    { Public declarations }
    function GetADOConnection: TADOConnection;
  end;

var
  WebModuleClass: TComponentClass = TWebModule1;
  ADOConnection : TADOConnection;
  qUsers: TADOQuery;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}


function TWebModule1.GetADOConnection: TADOConnection;
const
  ConStr =
          'Provider=SQLOLEDB.1;'+
          'Password=Dnstuff001;'+
          'Persist Security Info=True;'+
          'User ID=sa;'+
          'Initial Catalog=TestDB;'+
          'Data Source=AGBWS1595\SQLSERVER2008R2'+
          'Tag with column collation when possible=False';

  UserName = 'sa';
  PassWord = 'Dnstuff001';
  Server = 'AGBWS1595\SQLSERVER2008R2';

begin
  if NOT Assigned(ADOConnection) then
  begin
    CoInitialize(nil);
    ADOConnection := TADOConnection.Create(nil);
    with ADOConnection do
    begin
      ConnectionString := Format(ConStr, [UserName, PassWord, Server]);
      LoginPrompt := False;
      try
        ADOConnection.Connected := True;
      Except
        on e:EADOError do
        begin
          // ошибка
        end;

      end;
    end;

  end;
  Result := ADOConnection;
end;


procedure TWebModule1.GetPersons;
//var
//  iName : string;
begin
  try
    CoInitialize(nil);
    qUsers := TADOQuery.Create(nil);
    qUsers.Connection := ADOConnection;
    with qUsers do
    begin
      Active := False;
      sql.Clear;
      sql.Add('SELECT id, firstname, lastname, phone, email FROM users');
      Active := True;       <<-- ошибка отсюда выходит
    end;
  finally
    qUsers.Free;
  end;

//  iName := qUsers.FieldByName('firstname').AsString;
end;

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  GetPersons;
  Response.Content :=
                    '<html>' +
                    '<head><title>Web Server Application</title></head>' +
                    '<body>Web Server Application sdsdfsfsdf '+qUsers.FieldByName('firstname').AsString+' </body>' +
                    '</html>';
end;


procedure TWebModule1.WebModuleAfterDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if Assigned(ADOConnection) then
  begin
    ADOConnection.Close;
    ADOConnection.Free;
    ADOConnection := nil;
    CoUnInitialize;
  end;
end;

initialization
CoInitializeEx(nil,COINIT_MULTITHREADED);
finalization
CoUninitialize;

end.
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39460156
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,

Вот здесь чему равно ADOConnection?
Код: pascal
1.
 qUsers.Connection := ADOConnection; // nil или не nil
...
Рейтинг: 0 / 0
Ошибка ADO - Не был произведен вызов CoInitialize
    #39460239
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatКороче проблему с CoInitialize решил, теперь пытаюсь вызвать запрос выходит ошибка Missing Connection or ConnectionString ?

Что здесь не так:


Программирование методом тыка - это плохой способ.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка ADO - Не был произведен вызов CoInitialize
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]