wince+bass.dll error

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

wince+bass.dll error

Сообщение alex208210 » 25.12.2014 14:20:28

у меня проблема с bass.dll под wince 6. Lazarus 1.2.6(fpc 2.6.4) + bass.pas(2.4.11) + bass.dll(2.4.11). Другие версии bass.dll тоже имеют эту проблему.
Во время воспроизведение mp3 файла, каждый раз в разное время от 20 секунд до 5-10 минут приложение падает. Текст ошибки:
"Неустранимая ошибка. Приложение выполнило недопустимую операцию и будет закрыто. Если неполадки повторятся, обратитесь к изготовителю программы.
Exception 0xproject1.eхe "
X32 Windows does not have this problem

example: http://pbcdod.ru/basserror.zip

Изображение

the program code:

Код: Выделить всё
unit Unit1;

{$mode delphi}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, bass;

type

  { TForm1 }

  TForm1 = class(TForm)

    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  track:integer;
  Channel: DWORD;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
    BASS_Init(-1, 44100, 0, nil, nil);
    track:=1;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
TrackLen, TrackPos: Double;
ValPos: Double;
ValLen: Double;
begin
TrackPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetPosition(Channel,0));
TrackLen:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel,0));
ValPos:=TrackPos / (24 * 3600);
ValLen:=TrackLen / (24 * 3600);
Label1.Caption:=FormatDateTime('hh:mm:ss',ValPos);
Label2.Caption:=FormatDateTime('hh:mm:ss',ValLen);
if  BASS_ChannelIsActive(channel)=BASS_ACTIVE_STOPPED then begin  inc(track); if track>2 then track:=1; player; end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
BASS_ChannelStop(Channel);
BASS_StreamFree(Channel);
Channel := BASS_StreamCreateFile(false, PChar(ExtractFilePath(ParamStr(0))+inttostr(track)+'.mp3'), 0, 0, 0 );
BASS_ChannelPlay(Channel, False);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
BASS_ChannelPause(Channel);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
BASS_ChannelStop(Channel);
end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  Bass_Stop();
  BASS_StreamFree(channel);
  Bass_Free;
end;

end.


Помогите решить проблему.
Как можно отследить в wince где именно выходит ошибка? Была у кого-нибудь подобная проблема и как ее решали?
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: wince+bass.dll error

Сообщение Demia » 30.12.2014 11:52:05

Я пользовался записью в файл лога (обычный txt)
оборачиваете try except и маленькая функция писать в лог
Demia
незнакомец
 
Сообщения: 1
Зарегистрирован: 30.12.2014 11:49:34

Re: wince+bass.dll error

Сообщение alex208210 » 01.01.2015 14:43:08

ошибка на уровне библиотеки, отлов в основном коде не видит проблемму
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 251

Рейтинг@Mail.ru
cron