Audioausgabe Problem mit Umlauten

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

Audioausgabe Problem mit Umlauten

Beitragvon wennerer » 12. Feb 2016, 22:40 Audioausgabe Problem mit Umlauten

Hallo,
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.
 
wennerer
 
Beiträge: 22
Registriert: 19. Mai 2015, 19:05
OS, Lazarus, FPC: Ubuntu 16.04, Lazarus 1.6, FPC 3.0.0 | 
CPU-Target: xxBit
Nach oben

Beitragvon Michl » 13. Feb 2016, 13:47 Re: Audioausgabe Problem mit Umlauten

Ich habe das mal bei mir getestet. Nehme ich ein Widestring und setze das Flag entsprechend geht es bei mir:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  SoundStream: HSTREAM;
  FileName: String;
begin
  FileName := '.öü\Notify.wav';
  SoundStream := BASS_StreamCreateFile(False, PChar(UTF8Decode(FileName)), 0, 0, BASS_UNICODE);
//  SoundStream := BASS_StreamCreateFile(False, @WideString(FileName)[1], 0, 0, BASS_UNICODE);  //unter Lazarus mit FPC 3.0.0 gänge auch das
  if SoundStream <> 0 then
    BASS_ChannelPlay(SoundStream, False);
end;
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2260
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon wennerer » 13. Feb 2016, 14:58 Re: Audioausgabe Problem mit Umlauten

Hallo Michl,
vielen Dank für deine Antwort. Ich habs natürlich gleich mal probiert und hurra es funktioniert auch bei mir!
Vielen, vielen Dank nochmal!
posting.php?mode=reply&f=25&t=9459#
wennerer
 
Beiträge: 22
Registriert: 19. Mai 2015, 19:05
OS, Lazarus, FPC: Ubuntu 16.04, Lazarus 1.6, FPC 3.0.0 | 
CPU-Target: xxBit
Nach oben

• Themenende •

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried