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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2015, 18:34   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Не получается освободить MP3In компонента NewAC

Доброе время суток,
Проблема с занятостью NewAC,

Если воспроизвести звук из БД
Код:
if ibqEmpty.RecordCount = 1 then
  begin
    PrSpeak := TMemoryStream.Create;
    TBlobField(ibqEmpty.FieldByName('SPEAK')).SaveToStream(PrSpeak);
    PrSpeak.Seek(0, soFromBeginning);
    MP3In1.Stream := PrSpeak; 
    DXAudioOut1.Run;
  end
а потом, попытаться записать аудиофайл в БД, с предварительной проверкой:
Код:
MP3In2.FileName := OpenDialog1.FileName;
    if not MP3In2.Valid then
    begin
      showmessage(C_audio_not_valid);  //step 1
      Exit;
    end;
    MP3In2.Reset;
...
    TBlobField(ibdsService.FieldByName('SPEAK')).LoadFromFile(OpenDialog1.FileName);
    ibdsService.Post;
то программа даже не доходит до записи, вылетает на проверке с сообщением: "file is not valid", т.е. step1.

и ошибка выпадает на строке step 2 (модуля "libwma1;" компонента):

Код:
function TAudioStream.Read;
   begin
     pcbRead^ := FStream.Read(pv^, cb);  //step 2
     if pcbRead^ <> 0 then Result := S_OK
     else Result := -1;
   end;
и я уже и "MP3In1.Reset" и "MP3In1.Stream.Free;" - пробовал, но это немного не то...

Если не запускать воспроизведение из БД, то файл в БД загружается, - все отлично.

Можно конечно по глупому поступить: "использовать два компонента "MP3In" (один для записи, другой для воспроизведения)", но это как-то не правильно будет

Как можно избавиться от этого законными методами?:-)

Спасибо всем откликнувшимся

Последний раз редактировалось KBO; 27.04.2015 в 18:37.
KBO вне форума Ответить с цитированием
Старый 27.04.2015, 20:58   #2
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Вопрос решился,
Оказалось все гораздо проще (нужно только help внимательно читать :-))
"...To unassign this property set it to nil..."
но это в принципе то, о чем писал Alegun
После всего, нужно делать:

Код:
MP3In1.Stream := nil;
В примере по компоненту использовался для воспроизведения файл, та не учавствовал поток... я и лапухнулся :-)
А я делал:

Код:
MP3In1.Stream.Free;

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MP3In из NewAC TUberwer Компоненты Delphi 87 11.03.2015 22:45
Освободить память формы st_yak C++ Builder 0 21.12.2013 19:56
NewAC Andrey85 Мультимедиа в Delphi 13 20.05.2011 19:58
Освободить память от CEdit Eros Общие вопросы C/C++ 0 29.11.2010 15:37
NewAC jhonyxakep Компоненты Delphi 1 27.08.2010 19:56