fredvs / uos

United Open-libraries of Sound. United procedures for open-source audio libraries. For FPC/Lazarus/fpGUI/MSEgui.
Other
136 stars 27 forks source link

Russian Device Names #12

Closed akatser closed 7 years ago

akatser commented 7 years ago

Hi, i have a problem with devices infos example. I'm russain, so devices named russian symbols, but i see somthing like this ???.???? (VIA HD Audio (WIN 10) ("?" instead of russian symbols). What i should do to solve this problem ? default

fredvs commented 7 years ago

Hello.

Huh, it seems to be a utf-8 problem. Do you have the same problem with audio-files (????.mp3 or ????.ogg) ?

I will check it asap.

Thanks to report it.

Fre;D

fredvs commented 7 years ago

Re-hello.

Could you try with last commit da316a2 ?

Thanks.

Fre;D

akatser commented 7 years ago

Hi, both solutions : ( UTF8ToAnsi(devinf^._name); UTF8Decode(devinf^._name); ) Not work :( I have the same problem with MMSystem:

procedure TForm1.FormCreate(Sender: TObject);
var
  WaveNums, i: integer;
  WaveInCaps: TWaveInCaps;
begin
  WaveNums := waveInGetNumDevs;
  if WaveNums > 0 then 
  begin
    for i := 0 to WaveNums - 1 do
    begin
      waveInGetDevCaps(i, @WaveInCaps, sizeof(TWaveInCaps));
      ComboBox1.Items.Add((PChar(@WaveInCaps.szPname)));
    //  ComboBox1.Items.Add(AnsiString(PChar(@WaveInCaps.szPname)));

    end;
  end;
  ComboBox1.ItemIndex:=0;
end; 

But this code works Fine in Delphi.

akatser commented 7 years ago

I solved this problem by activating the -dDisableUTF8RTL and using SysToUTF8 function.

2

fredvs commented 7 years ago

Hello.

Ha, ok, I am very happy for you.

What code did you change in uos to make it working ?

This to add a comment for other people that uses Russian characters.

Thanks.

Fre;D

akatser commented 7 years ago

http://wiki.freepascal.org/Lazarus_with_FPC3.0_without_UTF-8_mode , I disabled UTF-8 mode and used SysToUTF8 function in project.

Main_di.pas

uses .....LazUTF8;

stringgrid1.Cells[1, x] := SysToUTF8(uosDeviceInfos[x - 1].DeviceName); 

uos.pas

    uosDeviceInfos[x].HostAPIName := apiinf^._name;
    uosDeviceInfos[x].DeviceName := devinf^._name;
fredvs commented 7 years ago

@akatser :+1: many thanks.

I will add a comment for that.

Fre;D