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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.09.2012, 19:11
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию NewAc library

Здравствуйте! Столкнулся с проблемой. Хочу сделать быстрый конвертер MP3 to WAV. Но проблема в компоненте. Я его установил, еще он писал, что некоторые файлы не найдены. Я их из папки с компонентом перенес в LIB. Вроде бы все нормально, то при запуске программы открывается файл компонента и выдает ошибку. Вот код программы, а ниже скрин ошибки. Причем ошибка появляется уже в процессе сохранения wav, открытие mp3 проходит без ошибки. Помогите!!!
КОД:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ACS_Classes, ACS_WinMedia, ACS_smpeg, StdCtrls,
  ACS_Wave;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MP3In1: TMP3In;
    ProgressBar1: TProgressBar;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    WaveOut1: TWaveOut;
    procedure Button1Click(Sender: TObject);
    procedure WaveOut1Done(Sender: TComponent);
    procedure WaveOut1Progress(Sender: TComponent);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    MP3In1.FileName := OpenDialog1.FileName;
    SaveDialog1.FileName := ChangeFileExt(MP3In1.FileName, '.wav');
    if SaveDialog1.Execute then
    begin
      WaveOut1.FileName := SaveDialog1.FileName;
      Button1.Enabled := False;
      WaveOut1.Run;
    end;  
  end;
end;

procedure TForm1.WaveOut1Done(Sender: TComponent);
begin
  Button1.Enabled := True;
end;

procedure TForm1.WaveOut1Progress(Sender: TComponent);
begin
  ProgressBar1.Position := WaveOut1.Progress;
end;

end.

Скрин ошибки:
Вложения
Тип файла: rar Безымянный.rar (152.6 Кбайт, 41 просмотров)
Ответить с цитированием
  #2  
Старый 05.09.2012, 20:01
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Вот по ошибке смотри:
Код:
if not Assigned(fInput) then raise...
Значит у компонента TWaveOut (WaveOut1) должно быть какое-то свойство типа Input_блаблабла, и ты должен ему присвоить значение TMP3In (MP3In1).
Ответить с цитированием
  #3  
Старый 05.09.2012, 23:19
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от YVitaliy
Вот по ошибке смотри:
Код:
if not Assigned(fInput) then raise...
Значит у компонента TWaveOut (WaveOut1) должно быть какое-то свойство типа Input_блаблабла, и ты должен ему присвоить значение TMP3In (MP3In1).
Я даже представить не могу как можно изменить что-то в целом компоненте... Вот я прикрепляю его, может вы посмотрите что там не так, может подскажите... Буду наедятся на вашу помощь.
Вложения
Тип файла: rar ACS_Classes.rar (13.9 Кбайт, 12 просмотров)
Ответить с цитированием
  #4  
Старый 06.09.2012, 18:42
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Что тут понимать? В Object Inspector'е у компонента WaveOut1 (если ты его кидаешь на форму) в свойстве Input из выпадающего меню выбери MP3In1.
Или же в OnCreate главной формы напиши
Код:
WaveOut1.Input:=MP3In1;
Так же делай, если создаешь обьекты динамически (конечно, уже после их создания).
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
Dmitry_DM (07.09.2012)
  #5  
Старый 07.09.2012, 19:04
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от YVitaliy
Что тут понимать?
Я просто думал, что надо в компоненте что-то подправить...
Теперь этой ошибки нету. Но появилась следующая. Непонятного происхождения. Текст ошибки на 1 скрине. Сразу хочу сказать, что я уже выбирал файл, указывал путь.. Все время неисправимая ошибка. Но уже близится успешное быстрое конвертирование.
P.S. Я разрабатываю настройки программы. Какие функции туда можно вставить.(Ваши рекомендации). Но самое главное: все же исправить ошибку с компонентом. И еще одно: ни кто не сталкивался с этим компонентом. Что он еще может?
Вложения
Тип файла: rar Скриншоты.rar (614.4 Кбайт, 9 просмотров)
Ответить с цитированием
  #6  
Старый 09.09.2012, 12:54
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Так кто-нибудь знает что делать с проблемой, описанной выше?
Ответить с цитированием
  #7  
Старый 09.09.2012, 13:09
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dmitry_DM
Так кто-нибудь знает что делать с проблемой, описанной выше?
Для начала в настройках Delphi выключи перехват отладчиком исключений: Меню -> Tools -> Debugger Options -> Language Exceptions -> (сними флажок) Stop on Delphi Exceptions
Ответить с цитированием
  #8  
Старый 09.09.2012, 14:48
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от poli-smen
Для начала в настройках Delphi выключи перехват отладчиком исключений: Меню -> Tools -> Debugger Options -> Language Exceptions -> (сними флажок) Stop on Delphi Exceptions
Ну, допустим, я выключил, но проблема от этого не решится... Теперь только создается впечатление о том, что выполняется какое-то действие. Прошу помощи! Что в этом конвертере не так? Что "оно" подразумевает под "File Name" ?
Ответить с цитированием
  #9  
Старый 09.09.2012, 14:56
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dmitry_DM
Ну, допустим, я выключил, но проблема от этого не решится... Теперь только создается впечатление о том, что выполняется какое-то действие.
Никакого впечатления эта опция не создаёт, просто отладчик не будет отвлекать по поводу каждого исключения, которое возможно далее корректно обрабатывается. Эта опция в подавляющем большинстве случаев мешает, а не помогает, поэтому её лучше отключать.
Цитата:
Сообщение от Dmitry_DM
Прошу помощи! Что в этом конвертере не так? Что "оно" подразумевает под "File Name" ?
А разве он не требует здесь указать имя mp3-файла?
Ответить с цитированием
  #10  
