そしてまた、DellとMarket - ページ 12

 
nkaretnikov:

は、ファイルに書き込む必要はありません。WebRequest メソッドの形式を合わせる必要があります。

ダウンロードとはどういう意味ですか?テキスト変換後に取得したサウンドファイルを Expert Advisor で再生するには、Sounds フォルダに配置する必要があります。EAではWebRequestではなくPlaySound関数でサウンドを作成し、Soundsフォルダからオーディオファイルを取得します。その作業はほとんど不可能だと言っているのです。
 
Реter Konow:
ダウンロードとは? テキスト変換後に得られたサウンドファイルをExpert Advisorで再生するには、Soundsフォルダに配置する必要があります。Expert Advisor のサウンドを作成するのは WebRequest ではなく PlaySound 関数で、Sounds フォルダからオーディオファイ ルを取得します。その作業はほとんど不可能だと言っているのです。

うん...

DLLがないとサンドボックスからwavファイルを再生するのは無理なんですか?

 
nkaretnikov:

うん...

DLLがないとサンドボックスからwavファイルを再生するのは無理なんですか?

サンドボックスの中で、どのような結末を迎えるのか。変換後、出来上がったファイルをサンドボックスに入れる必要があります。Webrequestでは、このようなことはできません。Soundsフォルダに自動的に書き込むにはどうしたらいいですか?
 
Реter Konow:
サンドボックスでどのような結末を迎えるのか?

WebRequestの結果は、サーバーからダウンロードしたWAVファイルであると推測されます。以下のコードを実行した結果は以下の通りです。

//+------------------------------------------------------------------+
//|                                                   WebRequest.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string cookie=NULL,headers;
   char   post[],result[];
   char cost_char_data[];
   string  result_headers;
   
   headers = headers + "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB";
   headers = headers + " --header \"Content-Type: application/json\"";
   headers = headers + " --header \"Accept: audio/wav\"";
   headers = headers + " --data \"{\"text\":\"hello world\"}\"";
   headers = headers + " --output hello_world.wav";
//output hello_world.wav ^

   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com";
//--- для работы с сервером необходимо добавить URL "https://finance.yahoo.com"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
//--- обнуляем код последней ошибки
   ResetLastError();
//--- загрузка html-страницы с Yahoo Finance
   int res = WebRequest("POST",url,headers,1000,cost_char_data,result,result_headers);
   if(res==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(res==200)
        {
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         //PrintFormat("Заголовки сервера: %s",headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("output hello_world.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,result,0,ArraySize(result));
            //--- закрываем файл
            FileClose(filehandle);
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+



この段階での問題は、WebRequest 呼び出しの形式が明らかに間違っているため、hello_world.wav が空っぽになることです。

 
Nikolai Karetnikov:

WebRequestの結果は、サーバーからダウンロードしたWAVファイルであると推測されます。以下のコードを実行した結果は以下の通りです。



この段階での問題は、WebRequest 呼び出しの形式が明らかに間違っているため、hello_world.wav が空っぽになることです。

サーバーからEAにソケットやWebrequestで有効なサウンドファイルを取得しても、Soundsフォルダに書き込めないため、PlaySoundで 再生することはできません。
 
Реter Konow:
サーバーからソケットやwebrequestでEAに有効なサウンドファイルを取得しても、Soundsフォルダに書き込めないため、PlaySoundでは再生できません。

DLLを使わずにwavファイルを再生するには、PlaySoundしか ないのでしょうか?

 
Nikolai Karetnikov:

DLLを使わずにwavファイルを再生するには、PlaySoundしかないのでしょうか?

はい。
 
Реter Konow:
ソケットやwebrequestでサーバーからEAに有効なサウンドファイルを取得しても、Soundsフォルダに書き込めないため、PlaySoundでは再生できない。

については上記を参照 - 何でも可能ですが、ユーザーの意志が必要です。

 
Реter Konow:
はい。

くだらない )

 
Реter Konow:
はい。

待てよ、これはどうだ

//--- play sound file Demo.wav from terminal_data_directoryMQL5Files
PlaySound("\Files¥Demo.wav")

https://www.mql5.com/ru/docs/runtime/resources

Документация по MQL5: Программы MQL5 / Ресурсы
Документация по MQL5: Программы MQL5 / Ресурсы
  • www.mql5.com
В данном примере показано как проигрывать звуки из файлов Ok.wav и timeoit.wav, входящих в стандартную поставку терминала. Эти файлы находятся в папке означает папку, из которой запущен клиентский терминал MetaTrader 5.  Программным путем из mql5-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...