ve yine dll ve market - sayfa 28

 
TheXpert :

sorun, sonlandırılan boş karakterdir.

ve webrequest'ten bir hata alırsanız, sonuç parametresinde birçok ek bilgi vardır.

Örneğin:

bu yüzden dosyayı yükler - sadece format muhtemelen aynı değildir, kaybolmaz.

anlık görüntü3

 
Alexsandr San :

bu yüzden dosyayı yükler - sadece format muhtemelen aynı değildir, kaybolmaz.


doğru .wav dosyası yüklenmişse, o zaman kaybederdi

işte böyle kaybettin

anlık görüntü4

 

yine yanlış anlama

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#include <JAson.mqh>
void OnStart ()
  {

   char     post[],result[];
   string   url= "https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w" ;
   string   headers;
   string   result_headers;
   int      status;
   
   
   string jsonbody;
   headers = "Content-Type: application/json" ;
//---

// original json file
//{"input":{"text":"M"},"voice":{"languageCode":"en-gb"},"audioConfig":{"audioEncoding":"LINEAR16"}}
////

  jsonbody = "{\"input\":{\"text\":\"M\"},\"voice\":{\"languageCode\":\"en-gb\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}" ;
   StringToCharArray (jsonbody,post);
   ArrayResize (post, StringToCharArray (jsonbody,post) - 1 );
  status= WebRequest ( "POST" ,url,headers, 100000 ,post,result,result_headers);

   
   if (status==- 1 )
     {
       Print ( "Ошибка в WebRequest. Код ошибки  =" , GetLastError ());
       //---
       StringSetLength (url, StringFind (url, "/" , 8 ));
       MessageBox ( "Необходимо добавить адрес '" +url+ "' в список разрешенных URL во вкладке 'Советники'" , "Ошибка" , MB_ICONINFORMATION );
     }
   else
     {
       if (status== 200 )
        {
        CJAVal  CJasonResult;
         string lBase64String;
         char lBase64ResultArray[];
         char lBinaryDataArray[];
         char lkey[];


        CJasonResult.Deserialize(result);
        lBase64String = CJasonResult[ "audioContent" ].ToStr();
         StringToCharArray (lBase64String,lBase64ResultArray, 0 , WHOLE_ARRAY , CP_ACP );
        
         CryptDecode ( CRYPT_BASE64 ,lBase64ResultArray,lkey,lBinaryDataArray);
        
         //--- успешная загрузка
         PrintFormat ( "Файл успешно загружен, размер %d байт." , ArraySize (result));
         PrintFormat ( "Заголовки сервера: %s" ,result_headers);
         //--- сохраняем данные в файл
         int filehandle= FileOpen ( "result.wav" , FILE_WRITE | FILE_BIN );
         if (filehandle!= INVALID_HANDLE )
           {
           
             //--- сохраняем содержимое массива result[] в файл
             FileWriteArray (filehandle,lBinaryDataArray, 0 , ArraySize (result));

             //--- закрываем файл
             FileClose (filehandle);
             PlaySound ( "\\Files\\result.wav" );
           }
         else
             Print ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ());
        }
       else
         PrintFormat ( "Ошибка загрузки '%s', код %d" ,url,status);
     }
  }


Bir Json akışı alıyorum, sadece gerekli dizgiyi alıyorum, onu bir diziye atıyorum, dizinin kodunu çözüyorum.

Burada kod çözme ile net değil

 CryptDecode ( CRYPT_BASE64 ,lBase64ResultArray,lkey,lBinaryDataArray);

[içinde] Anahtar dizisi nedir.

Kılavuz böyle olması gerektiğini söylüyor ve bu kadar. İçinde ne var ve anlamı nedir?


 
Nikolai Karetnikov :

Kılavuz böyle olması gerektiğini söylüyor ve bu kadar. İçinde ne var ve anlamı nedir?

sıfır boyut yapın veya sıfırlarla doldurun, base64 için gerekli değildir

 
TheXpert :

sıfır boyut yapın veya sıfırlarla doldurun, base64 için gerekli değildir

sonuçta, kodda sıfır boyut var, ancak [1] eklendi ve sıfır ile puanlandı


Base64 içeren bir dizi CryptDecode'a girer ve elde edilen ikili dosya boştur

 
TC pes etmez))) İyi! Saygı duymak.
 
Nikolai Karetnikov :
StringToCharArray (lBase64String,lBase64ResultArray,0,StringLen(lBase64String));
 

Bununla birlikte, bu yöntem güvenli değildir ve çok az insan onu kullanmak ister.

bu şekilde dosyaları yükleyebilir ve çalıştırmak istediğiniz komut yardımıyla istediğiniz herhangi bir şey ....

bir komut dosyası - indirildi, bir klasör oluşturuldu ve bu klasöre kopyalandı

enstantane fotoğraf

 

