e novamente dll e mercado - página 12

 
nkaretnikov:

não há necessidade de escrever para o arquivo. WebRequest

O que significa "download"? O arquivo de som obtido após a conversão do texto deve ser colocado na pasta Sounds para que o Expert Advisor o possa reproduzir. O som é criado na EA pela função PlaySound, e não pela WebRequest, e é obtido através de um arquivo de áudio da pasta Sounds. Estou lhe dizendo que a tarefa é quase impossível.
 
Реter Konow:
O que você quer dizer com "download"? O arquivo de som obtido após a conversão do texto deve ser colocado na pasta Sounds para que o Expert Advisor o reproduza. A função PlaySound, e não WebRequest, cria o som no Expert Advisor, e tira um arquivo de áudio da pasta Sounds. Estou lhe dizendo que a tarefa é quase impossível.

yep...

é impossível tocar um arquivo wav de uma caixa de areia sem uma DLL?

 
nkaretnikov:

yep...

é impossível tocar um arquivo wav de uma caixa de areia sem uma DLL?

Como ela irá parar na caixa de areia? Após a conversão, você precisa colocar o arquivo resultante na caixa de areia. Webrequest não fará isso. Como você o escreve automaticamente na pasta Sons?
 
Реter Konow:
Como vai acabar na caixa de areia???

Presumo que o resultado do WebRequest será um arquivo WAV baixado do servidor. Aqui está o resultado do seguinte 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);
     }
  }
//+------------------------------------------------------------------+



o problema nesta fase é que o hello_world.wav aparece vazio, porque o formato da chamada WebRequest está claramente errado

 
Nikolai Karetnikov:

Presumo que o resultado do WebRequest será um arquivo WAV baixado do servidor. Aqui está o resultado do seguinte código



o problema nesta fase é que o hello_world.wav aparece vazio, porque o formato da chamada WebRequest está claramente errado

Mesmo que você obtenha um arquivo de som válido do servidor para a EA via socket ou webrequest, você não poderá escrevê-lo na pasta Sounds, então o PlaySound não poderá tocá-lo.
 
Реter Konow:
Mesmo que você obtenha um arquivo de som válido do servidor para a EA via socket ou webrequest, você não poderá escrevê-lo na pasta Sounds, o que significa que o PlaySound não poderá tocá-lo.

OPlaySound é a única opção para reproduzir um arquivo wav sem DLL?

 
Nikolai Karetnikov:

O PlaySound é a única opção para reproduzir um arquivo wav sem DLL?

Sim.
 
Реter Konow:
Mesmo que você receba um arquivo de som válido para a EA do servidor via socket ou webrequest, você não poderá escrevê-lo na pasta Sounds, o que significa que o PlaySound não poderá tocá-lo.

ver acima sobre o assunto - tudo é possível, mas requer a vontade do usuário

 
Реter Konow:
Sim.

merdoso )

 
Реter Konow:
Sim.

espera, e quanto a isso

//--- reproduzir arquivo de som Demo.wav do terminal_data_directory\MQL5 File
PlaySound("Files.wav")

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

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