ve yine dll ve market - sayfa 12

 
nkaretnikov :

dosyaya yazmanıza gerek yok. Burada WebRequest yöntemini nasıl eşleştireceğimizi bulmamız gerekiyor.

"İndirmek" ne anlama geliyor? Metin dönüştürme işleminden sonra elde edilen ses dosyasının EA tarafından çalınabilmesi için Sesler klasörüne yerleştirilmesi gerekir. Expert Advisor'daki ses, WebRequest tarafından değil PlaySound işlevi tarafından oluşturulur ve ses dosyasını Sounds klasöründen alır. Görevin neredeyse çözülemez olduğunu söylüyorum.
[Silindi]  
Реter Konow :
"İndirmek" ne anlama geliyor? Metin dönüştürme işleminden sonra elde edilen ses dosyasının EA tarafından çalınabilmesi için Sesler klasörüne yerleştirilmesi gerekir. Expert Advisor'daki ses, WebRequest tarafından değil PlaySound işlevi tarafından oluşturulur ve ses dosyasını Sounds klasöründen alır. Görevin neredeyse çözülemez olduğunu söylüyorum.

Hmm...

DLL olmadan bir sanal alandan wav dosyasını oynatmak imkansız mı?

 
nkaretnikov :

Hmm...

DLL olmadan bir sanal alandan wav dosyasını oynatmak imkansız mı?

Kum havuzuna nasıl girecek? Dönüştürmeden sonra, ortaya çıkan dosyayı sanal alana yerleştirmeniz gerekir. Web isteği bunu yapmayacaktır. Sesler klasörüne otomatik modda nasıl kaydedilir?
 
Реter Konow :
Kum havuzuna nasıl girecek?

WebRequest sonucunun sunucudan indirilen bir WAV dosyası olacağını varsayıyorum. İşte aşağıdaki kodun sonucu

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



Bu aşamada sorun, hello_world.wav dosyasının boş çıkmasıdır, çünkü WebRequest çağrısının biçimi açıkça yanlış

 
Nikolai Karetnikov :

WebRequest sonucunun sunucudan indirilen bir WAV dosyası olacağını varsayıyorum. İşte aşağıdaki kodun sonucu



Bu aşamada sorun, hello_world.wav dosyasının boş çıkmasıdır, çünkü WebRequest çağrısının biçimi açıkça yanlış

Sunucudan bir soket veya web isteği aracılığıyla geçerli bir ses dosyası alsanız bile, onu Sounds klasörüne yazamazsınız, bu da PlaySound'un çalamayacağı anlamına gelir.
 
Реter Konow :
Sunucudan bir soket aracılığıyla geçerli bir ses dosyası alsanız veya Expert Advisor'a bir web isteği gönderseniz bile, onu Sounds klasörüne yazamayacaksınız, bu da PlaySound'un çalamayacağı anlamına gelir.

DLL olmadan bir wav dosyasını oynatmanın tek yolu PlaySound mu?

 
Nikolai Karetnikov :

DLL olmadan bir wav dosyasını oynatmanın tek yolu PlaySound mu?

Evet.
 
Реter Konow :
Sunucudan bir soket aracılığıyla geçerli bir ses dosyası alsanız veya Expert Advisor'a bir web isteği gönderseniz bile, onu Sounds klasörüne yazamayacaksınız, bu da PlaySound'un çalamayacağı anlamına gelir.

konuyla ilgili yukarıya bakın - her şey mümkündür, ancak kullanıcının iradesi gereklidir

 
Реter Konow :
Evet.

berbat)

 
Реter Konow :
Evet.

bekle, bu nasıl

//--- terminal_data_directory\MQL5\Files\ klasöründeki Demo.wav ses dosyasını oynatın
    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-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...