并再次进行dll和营销 - 页 12

 
nkaretnikov:

就不需要写到文件中去。WebRequest 方法的格式

下载 "是什么意思?文本转换后得到的声音文件应放在Sounds文件夹中,以便Expert Advisor播放它。声音是在EA中由PlaySound函数创建的,而不是WebRequest,它从Sounds文件夹中获取一个音频文件。我告诉你,这个任务几乎是不可能的。
 
Реter Konow:
你说的 "下载 "是什么意思? 文本转换后得到的声音文件必须放在Sounds文件夹中,以便Expert Advisor播放它。PlaySound函数,而不是WebRequest,在Expert Advisor中创建声音,它从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);
     }
  }
//+------------------------------------------------------------------+



这个阶段的问题是hello_world.wav是空的,因为WebRequest的调用格式显然是错误的。

 
Nikolai Karetnikov:

我假设WebRequest的结果将是一个从服务器下载的WAV文件。下面是以下代码的结果



这个阶段的问题是hello_world.wav是空的,因为WebRequest的调用格式显然是错误的。

即使你通过socket或webrequest从服务器获得一个有效的声音文件到EA,你也不能把它写入Sounds文件夹,所以PlaySound 将不能播放它。
 
Реter Konow:
即使你通过socket或webrequest从服务器得到一个有效的声音文件到EA,你也不能把它写到Sounds文件夹,这意味着PlaySound将不能播放它。

PlaySound 是播放没有DLL的wav文件的唯一选择吗?

 
Nikolai Karetnikov:

PlaySound是播放没有DLL的wav文件的唯一选择吗?

是的。
 
Реter Konow:
即使你通过socket或webrequest从服务器得到一个有效的声音文件到EA,你也不能把它写入Sounds文件夹,这意味着PlaySound将不能播放它。

见上述主题--一切皆有可能,但需要用户的意愿。

 
Реter Konow:
是的。

低劣的)。

 
Реter Konow:
是的。

等等,那这个呢


PlaySound("\\Files\\Demo.wav")//------播放来自terminal_data_directory\MQL5\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-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...