Работа с потоком
От: luingv  
Дата: 29.05.03 12:50
Оценка:
Ситуация: В потоке организован запуск Excel, вывод данных в Excel. сохранение файла и закрытие Excel.
Проблема: Программа прекрасно работает на трех компьютерах под русскими Win98 и Win2000Pro, но на двух
компьютерах с английской Win2000Pro работать не хочет — программа вылетает при Execute потока.
Вопрос: с чем это может быть связано и как это лечится ?
Re: Работа с потоком
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 29.05.03 12:57
Оценка:
Здравствуйте, luingv, Вы писали:

[]

L>Вопрос: с чем это может быть связано и как это лечится ?


Код в студию, плз... Провидцы все в отпуске
Re: Работа с потоком
От: oleg_v Украина www.lot.kharkov.ua
Дата: 29.05.03 12:57
Оценка:
Здравствуйте, luingv, Вы писали:

L>Вопрос: с чем это может быть связано и как это лечится ?

Это связано с кодом в execute потока и, скорей всего, лечится после отладки на том компе, где вылетает. Потоки сами по себе так не глючат.
... << RSDN@Home 1.0 beta 7a >>
Re[2]: Работа с потоком
От: luingv  
Дата: 30.05.03 06:39
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Код в студию, плз... Провидцы все в отпуске :-


procedure TRaportAll.Execute;
begin
  WriteReport;
end;
==============================
  TRaportEner = class(TRaportAll)
  protected
    procedure WriteReport; override;
  end;
==============================
procedure TRaportEner.WriteReport;
Var
 q,i,j,k,kk : Integer;
 NameShab,NameJur,KL,
    probel,s,sk,DJ,ss : AnsiString;
    ik : Array[1..25] of Integer;
begin

   NameShab:='EnerShab';
   NameJur:='EnerJur';

    k:=0;

    CoInitialize(nil);
    try
    xl:=CreateOleObject('Excel.application');
    except
      MessageDlg('Произошла ошибка при создании объекта Excel',mtError,[mbOk],0);
      exit;
    end;
    xl.DisplayAlerts:=False;

Далее не важно поскольку сюда процесс не доходит.
Re[3]: Работа с потоком
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 30.05.03 06:50
Оценка:
Здравствуйте, luingv, Вы писали:

[]

Попробуйте вместо CoInitialize использовать


CoInitializeEx(nil,COINIT_MULTITHREADED);
Re[3]: Работа с потоком
От: oleg_v Украина www.lot.kharkov.ua
Дата: 30.05.03 06:59
Оценка:
Здравствуйте, luingv, Вы писали:

а от кого происходит TRaportAll?
... << RSDN@Home 1.0 beta 7a >>
Re[4]: Работа с потоком
От: luingv  
Дата: 30.05.03 07:26
Оценка:
Здравствуйте, oleg_v, Вы писали:

_>Здравствуйте, luingv, Вы писали:


_>а от кого происходит TRaportAll?


TRaportAll = class(TThread)
Re[4]: Работа с потоком
От: luingv  
Дата: 30.05.03 11:40
Оценка:
Здравствуйте, Flamer, Вы писали:


F>Попробуйте вместо CoInitialize использовать


F>CoInitializeEx(nil,COINIT_MULTITHREADED);


Спасибо за помощь, но, увы, не помогло.

Работает там, где работало, не работает там, где не работало.

Может быть есть какие-то настройки системы, запрещающие программам использовать потоки?
Re[5]: Работа с потоком
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 30.05.03 13:14
Оценка:
Здравствуйте, luingv, Вы писали:

[]

L>Спасибо за помощь, но, увы, не помогло.


Как вариант — создавать OLE-объект в главном потоке приложения и уже потом передавать в рабочий поток... Попробуйте...
Re[6]: Работа с потоком
От: oleg_v Украина www.lot.kharkov.ua
Дата: 30.05.03 13:27
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Как вариант — создавать OLE-объект в главном потоке приложения и уже потом передавать в рабочий поток... Попробуйте...


после чего точно возникнет ошибка синхронизации в vcl
... << RSDN@Home 1.0 beta 7a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.