und wieder dll und Markt - Seite 12

 
nkaretnikov:

Es besteht keine Notwendigkeit, in die Datei zu schreiben. WebRequest-Methoden abgleichen

Was bedeutet "Herunterladen"? Die nach der Textkonvertierung erhaltene Sounddatei sollte im Ordner Sounds abgelegt werden, damit der Expert Advisor sie abspielen kann. Der Sound wird in EA mit der Funktion PlaySound und nicht mit WebRequest erstellt, und es wird eine Audiodatei aus dem Ordner Sounds verwendet. Ich sage Ihnen, dass die Aufgabe fast unmöglich ist.
 
Реter Konow:
Was meinen Sie mit "Herunterladen"? Die nach der Textkonvertierung erhaltene Tondatei muss im Ordner Sounds abgelegt werden, damit der Expert Advisor sie abspielen kann. Die Funktion PlaySound, nicht WebRequest, erzeugt den Ton im Expert Advisor und nimmt eine Audiodatei aus dem Ordner Sounds. Ich sage Ihnen, dass die Aufgabe fast unmöglich ist.

jep...

Es ist unmöglich, eine wav-Datei aus einer Sandbox ohne DLL abzuspielen?

 
nkaretnikov:

jep...

ist es unmöglich, eine wav-Datei aus einer Sandbox ohne DLL abzuspielen?

Wie wird es in der Sandkiste landen? Nach der Konvertierung müssen Sie die resultierende Datei in der Sandbox ablegen. Webrequest wird dies nicht tun. Wie schreibt man sie automatisch in den Ordner "Sounds"?
 
Реter Konow:
Wie wird es in der Sandbox landen?

Ich gehe davon aus, dass das Ergebnis der WebRequest eine vom Server heruntergeladene WAV-Datei sein wird. Hier ist das Ergebnis des folgenden Codes

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



Das Problem in diesem Stadium ist, dass hello_world.wav leer bleibt, weil das Format des WebRequest-Aufrufs eindeutig falsch ist

 
Nikolai Karetnikov:

Ich gehe davon aus, dass das Ergebnis der WebRequest eine vom Server heruntergeladene WAV-Datei sein wird. Hier ist das Ergebnis des folgenden Codes



Das Problem in diesem Stadium ist, dass hello_world.wav leer bleibt, weil das Format des WebRequest-Aufrufs eindeutig falsch ist

Selbst wenn Sie eine gültige Sounddatei über Socket oder Webrequest vom Server an EA senden, können Sie sie nicht in den Ordner Sounds schreiben, so dass PlaySound sie nicht abspielen kann.
 
Реter Konow:
Selbst wenn Sie eine gültige Sounddatei per Socket oder Webrequest vom Server auf den EA übertragen, können Sie sie nicht in den Ordner Sounds schreiben, was bedeutet, dass PlaySound sie nicht abspielen kann.

IstPlaySound die einzige Möglichkeit, eine wav-Datei ohne eine DLL abzuspielen?

 
Nikolai Karetnikov:

Ist PlaySound die einzige Möglichkeit, eine wav-Datei ohne eine DLL abzuspielen?

Ja.
 
Реter Konow:
Selbst wenn Sie eine gültige Sounddatei vom Server per Socket oder Webrequest an den EA senden, können Sie sie nicht in den Ordner Sounds schreiben, was bedeutet, dass PlaySound sie nicht abspielen kann.

siehe oben zu diesem Thema - alles ist möglich, erfordert aber den Willen des Nutzers

 
Реter Konow:
Ja.

beschissen )

 
Реter Konow:
Ja.

Moment, was ist damit

//--- Abspielen der Tondatei Demo.wav aus dem Verzeichnis 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-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...