并再次进行dll和营销 - 页 14

 
Реter Konow:
如果一个声音文件可以从Files文件夹中播放,在那里它是由Expert Advisor预先录制的,那么问题的解决将是真实的,如果产生的声音文件将是完整的。
不!文档中说,声音文件应该存储在Sounds文件夹中。
https://www.mql5.com/ru/docs/common/playsound

这是本专题的一个关键问题。如果文件不能从Files文件夹中播放,那么PlaySound 就不可能了。那么就不需要从服务器返回任何东西。为什么?除非PlaySound突然不能与EA的内部资源一起工作,我非常怀疑...
 
有人尝试从Files文件夹中运行.wav。我想知道它是否有效。))
 
//+------------------------------------------------------------------+
//|                                                       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
:

有人尝试从Files文件夹中运行.wav。我想知道它是否有效。))

是的,我复制了整个文件夹。

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

是的,我复制了整个文件夹。

现在,这就是希望。))
 
Реter Konow:
现在,这就是希望。))。

仔细检查了歌曲并再次运行

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

再次仔细检查了这首歌,并启动了它

https://yadi.sk/d/EGsTJGYBmDFnGg
好吧,那么你就不必总是相信文件))))。

现在,如果TC将从服务器接收有效的音频文件,然后在一个地方重新录制,并在飞行中播放,那么向用户配音的通用解决方案的任务将得到解决。

ZS.PlaySound也能播放由EA创建的内部资源的声音吗?那么就不需要把文件写到Files。立即将文件保存到资源中并播放。
 
Реter Konow:
好吧,你不一定要相信文件))))。

现在,如果TC将从服务器上接收有效的声音文件,然后在一个地方重新录制,并在飞行中播放,那么向用户发送文本信息的通用解决方案的任务就会得到解决。

ZS.也许PlaySound可以播放由EA创建的内部资源的声音?

我不知道,在我的专家顾问中--在有一些行动的地方,它发挥了

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

当然有自己的旋律或声音

 
Serhii Shevchuk:

我可以看一看,但在明天晚上之前不行。如果你到时还没有自己解决。

Maxim Kuznetsov:

而你不会 :-)

为什么要把curl命令选项放在HTTP头文件中?

你为什么不至少读一些书,看一些例子......否则,我们都会给你写一篇文章。

那么我在哪里可以得到一个输出到二进制文件的例子?))

为了弄清楚这个问题,我已经尽量减少了url命令本身的语法。


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

我用它来下载一个带有TEST字样的WAV文件。

然后删除选项

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


现在头中是授权选项-u,服务器在其后面等待apikey。似乎是有道理的,但在语法上还是有一些问题

代码结果 -"Webrequest4Voice(EURCHF,D1) 载入'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST'时出错,代码401"

你能给我一个提示吗?))

 
Nikolai Karetnikov:

那么我们在哪里可以得到一个输出到二进制文件的例子呢?))

为了弄清楚这个问题,我已经尽量减少了url命令本身的句法


下载一个含有TEST字样的WAV文件

然后删除选项


现在头中是授权选项-u,服务器在其后面等待apikey。似乎是有道理的,但在语法上还是有一些问题

代码结果 -"Webrequest4Voice(EURCHF,D1) 载入'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST'时出错,代码401"

你能给我一个提示吗?))

错误401是什么意思?
 

要把一个HTTP请求从curl选项翻译成WebRequest 参数,你必须这样做。

1.一般来说,看看维基百科,看看HTTP是如何结构的

2.在Curl文档中查看选项的含义以及为什么要使用它们

3.阅读WebRequest的帮助,看看例子,甚至在这个主题中也有很多

4.你在写代码的时候应该意识到你做了什么:-)什么,为什么,为什么会被使用。

你显然是在期待所有4点都能为你完成。我知道现在是周末,时间很紧,你有很多想法。它必须是快速的。

但你仍然必须自己做。