gchrmt4 : ...Ancak, bu komut dosyası, bir lisans sorgusunun sonuçları gibi kısa sunucu yanıtlarını almak için yine de çalışmalıdır. Yalnızca sunucunun yanıtının boyutu 1KB-ish'i aşarsa sorunları olur.
GrabWeb()'in build 600 ile çalışmasını sağlamak için bize yardım edebilir ve çözümünüzü gönderebilir misiniz? Bence birçok insan FFCal'in 600 yapı ile çalışmasına ilgi duyacaktır.
GrabWeb()'in build 600 ile çalışmasını sağlamak için bize yardım edebilir ve çözümünüzü gönderebilir misiniz? Bence birçok insan FFCal'in 600 yapı ile çalışmasına ilgi duyacaktır.
Thili55'in yanıtladığı gönderiye bakın - ancak şu anda v600'de FF takvimi kadar çok veri indirmeyi etkileyebilecek dize işleme sorunları olduğunu unutmayın.
gchrmt4 : Thili55'in yanıtladığı gönderiye bakın - ancak şu anda v600'de FF takvimi kadar çok veri indirmeyi etkileyebilecek dize işleme sorunları olduğunu unutmayın.
Cevabın için teşekkürler. Yani grabWeb için bir çözüm geliştirmeden önce v600'ün düzeltilmesini beklememiz gerekecek, doğru mu? Yoksa v603'te bir düzeltme mi sağlandı?
Cevabın için teşekkürler. Yani grabWeb için bir çözüm geliştirmeden önce v600'ün düzeltilmesini beklememiz gerekecek, doğru mu? Yoksa v603'te bir düzeltme mi sağlandı?
Sorunu anlamamış gibisin. mql4'teki değişikliği hesaba katmak için kodun sabitlenmesi gerekir.
İşte v600'de çalışacak şekilde güncellenen GrabWeb işlevi. Artık InternetOpenW ve InternetOpenUrlW'yi ve unicode'un dönüşümünü kullanıyor. XML dosyalarını tamamlıyor ancak dosyaların hepsinde NULL veri var. Koddaki StrWebPage için Print ifadesine bakın. Çıktı alınan verilere bakarsanız, strThisRead geçerli verilere sahipken çöptür. Birisi bakıp bir düzeltme görüp göremeyeceğini görebilir mi? Bu konudaki düzeltmeyi takip eder:https://www.mql5.com/en/forum/149360
Sadece kodu kopyalayıp FFCal.mq4'ünüze yapıştırın ve v600 MT4 ile derleyin ve çalıştırın (lütfen sürümünüze ait olmayan öğeleri düzenleyin, böylece derlenir).
bool bWinInetDebug = false ;
#define READURL_BUFFER_SIZE 1000#import "wininet.dll"int InternetOpenW( string , int , string , string , int );
int InternetOpenUrlW( int , string , string , int , int , int );
int InternetReadFile( int , uchar & arr[], int , int & arr[]);
int InternetCloseHandle( int );
#import
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+//bool GrabWeb( string strUrl, string & strWebPage)
{
int hInternet;
int hInternetUrl;
bool bSuccess = false ;
// Get an internet handle
hInternet = InternetOpenW( "mt4" , 0/* 0 = INTERNET_OPEN_TYPE_PRECONFIG */ , NULL , NULL , 0 );
if (bWinInetDebug)
Log( "hInternet: " + hInternet);
if (hInternet == 0 )
{
Message = Symbol () + " " + IndicatorName + " Error 890 - Unable to get an Internet Handle!" ;
Print (Message);
Alert (Message);
HealthBuffer[ 0 ] = Error_state;
bSuccess = false ;
}
else
{
// Get a URL handle
hInternetUrl = InternetOpenUrlW(hInternet, NewsURL, NULL , 0 , 0 , 0 );
if (bWinInetDebug)
Log( "hInternetUrl: " + hInternetUrl);
if (hInternetUrl == 0 )
{
Message = Symbol () + " " + IndicatorName + " Error 891 - Unable to get a URL handle!" ;
Print (Message);
Alert (Message);
HealthBuffer[ 0 ] = Error_state;
bSuccess = false ;
}
else
{
Print ( "Reading URL: " + strUrl);
bool bKeepReading = true ;
while (bKeepReading)
{
int lReturn[ 1 ];
uchar arrReceive[];
ArrayResize (arrReceive, READURL_BUFFER_SIZE + 1 );
int success = InternetReadFile(hInternetUrl, arrReceive, READURL_BUFFER_SIZE, lReturn);
if (success == 0 )
{
Message = Symbol () + " " + IndicatorName + " Error 892 - Unable to read News Database WebPage!" ;
Print (Message);
Alert (Message);
HealthBuffer[ 0 ] = Error_state;
bKeepReading = false ;
bSuccess = false ;
}
else
{
if (bWinInetDebug)
Log( "success: " + success);
if (bWinInetDebug)
Log( "arrReceive: " + arrReceive[ 0 ]);
if (bWinInetDebug)
Log( "lReturn: " + lReturn[ 0 ]);
// InternetReadFile() has succeeded, but we may be at the end of the data if (lReturn[ 0 ] == 0 )
{
if (bWinInetDebug)
Print ( "Reached end of data" );
bKeepReading = false ;
bSuccess = true ;
}
else
{
// Convert the data from Ansi to Unicode using the built-in MT4 functionstring strThisRead = CharArrayToString (arrReceive, 0 , lReturn[ 0 ], CP_UTF8 );
strWebPage = StringConcatenate (strWebPage, strThisRead); // <-- PROBLEM HERE ON FIRST USE ONLY IN EACH MT4 SESSIONPrint ("------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>> strWebPage : ", strWebPage); // this shows garbage!
}
}
}
}
}
Print ( "Closing URL web connection" );
success = InternetCloseHandle(hInternetUrl);
if (success == 0 )
{
Message = Symbol () + " " + IndicatorName + " Error 896 - Unable to close URL handle!" ;
Print (Message);
Alert (Message);
HealthBuffer[ 0 ] = Error_state;
bSuccess = false ;
}
else
{
success = InternetCloseHandle(hInternet);
if (success == 0 )
{
Message = Symbol () + " " + IndicatorName + " Error 898 - Unable to close Internet Handle!" ;
Print (Message);
Alert (Message);
HealthBuffer[ 0 ] = Error_state;
bSuccess = false ;
}
}
return (bSuccess);
} // end of function
...Ancak, bu komut dosyası, bir lisans sorgusunun sonuçları gibi kısa sunucu yanıtlarını almak için yine de çalışmalıdır. Yalnızca sunucunun yanıtının boyutu 1KB-ish'i aşarsa sorunları olur.
Teşekkürler, bu mükemmel çalıştı!
Merhaba thili55,
GrabWeb()'in build 600 ile çalışmasını sağlamak için bize yardım edebilir ve çözümünüzü gönderebilir misiniz? Bence birçok insan FFCal'in 600 yapı ile çalışmasına ilgi duyacaktır.
Çok teşekkürler
GrabWeb()'in build 600 ile çalışmasını sağlamak için bize yardım edebilir ve çözümünüzü gönderebilir misiniz? Bence birçok insan FFCal'in 600 yapı ile çalışmasına ilgi duyacaktır.
Thili55'in yanıtladığı gönderiye bakın - ancak şu anda v600'de FF takvimi kadar çok veri indirmeyi etkileyebilecek dize işleme sorunları olduğunu unutmayın.
Cevabın için teşekkürler. Yani grabWeb için bir çözüm geliştirmeden önce v600'ün düzeltilmesini beklememiz gerekecek, doğru mu? Yoksa v603'te bir düzeltme mi sağlandı?
Cevabın için teşekkürler. Yani grabWeb için bir çözüm geliştirmeden önce v600'ün düzeltilmesini beklememiz gerekecek, doğru mu? Yoksa v603'te bir düzeltme mi sağlandı?
İşte v600'de çalışacak şekilde güncellenen GrabWeb işlevi. Artık InternetOpenW ve InternetOpenUrlW'yi ve unicode'un dönüşümünü kullanıyor. XML dosyalarını tamamlıyor ancak dosyaların hepsinde NULL veri var. Koddaki StrWebPage için Print ifadesine bakın. Çıktı alınan verilere bakarsanız, strThisRead geçerli verilere sahipken çöptür. Birisi bakıp bir düzeltme görüp göremeyeceğini görebilir mi? Bu konudaki düzeltmeyi takip eder: https://www.mql5.com/en/forum/149360
Sadece kodu kopyalayıp FFCal.mq4'ünüze yapıştırın ve v600 MT4 ile derleyin ve çalıştırın (lütfen sürümünüze ait olmayan öğeleri düzenleyin, böylece derlenir).
bir GRABWEB betiği yapmaya çalışıyorum
çok Basit .. ve yapı 604'te iyi çalışıyor
bir GRABWEB betiği yapmaya çalışıyorum
çok Basit .. ve yapı 604'te iyi çalışıyor
Bu kod satırı için v604 ile bu derleme hatasını nasıl aştığınızı sorabilir miyim:
InternetReadFile(HttpRequest, Buffer, StringLen (Buffer), read);Hata: 'Tampon' - parametre dönüştürmeye izin verilmiyor
Lütfen MT4 sürümünüzü kontrol edin ve tekrar deneyin!
Bu kod satırı için v604 ile bu derleme hatasını nasıl aştığınızı sorabilir miyim:
Hata: 'Tampon' - parametre dönüştürmeye izin verilmiyor
Lütfen MT4 sürümünüzü kontrol edin ve tekrar deneyin!
Bu programla v604 ve v600'ümde böyle bir hata yok, hata yok ve dosyanın doğru indirildiğine dair hiçbir uyarı yok
bir GRABWEB betiği yapmaya çalışıyorum
çok Basit .. ve yapı 604'te iyi çalışıyor
Bu kod satırı için v604 ile bu derleme hatasını nasıl aştığınızı sorabilir miyim:
Hata: 'Tampon' - parametre dönüştürmeye izin verilmiyor
Lütfen MT4 sürümünüzü kontrol edin ve tekrar deneyin!
char kullanıyor olabilir misin
betiğimde string kullanıyorum