et encore dll et marché - page 12

 
nkaretnikov:

il n'est pas nécessaire d'écrire dans le fichier. WebRequest

Que signifie "télécharger" ? Le fichier son obtenu après la conversion du texte doit être placé dans le dossier Sounds pour que l'Expert Advisor puisse le lire. Le son est créé dans EA par la fonction PlaySound, et non WebRequest, et il prend un fichier audio dans le dossier Sounds. Je vous dis que la tâche est presque impossible.
 
Реter Konow:
Que voulez-vous dire par "télécharger" ? Le fichier son obtenu après la conversion du texte doit être placé dans le dossier Sounds pour que le conseiller expert puisse le lire. La fonction PlaySound, et non WebRequest, crée le son dans l'Expert Advisor, et prend un fichier audio dans le dossier Sounds. Je vous dis que la tâche est presque impossible.

yep...

il est impossible de lire un fichier wav depuis un bac à sable sans DLL ?

 
nkaretnikov:

yep...

il est impossible de lire un fichier wav depuis un bac à sable sans DLL ?

Comment va-t-il se retrouver dans le bac à sable ? Après la conversion, vous devez placer le fichier résultant dans le bac à sable. Webrequest ne le fera pas. Comment l'écrire automatiquement dans le dossier Sounds ?
 
Реter Konow:
Comment cela va-t-il finir dans le bac à sable ? ??

Je suppose que le résultat de la WebRequest sera un fichier WAV téléchargé depuis le serveur. Voici le résultat du code suivant

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



le problème à ce stade est que le fichier hello_world.wav est vide, car le format de l'appel WebRequest est manifestement incorrect.

 
Nikolai Karetnikov:

Je suppose que le résultat de la WebRequest sera un fichier WAV téléchargé depuis le serveur. Voici le résultat du code suivant



le problème à ce stade est que le fichier hello_world.wav est vide, car le format de l'appel WebRequest est manifestement incorrect.

Même si vous obtenez un fichier son valide du serveur vers EA via un socket ou une requête web, vous ne pouvez pas l'écrire dans le dossier Sounds, donc PlaySound ne pourra pas le lire.
 
Реter Konow:
Même si vous obtenez un fichier son valide du serveur vers l'EA via un socket ou une requête web, vous ne pouvez pas l'écrire dans le dossier Sounds, ce qui signifie que PlaySound ne pourra pas le lire.

PlaySound est-il la seule option pour lire un fichier wav sans DLL ?

 
Nikolai Karetnikov:

PlaySound est-il la seule option pour lire un fichier wav sans DLL ?

Oui.
 
Реter Konow:
Même si vous obtenez un fichier son valide pour l'EA à partir du serveur via un socket ou une requête web, vous ne pouvez pas l'écrire dans le dossier Sounds, ce qui signifie que PlaySound ne sera pas en mesure de le lire.

voir ci-dessus sur le sujet - tout est possible, mais nécessite la volonté de l'utilisateur

 
Реter Konow:
Oui.

merdique )

 
Реter Konow:
Oui.

Attendez, qu'en est-il de ceci

//--- Jouer le fichier son Demo.wav depuis le répertoire terminal_data_directory\MQL5\Files\
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-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...
Raison: