Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2017, 23:55   #1
donich.aleksei
 
Регистрация: 05.11.2012
Сообщений: 3
По умолчанию Вопрос по работе с потоками

Добрый день, дамы и господа!!!
подскажите пожалуйста тормозу=))) каким образом запущенный в потоке OLE процесс(точнее excel) можно передавать от одного потока в другой???

Большое спасибо за внимание и поддержку...
donich.aleksei вне форума Ответить с цитированием
Старый 14.09.2017, 01:36   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

А что конкретно передавать нужно? И главное - для чего?
northener вне форума Ответить с цитированием
Старый 14.09.2017, 11:11   #3
donich.aleksei
 
Регистрация: 05.11.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А что конкретно передавать нужно? И главное - для чего?
тема в следующем... прошу учесть, мои знания по работе с потоками минимальны (т.е. какой нить статус бар прикручивал, а что нить серьёзней не делал=))...

написал следующую прогу... открывает следующую пакчку ёкселей
перечень номеров документов -1 файл
список платежей совершенных по годам - 4 файла (большие каждый метров по 150)

далее ищем соответствующие номера доков в списке платежей, суммируем поступление денег по каждому доку и выводим перечень с соответствующими данными. сейчас все работает но медленно 3-6 дней на выполнение задачи. для решения данной задачи решил разложить на потоки. начал делить на потоки и что то не получается. не понимаю как обратиться к запущенному в потоке ёкселю из основного потока.

PS Сделать то же самое но на скуле не предлагать=))) специфика работы организации=)))

Последний раз редактировалось donich.aleksei; 14.09.2017 в 11:13.
donich.aleksei вне форума Ответить с цитированием
Старый 14.09.2017, 13:32   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

мда... потоки скорости не добавят...
надо менять способ доступа к данным: или открывать таблицы как БД или портировать в БД и уже с БДработать...

в одном банке формирование выписки в Ворд делалось сначала в промежуточный CSV а потом на VBA через замену Find/Replace в шаблон...
на обычных выписках все работало, но пришел клиент с большим потоком платежек и и попросил выписку за год...
4 дня карл! и доползло до середины... поиск замедлялся в геометрической прогрессии...
Я сохранил шаблон в RTF нашел в этом RTF таблицу и код строки и слепил скрипт пишуший напрямую из CSV в RTF файл - 15 сек, это несколько порядков разницы!
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 14.09.2017, 15:10   #5
donich.aleksei
 
Регистрация: 05.11.2012
Сообщений: 3
По умолчанию

по логике вещей должен прибавить,
как я понимаю можно разобрать четыре файла в отдельные потоки и параллелить поиск, а затем в основном потоке склеивать и кидать на выход..... более серьезное рисовать не хочу... и так все что сделано чистый "факультатив".......
donich.aleksei вне форума Ответить с цитированием
Старый 14.09.2017, 16:21   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Slym +1

Че такое на скуле не предлагать? Потянуть sql-запросом из делфи таблицу это на скуле? А там уж либо клиентдатасеты с индексами и программно парсить, либо исхитрится все запросом, но большим и сложным ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.09.2017, 20:08   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

В основном потоке создаете подключение к каталогу где надо что-то искать из N справочников. Далее для справочников пишите поток, с событием получения данных, далее в поток отдаете файл, вешаете событие, запускаете поток.
При возникновении события запускаете крит. секцию, ищите в каталоге данные справочник, что-то ещё...
закрываете крит. секцию.

Не знаю как вам это поможет, у вас тормоз в основном каталог, а не справочники, потому что вам одновременно из 4 точек надо обратить к 1 файлу, а так нельзя, только методами синхронизации. А потому ресурс который опрашиваете из разных мест, надо бы в БД конвертировать.

Но если ресурсы сервера позволяют "жирануть", то на каждый справочник открывайте каталог в потоке, и будет вам ускорение.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос о работе Questionier Свободное общение 15 19.01.2015 07:17
Вопрос по работе с Qt CarmaC Общие вопросы C/C++ 3 16.07.2011 13:52
Ошибка при работе с потоками Shouldercannon Общие вопросы Delphi 2 21.07.2010 14:35
Ошибка при работе с потоками( _SeRGeaNT_ Общие вопросы C/C++ 2 11.01.2009 14:50
Ошибка при работе с потоками vitalik007 Общие вопросы Delphi 6 09.03.2008 09:25