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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 22:17   #1
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию Запуск нескольких приложений из моего

Здраствуйте!
Интересуєт такой вопрос. Можно ли із моєго приложения запустить несколько чужих и мониторить их завершение?
Если да то каким примерно обазом, через какие функции і компоненти?
Зарание спасибо!
При етом нужно штоб моя програма нормально работала.
DrBAXA вне форума Ответить с цитированием
Старый 17.12.2012, 23:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно.
http://delphiworld.narod.ru/_all_articles_.html
Раздел Приложения чужие - [58]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2012, 01:07   #3
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно.
http://delphiworld.narod.ru/_all_articles_.html
Раздел Приложения чужие - [58]
Там есть много о том как подождать пока работает чужая программа, но мне нужно чтоби в ето время моя работала и узнала что чужая завершилась. К тому же нужно зазпускать сразу несколько копий одной проги с различними параметрами. Может ли чужая прога давать какое то сообщение о завершении. І можно ли ето грганизовать в отдельних потоках. Вообще как создать поток со своего класса, и опредилить его 'execute'?
DrBAXA вне форума Ответить с цитированием
Старый 18.12.2012, 11:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мне нужно чтоби в ето время моя работала
Запускай в сопроцессе. Изучай TThread для этого.
Цитата:
нужно зазпускать сразу несколько копий одной проги с различними параметрами.
Не вопрос. Опять таки сопроцессы нужно.
Цитата:
Может ли чужая прога давать какое то сообщение о завершении.
Может, но...
1) Не факт что дает
2) Я точно не помню как результат этот считывается.
Цитата:
как создать поток со своего класса, и опредилить его 'execute'?
В Делфи в меню New есть шаблон Thread. Он создает модуль с полностью описанным классов сопроцесса - используй его, и читай там камменты, там информативно написано.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2012, 22:41   #5
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Поизучал TThread, теперь возникает новий вопрос. Мне мой клас с кучей параметров сделать потомком TThread или TThread встроить параметром класа?
Попробовал первий вариант и проблема в том что я перекриваю конструктор TThread изза чего возникает ошибка.
Если можно второй вариант то как в нем определить execute елемента?
DrBAXA вне форума Ответить с цитированием
Старый 18.12.2012, 22:47   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
проблема в том что я перекриваю конструктор TThread
Ога. Первым оператором в override конструкторе пиши inherited; чтоб он подтянул базовый метод.
Цитата:
или TThread встроить параметром класа?
А это ниче не даст. Тоесть ничего удобного.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2012, 00:39   #7
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ога. Первым оператором в override конструкторе пиши inherited; чтоб он подтянул базовый метод.
Большое спасибо! Помогло. Теперь вроде работает)
Я про такой оператор не слишал до етого)
DrBAXA вне форума Ответить с цитированием
Старый 20.12.2012, 00:08   #8
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Теперь возникла новая проблема. В програме создаетса порядка 200 таких обектов-потоков. и ето все жрет порядка 800 МБ памяти. Можно как то с етим боротса или лучше переделать прогу чтоб потоки отдельно создавать? но ето уже будеть напряжно((
DrBAXA вне форума Ответить с цитированием
Старый 20.12.2012, 00:21   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В програме создаетса порядка 200 таких обектов-потоков.
Почему так много?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.12.2012, 00:33   #10
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Почему так много?
Обект ето у меня устройство которое опрашиваетса чужой програмой но с кучей параметров. Думал так будет проще, если прямо из обекта запускать опрос.

Только что немного изменил код. Сделал обект просто класом, а память то не уменьшилас!!! Что ето?

Вот описание класа
Код:
 TDevice = class(TThread)
    protected
      ACom:string;
      AResult:byte;
      AProcId:cardinal;
      AMEMInd:integer;
      AObjId:integer;                  //Обєкт базі з даними 1.8.0
      AType:integer;                   //Тип лічильника
      ADevID:integer;                 //Номер в базі ElectroCNF
      AName:string;                   //Назва точки обліку
      ASNumb:string;                  //серійний номер
      ACMDPath:string;                //Шлях до командного файлу на опитування
      AXMLPath:string;                //Шлях до XML фйлу на опитування
      ADone:boolean;                //Чи опитано
      NRD:cardinal;                 //Скільки днів не опитано
      function GetStatus:boolean;     //Перевірка на опитаність
      procedure SetActive(A:boolean); //Встановлення активності
      procedure CreateXML;            //Створення XML файлу
      Procedure CreateCMD;            //Створення CMD файлу

      public
      Checked:boolean;
      property Done:boolean read GetStatus;   //Чи опитано
      procedure execute;
      constructor Create(ID:integer);
  end;
Можете сказать почему так многопамяти жрет?
Пробовал и без TThread.

на половину уменьшил уничтожив TSQLiteDB по завершению конструктора, больше утечек найти не могу(
Извиняюсь! Ура нашол все утечки теперь ето 7МБ что куда лучше)))

Последний раз редактировалось DrBAXA; 20.12.2012 в 00:49.
DrBAXA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск приложений Афанасий[vedma] Работа с сетью в Delphi 3 26.07.2012 20:33
Запуск нескольких приложений последовательно. nikrzd Помощь студентам 11 09.07.2012 14:45
Запуск приложений в C++ HWork Общие вопросы C/C++ 1 27.07.2009 13:59
запуск dos приложений shurik_7866 Общие вопросы Delphi 3 25.01.2008 23:23
Доступ к com порту для нескольких приложений Lexx Win Api 11 06.04.2007 20:10