ich bin gerade dabei für mich selbst einen kleinen Vokabeltrainer zuschreiben. Ich arbeite mit Linux Ubuntu 14.04. Die Sprachausgabe der Vokabel ist mir mit der Bass Audio Library gelungen. Hierfür gibt es im Netz ja jedemenge super Artikel aus denen ich mir einen minimal Code zusammen gebastelt habe. Ist nix für Profis, brauchte aber nur eine Möglichkeit um eine mp3 abzuspielen (und sonst nix).
Mein Problem ist jetzt das ich das Programm auch auf meinen alten Laptop mit Windows XP nutzen möchte. Ich habe die libbass.so durch die bass.dll ersetzt und unter XP compiliert. Soweit so gut leider funktioniert jetzt die Audioausgabe nur noch wenn im Pfad kein Umlaut vorkommt. Kann mir irgend jemand sagen was ich da machen kann?
Hier noch mein minimal Code für Linux. Wer es probieren will muss die libbass.so ins Verzeichnis usr/lib kopieren, die bass.pas und eine AudioDatei.mp3 ins Arbeitsverzeichnis. In meinem Vokabelprogramm steht natürlich eine Variable mit dem Pfad. Ich denk mal das irgendwas mit dem PChar schiefläuft?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
bass;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1 : TForm1;
fMainstream : DWord;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Bass_Init(-1,44100,Bass_Device_CPSpeakers,Nil,Nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
BASS_StreamFree(fMainStream); //geht auch ohne, verhindert gleichzeitiges abspielen
fMainstream:=Bass_StreamCreateFile(False,PChar('AudioDatei.mp3'),0,0,0);
Bass_ChannelPlay(fMainStream,true);
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
BASS_StreamFree(fMainStream);
end;
end.