Söz verdiğim gibi, bir IBM temsilcisiyle konuştum. İşte basit ve kısa diyalogumuz:

Artık Lorenzo ile sohbet ediyorsunuz.

Bugün

2 Haz 15:31'de ben

Merhaba, Text To Speech hizmetiyle ilgili bir sorum var. Ücretsiz plan sınırınız ayda 10.000 semboldür, ancak Google ücretsiz planı 4.000.000 sembole kadar sunar. Peki, bana bu büyük farkı açıklayabilir misin, yoksa yanılıyor muyum?

Merhaba!

Size yardımcı olabilecek daha uygun bir grup var. Sorunuzu cevaplayabilmeleri için sizi bu gruba aktarabilir miyim?

Tamam!

hemen yanında olacağım.

tamam

Tuttuğun için teşekkürler!

Evet, aslında bu ürünü desteklemiyorum. Lütfen meslektaşımla Juan.Jose.Montero1@ibm.com adresinden e-posta yoluyla iletişime geçin.

Size yardımcı olmaktan veya bir arama planlamaktan mutluluk duyacaktır!

Bu senin için uygun mu?

Peki, ona yazacağım, çok teşekkürler!

Sayende!

Bugün sana yardımcı olabileceğim başka bir şey var mı?

Pek değil. İyi günler!

//------------------------------------------------ ------------

Satış temsilcisi, sorunun tarifeleri ve hizmetlerinin limitleri ile ilgili olmasına rağmen benden kurtuldu. José Juan'a bir mektup yazmayı önerdi.

Productivity - США - Справка по MetaTrader 5
Productivity - США - Справка по MetaTrader 5
  • www.metatrader5.com
Индекс производительности труда показывает изменение объема выпущенной продукции, приходящегося на одного работника. Этот показатель полезен для предсказания инфляции и прироста объема производства. Если стоимость труда увеличивается соответственно увеличению производительности, и, кроме того, маловероятно увеличение производственных издержек...
 
TheXpert :
StringToCharArray(lBase64String,lBase64ResultArray,0,StringLen(lBase64String));

Deyim yerindeyse bardağı taşıran son damla.

Teşekkür ederim!

Beş! )

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#include <JAson.mqh>
void OnStart ()
  {

   char     post[],result[];
   string   url= "https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w" ;
   string   headers;
   string   result_headers;
   int      status;
   
   
   string jsonbody;
   headers = "Content-Type: application/json" ;
//---

// original json file
//{"input":{"text":"M"},"voice":{"languageCode":"en-gb"},"audioConfig":{"audioEncoding":"LINEAR16"}}
////

  jsonbody = "{\"input\":{\"text\":\"MetaTrader 5 is a free application for traders allowing to perform technical analysis and trading operations in the Forex and exchange markets.\"},\"voice\":{\"languageCode\":\"en-gb\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}" ;
   StringToCharArray (jsonbody,post);
   ArrayResize (post, StringToCharArray (jsonbody,post) - 1 );
  status= WebRequest ( "POST" ,url,headers, 100000 ,post,result,result_headers);

   
   if (status==- 1 )
     {
       Print ( "Ошибка в WebRequest. Код ошибки  =" , GetLastError ());
       //---
       StringSetLength (url, StringFind (url, "/" , 8 ));
       MessageBox ( "Необходимо добавить адрес '" +url+ "' в список разрешенных URL во вкладке 'Советники'" , "Ошибка" , MB_ICONINFORMATION );
     }
   else
     {
       if (status== 200 )
        {
        CJAVal  CJasonResult;
         string lBase64String;
         char lBase64ResultArray[];
         char lBinaryDataArray[];
         char lkey[ 1 ];


        CJasonResult.Deserialize(result);
        lkey[ 0 ]= 0 ;
        lBase64String = CJasonResult[ "audioContent" ].ToStr();
         StringToCharArray (lBase64String,lBase64ResultArray, 0 , StringLen (lBase64String));
         CryptDecode ( CRYPT_BASE64 ,lBase64ResultArray,lkey,lBinaryDataArray);
         //--- успешная загрузка
         PrintFormat ( "Файл успешно загружен, размер %d байт." , ArraySize (result));
         PrintFormat ( "Заголовки сервера: %s" ,result_headers);
         //--- сохраняем данные в файл
         int filehandle= FileOpen ( "result.wav" , FILE_WRITE | FILE_BIN );
         if (filehandle!= INVALID_HANDLE )
           {
           
             //--- сохраняем содержимое массива result[] в файл
             FileWriteArray (filehandle,lBinaryDataArray, 0 , ArraySize (result));

             //--- закрываем файл
             FileClose (filehandle);
             PlaySound ( "\\Files\\result.wav" );
           }
         else
             Print ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ());
        }
       else
         PrintFormat ( "Ошибка загрузки '%s', код %d" ,url,status);
     }
  }