y de nuevo dll y el mercado - página 12

 
nkaretnikov:

no es necesario escribir en el archivo. WebRequest

¿Qué significa "descargar"? El archivo de sonido obtenido tras la conversión de texto debe colocarse en la carpeta Sounds para que el Asesor Experto lo reproduzca. El sonido es creado en EA por la función PlaySound, no por WebRequest, y toma un archivo de audio de la carpeta Sounds. Te digo que la tarea es casi imposible.
 
Реter Konow:
El archivo de sonido obtenido tras la conversión del texto debe colocarse en la carpeta de sonidos para que el Asesor Experto lo reproduzca. La función PlaySound, no WebRequest, crea el sonido en el Asesor Experto, y toma un archivo de audio de la carpeta Sounds. Te digo que la tarea es casi imposible.

sí...

¿es imposible reproducir un archivo wav desde una caja de arena sin una DLL?

 
nkaretnikov:

sí...

¿es imposible reproducir un archivo wav desde una caja de arena sin una DLL?

¿Cómo acabará en la caja de arena? Después de la conversión, hay que poner el archivo resultante en la caja de arena. Webrequest no lo hará. ¿Cómo se escribe automáticamente en la carpeta Sounds?
 
Реter Konow:
¿Cómo acabará en la caja de arena?

Supongo que el resultado de la WebRequest será un archivo WAV descargado del servidor. Este es el resultado del siguiente código

//+------------------------------------------------------------------+
//|                                                   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);
     }
  }
//+------------------------------------------------------------------+



el problema en esta fase es que hello_world.wav aparece vacío, porque el formato de la llamada WebRequest es claramente erróneo

 
Nikolai Karetnikov:

Supongo que el resultado de la WebRequest será un archivo WAV descargado del servidor. Este es el resultado del siguiente código



el problema en esta fase es que hello_world.wav aparece vacío, porque el formato de la llamada WebRequest es claramente erróneo

Incluso si obtiene un archivo de sonido válido desde el servidor a EA vía socket o webrequest, no puede escribirlo en la carpeta Sounds, por lo que PlaySound no podrá reproducirlo.
 
Реter Konow:
Incluso si obtiene un archivo de sonido válido del servidor al EA a través de socket o webrequest, no puede escribirlo en la carpeta Sounds, lo que significa que PlaySound no podrá reproducirlo.

¿EsPlaySound la única opción para reproducir un archivo wav sin una DLL?

 
Nikolai Karetnikov:

¿Es PlaySound la única opción para reproducir un archivo wav sin una DLL?

Sí.
 
Реter Konow:
Incluso si obtiene un archivo de sonido válido para el EA desde el servidor vía socket o webrequest, no puede escribirlo en la carpeta Sounds, lo que significa que PlaySound no podrá reproducirlo.

ver arriba sobre el tema - todo es posible, pero requiere la voluntad del usuario

 
Реter Konow:
Sí.

mierda )

 
Реter Konow:
Sí.

Espera, ¿qué hay de esto?

//--- reproducir el archivo de sonido Demo.wav desde el directorio de datos de la terminal
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-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...