Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.02.2013, 01:31
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию Программа не завершает работу после анализа голосовых движков

В своей программе я использую слегка модифицированную "стандартную" процедуру для анализа установленных в системе голосовых движков и заполнения комбобокса (в моем случае - комбобоксов) их выбора:
Код:
  procedure LEARN_ENGINES;
  var
    NumFound : DWord;
    ModeInfo : TTSModeInfo;
  begin
    try
      {Инициализация аудиоустройства}
      CoCreateInstance(CLSID_MMAudioDest, Nil, CLSCTX_ALL,
             IID_IAudioMultiMediaDevice, fIAMM);
    except
    end;
    {Создание перечисляемого объекта для перебора всех движков в системе
     с помощью интерфейса ITTSEnum}
    CoCreateInstance(CLSID_TTSEnumerator, Nil, CLSCTX_ALL,
                                           IID_ITTSEnum, aTTSEnum);
    aTTSEnum.Reset;//Сбрасываем на первый
    aTTSEnum.Next(1, ModeInfo, @NumFound); {Получаем первый движок}
    While NumFound > 0 do
    begin
      s:=String(ModeInfo.szModeName);
      if pos('RUS',UpperCase(s))>0 then
        COMBO_VOICE_RUS.Items.Add(s)
      else
        COMBO_VOICE_ENG.Items.Add(s);
      aTTSEnum.Next(1, ModeInfo, @NumFound); {Получаем остальные}
    end;
  end;
Программа нормально работает, в том числе и этот модуль, но после закрытия программы она остается "висеть" в памяти, закрывается только ее видимая часть. Вопрос: Какие действия надо предпринять при закрытии программы, чтобы избежать этого?
PS То, что в неполном закрытии программы виноват именно этот код, убедился точно.
PPS Код брал отсюда.

Последний раз редактировалось alexingor, 07.02.2013 в 01:43.
Ответить с цитированием
  #2  
Старый 07.02.2013, 02:10
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от alexingor
...Вопрос: Какие действия надо предпринять при закрытии программы, чтобы избежать этого?..
Взгляд со стороны: когда что-то создаётся, то и уничтожаться тоже должно. При закрытии проги возможно надо выполнить что-то типа aTTSEnum.Free (если только такое свойство у этого интерфейса есть)
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Alegun за это полезное сообщение:
alexingor (07.02.2013), OTVET (12.02.2013)
  #3  
Старый 07.02.2013, 02:16
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
При закрытии проги возможно надо выполнить что-то типа aTTSEnum.Free
Увы, нет такого метода у этого интерфейса. Я сам смотрел в этом направлении.
Ответить с цитированием
  #4  
Старый 07.02.2013, 02:46
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А вот это (http://drkb3.narod.ru/daaioa_n_micro...peech_api_.htm) не поможет?Там код рабочий, несколько лет назад его пробовал, без нареканий.
Ответить с цитированием
  #5  
Старый 07.02.2013, 03:12
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ты не полностью прочитал свою же ссылку, вот продолжение на эту тему. У тебя не очищается "движок". Про это тебе Alegun уже говорил.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 07.02.2013, 07:26
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А вот это не поможет?
Интересный вариант, простой и работающий. Но мне он не годится - читает только на русском, и голосом только одного движка. Мне же обязательно нужна возможность выбора движка. На всякий случай, занес в закладки, вполне может пригодиться в будущем. Спасибо.
Ответить с цитированием
  #7  
Старый 07.02.2013, 07:49
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
вот продолжение на эту тему.
Я собрал приведенную там форму. Все работает нормально, текст читается, при закрытии окна управление передается на Form-Destroy. И там все команды выполняются. Но программа все равно остается висеть.
Вот ссылка на этот мой проект: https://www.dropbox.com/sh/86pboo1lv...t/SAPITest.zip.
Ответить с цитированием
  #8  
Старый 09.02.2013, 00:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Похоже прабла в системе - у меня компилянт летает без зависаний. Свой собрать не удалось, не хватает некоторых исходников в проекте. Установил специально несколько, сколько нашёл, синтезаторов: и L&H engrus и жигалу.микеланжелу и vm и дьяблу - всё переключается, работает и нормально завершается. Попробуйте на другом компе запустить.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
alexingor (09.02.2013)
  #9  
Старый 09.02.2013, 00:01
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию

Это ценная информация, спасибо. Обязательно попробую и отпишусь.
Ответить с цитированием
  #10  
Старый 10.02.2013, 01:07
alexingor alexingor вне форума
Прохожий
 
Регистрация: 26.10.2012
Сообщения: 16
Репутация: 10
По умолчанию

попробовал на другом компе - все нормально работает. Причину почему виснет у меня - пока не знаю. Но это уже какая-то определенность. Еще раз спасибо!
Ответить с цитированием
  #11  
Старый 10.02.2013, 01:59
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Сам ведь писал, что у тебя "Зверь" установлен. Наверняка в этом причина.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter