und wieder dll und Markt - Seite 14

 
Реter Konow:
Wenn eine Tondatei aus dem Ordner "Dateien" abgespielt werden kann, in dem sie vom Expert Advisor voraufgezeichnet wurde, dann ist die Lösung des Problems real, wenn die resultierende Tondatei integral ist.
Nein! In der Dokumentation steht, dass Sounddateien im Ordner Sounds gespeichert werden sollten.
https://www.mql5.com/ru/docs/common/playsound

Dies ist ein entscheidender Punkt bei diesem Thema. Wenn die Datei im Ordner "Dateien" nicht abgespielt werden kann, kommt PlaySound nicht in Frage. Dann ist es nicht nötig, etwas vom Server zurückzugeben. Warum? Es sei denn, PlaySound funktioniert plötzlich nicht mehr mit der EA-internen Ressource, was ich stark bezweifle...
 
Jemand sollte versuchen, die .wav-Datei aus dem Ordner "Files" auszuführen. Ich frage mich, ob es funktioniert.))
 
//+------------------------------------------------------------------+
//|                                                       Sounds.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()
  {
//---
   PlaySound("\\Files\\Sounds\\alert.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\request.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\email.wav");
  }
//+------------------------------------------------------------------+
Реter Konow
:

Jemand sollte versuchen, die .wav-Datei aus dem Ordner "Files" auszuführen. Ich frage mich, ob es funktioniert.))

Ja, es funktioniert. Ich habe den gesamten Ordner kopiert.

C:\Users\San\AppData\Roaming\MetaQuotes\Terminal\3 DE8A6E768D9369994F541727D733DE8\MQL5\Files\Sounds\
 
Alexsandr San:

Ja, es funktioniert. Ich habe den gesamten Ordner kopiert.

Das ist die Hoffnung.))
 
Реter Konow:
Das nenne ich Hoffnung.))

Ich habe den Song noch einmal überprüft und ihn noch einmal laufen lassen.

   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\Kazka.wav");
https://yadi.sk/d/EGsTJGYBmDFnGg
 
Alexsandr San:

den Song noch einmal überprüft hat

https://yadi.sk/d/EGsTJGYBmDFnGg
Nun, dann muss man nicht immer der Dokumentation glauben)))

Wenn der TC nun gültige Audiodateien vom Server empfängt, die dann an einem Ort neu aufgenommen und im laufenden Betrieb abgespielt werden, dann ist das Problem der universellen Lösung für die Sprachausgabe von Textnachrichten an den Benutzer gelöst.

ZS: Kann PlaySound auch den Sound von internen Ressourcen abspielen, die von EA erstellt wurden? Dann ist es nicht nötig, die Datei in Files zu schreiben. Speichern Sie die Datei sofort in der Ressource und spielen Sie sie ab.
 
Реter Konow:
Nun, man muss nicht immer der Dokumentation glauben)))

Wenn der TC nun gültige Tondateien vom Server empfängt, sie an einer Stelle neu aufnimmt und sie während der Fahrt abspielt, dann ist die Aufgabe einer universellen Lösung für die Sprachausgabe von Textnachrichten an den Benutzer gelöst.

ZS. Vielleicht kann PlaySound den Sound von internen Ressourcen abspielen, die von EA erstellt wurden?

Ich weiß nicht, in meinem Expert Advisor - wo es eine Aktion gibt, spielt es

                     ObjectsDeleteAll(0,InpObjDownNameG);
                     IndicatorDelete();
                     PlaySound("ok.wav");
                     if(InpChartInd && Obj_SELLChartInd())
                        return;

natürlich eine eigene Melodie oder einen eigenen Sound

 
Serhii Shevchuk:

Ich kann einen Blick darauf werfen, aber nicht vor morgen Abend. Wenn Sie es bis dahin nicht selbst herausgefunden haben.

Maxim Kuznetsov:

und das wirst du auch nicht :-)

Warum werden die Optionen für den Befehl curl in die HTTP-Header eingefügt?

Warum liest du nicht wenigstens ein paar Bücher, schaust dir ein paar Beispiele an... sonst schreiben wir dir alle einen Artikel

Wo kann ich also ein Beispiel mit der Ausgabe in eine Binärdatei finden? ))

Bei dem Versuch, es herauszufinden, habe ich die Syntax des url-Befehls selbst minimiert


curl -X GET -u ^
apikey:GR1bb3zVMs9fcNKL6pA9-5 zj9ptWliCu6eh9oupUnpZB ^
--output hello_world.wav ^
https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST

Ich benutze es, um eine wav-Datei mit dem Wort TEST herunterzuladen.

dann Optionen entfernen

//+------------------------------------------------------------------+
//|                                                   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 = "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB --output hello_world.wav";
   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST";
   ResetLastError();
   int res = WebRequest("GET",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);
     }
  }
//+------------------------------------------------------------------+


im Header steht nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch

Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"

Können Sie mir einen Tipp geben? ))

 
Nikolai Karetnikov:

Wo können wir also ein Beispiel mit der Ausgabe in eine Binärdatei finden? ))

Bei dem Versuch, es herauszufinden, habe ich die Syntax des url-Befehls selbst minimiert


eine wav-Datei mit dem Wort "TEST" herunterladen

dann Optionen entfernen


im Header nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch

Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"

Irgendwelche Tipps? ))

Was bedeutet der Fehler 401?
 

Um eine HTTP-Anfrage von curl-Optionen in WebRequest-Parameter zu übersetzen, müssen Sie Folgendes tun:

1. Schauen Sie generell bei Wikipedia nach, wie HTTP strukturiert ist.

2. Schauen Sie in der Curl-Dokumentation nach, was die Optionen bedeuten und warum sie verwendet werden

3. lesen Sie die WebRequest-Hilfe und sehen Sie Beispiele, auch in diesem Thread eine Menge

4. man sollte Code schreiben, der sich bewusst ist, was man getan hat :-) was, warum und wofür er verwendet wird.

Sie erwarten offensichtlich, dass alle 4 Punkte für Sie erledigt werden. Ich weiß, es ist Wochenende, die Zeit ist knapp, und Sie haben viele Ideen. Es muss schnell gehen.

Aber Sie müssen es trotzdem selbst tun.