Старый 09.09.2012, 15:00
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от poli-smen
Никакого впечатления эта опция не создаёт, просто отладчик не будет отвлекать по поводу каждого исключения, которое возможно далее корректно обрабатывается. Эта опция в подавляющем большинстве случаев мешает, а не помогает, поэтому её лучше отключать.
А разве он не требует здесь указать имя mp3-файла?
Так я так и делал... По - всякому уже пробовал. Не помогает
Ответить с цитированием
  #11  
Старый 09.09.2012, 15:38
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Короче я так понял ничего не выйдет с NewAc library. Может есть какие - нибудь другие способы сконвертировать mp3 to wav? Допустим, с помощью bass.dll. Если есть такая возможность, подскажите как реализовать.
Ответить с цитированием
  #12  
Старый 09.09.2012, 16:31
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dmitry_DM
Короче я так понял ничего не выйдет с NewAc library. Может есть какие - нибудь другие способы сконвертировать mp3 to wav? Допустим, с помощью bass.dll. Если есть такая возможность, подскажите как реализовать.
Вобщем я скачал и установил себе библиотеку NewAC 2.6.1. Единственно где у меня при установке этих компонентов выпала ошибка, вот в этом месте:
Код:
...
unit mr_cddb;
...
function ExtractCharSetFromPageContent(fBuffer: string): string;
...
var
  CutBuffer: TStringList;
  posDelim: Integer;
  strEnum: string;
begin
...
    for strEnum in CutBuffer do
      if (Pos(c_charset, strEnum) > 0) then
      begin
        Result := Copy(strEnum,
          Pos('=', strEnum) + 1,
          Length(strEnum));
      end;
...
end;
...
Видимо в более новых Delphi так можно делать, но в моей Delphi 6 так делать нельзя.
Заменил это место на такое:
Код:
var
  CutBuffer: TStringList;
  posDelim, i: Integer;
  strEnum: string;
begin
...
    for i := 0 to CutBuffer.Count-1 do
    begin
      strEnum := CutBuffer[i];
      if (Pos(c_charset, strEnum) > 0) then
      begin
        Result := Copy(strEnum,
          Pos('=', strEnum) + 1,
          Length(strEnum));
      end;
    end;
...
end;
...

Вместе с компонентами идут также и примеры. Вот даже в папке: newac261\demos\Converters\MP3Converter есть пример конвертации mp3-файлов в wav-фалы. Проверил - нормально конвертирует, так что я что-то не пойму какие тут у тебя могут возникнуть проблемы?

p.s. С библиотекой bass не работал. Говорят, что это очень хорошая и мощная библиотека, и даже бесплатная для некоммерческих проектов. Но к сожалению у меня с ней что-то не срослось, возможно то, что она всё же не полностью FreeWare. И хотя у меня есть в планах изучить работу с этой популярной библиотекой, но эти планы регулярно отодвигаются для более интересных проектов...
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Dmitry_DM (09.09.2012)
  #13  
Старый 09.09.2012, 21:10
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от poli-smen
Вобщем я скачал и установил себе библиотеку NewAC 2.6.1. Единственно где у меня при установке этих компонентов выпала ошибка, вот в этом месте:
Код:
...
unit mr_cddb;
...
function ExtractCharSetFromPageContent(fBuffer: string): string;
...
var
  CutBuffer: TStringList;
  posDelim: Integer;
  strEnum: string;
begin
...
    for strEnum in CutBuffer do
      if (Pos(c_charset, strEnum) > 0) then
      begin
        Result := Copy(strEnum,
          Pos('=', strEnum) + 1,
          Length(strEnum));
      end;
...
end;
...
Видимо в более новых Delphi так можно делать, но в моей Delphi 6 так делать нельзя.
Заменил это место на такое:
Код:
var
  CutBuffer: TStringList;
  posDelim, i: Integer;
  strEnum: string;
begin
...
    for i := 0 to CutBuffer.Count-1 do
    begin
      strEnum := CutBuffer[i];
      if (Pos(c_charset, strEnum) > 0) then
      begin
        Result := Copy(strEnum,
          Pos('=', strEnum) + 1,
          Length(strEnum));
      end;
    end;
...
end;
...

Вместе с компонентами идут также и примеры. Вот даже в папке: newac261\demos\Converters\MP3Converter есть пример конвертации mp3-файлов в wav-фалы. Проверил - нормально конвертирует, так что я что-то не пойму какие тут у тебя могут возникнуть проблемы?

p.s. С библиотекой bass не работал. Говорят, что это очень хорошая и мощная библиотека, и даже бесплатная для некоммерческих проектов. Но к сожалению у меня с ней что-то не срослось, возможно то, что она всё же не полностью FreeWare. И хотя у меня есть в планах изучить работу с этой популярной библиотекой, но эти планы регулярно отодвигаются для более интересных проектов...
Спасибо ОГРОМНОЕ!!!!!!! Я использовал NewAC 2.4.1. Там таких примеров не было. Это очень - очень классно. В свою программу еще не интегрировал. Но думаю, что будет работать. Пример работает К стати, может вы помните, я делал плеер на mediaplayer1, а теперь переделал на bass.dll. Очень круто!!
Ответить с цитированием
  #14  
Старый 09.09.2012, 21:19
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Все! Работает и на NewAC 2.4.1. Еще раз спасибо. Я понятия не имею в чем там была проблема, но теперь ее нет.
Тема закрыта.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter