PROFI'den SUPERPROFI'ye kadar tüm sorularınız - 1. - sayfa 15

 
TheXpert :

dönüştürmeyi deneyebilirsiniz.

Vaktim olursa bir örnek yapmaya çalışırım. Bu C++ kodunun MQL4'e dönüştürülmesi gerekiyor:

wstring'in bir dizi ints ile değiştirilmesi gerekiyor ve boyutu yeniden hesaplarken bunu dikkate alın.
Sonuçta, WORD'de gereklidir. 2 bayt ve INT 4 bayttır. Onlar. bir INT'ye iki karakter koymak gerekli olacaktır. Kıdemli 2 bayt (birinci) + küçük 2 bayt (ikinci).
 
Zhunko :
Sonuçta, WORD'de gereklidir. 2 bayt ve INT 4 bayttır. Onlar. bir INT'ye iki karakter koymak gerekli olacaktır. Kıdemli 2 bayt (birinci) + küçük 2 bayt (ikinci).
Evet, boyutu dikkate almaktan bahsettiğimde tam olarak bunu kastetmiştim.
 

Denemek zorundayız. MultiByteToWideChar() işlevini doğrudan kullanmak büyük olasılıkla sorun olmayacaktır.

Bir INT dizisi verin. Her neyse, o linkte. Ne tür olduğu ne fark eder? Türe göre değil, baytlara göre doldurulur.

Ayrıca WinHttpConnect() öğesine iletin .

 
Zhunko :

Denemek zorundayız. MultiByteToWideChar() işlevini doğrudan kullanmak büyük olasılıkla sorun olmayacaktır.

Bir INT dizisi verin. Her neyse, o linkte. Ne tür olduğu ne fark eder? Türe göre değil, baytlara göre doldurulur.

Ayrıca WinHttpConnect() öğesine iletin .

bir kontrol yaptı

 #import "kernel32.dll"
   int MultiByteToWideChar( int CodePage, int dwFlags,
                           string lpMultiByteStr, int cbMultiByte, int &lpWideCharStr[], int cchWideChar);
#import

int start()
{
         int wbuf[]; string st= "1234" ;
         int n=MultiByteToWideChar ( 65001 , 0 , st, - 1 , wbuf, 0 );
         ArrayResize (wbuf, n); MultiByteToWideChar ( 65001 , 0 , st, - 1 , wbuf, n);
        st= "" ; for ( int i= 0 ; i<n; i++) st=st+ " " +DoubleToStr(wbuf[i], 0 ); Print ( "arr=" +st);
        st= "" ; for (i= 0 ; i< ArraySize (wbuf); i++) for ( int j= 0 ; j< 4 ; j++) st=st+CharToStr((wbuf[i]>>(j* 8 ))& 0xFF ); 
        Print ( "after=" +st);
}

Tabii ki, MultiByteToWideChar'ın çalışıp çalışmadığını hala anlamıyorum, ancak günlüğe doğru satırları yazdırıyor

ayrıca eklendi

 #import "ntdll.dll"
   int RtlGetLastWin32Error();
   int RtlSetLastWin32Error( int dwErrCode);
#import 
        hSession=WinHttpOpen( "MqlHttp" , 0 , "" , "" , 0 );
         Print ( "hSession=" +Http.hSession);

        RtlSetLastWin32Error( 0 ); //сбрасываем последний код ошибки
        hConnect=WinHttpConnect(hSession, "www.mql4.com", 80, 0 );
         if (hConnect<= 0 ) Print ( "-Err create Connect " +RtlGetLastWin32Error());
ortaya çıktığı gibi, hata 12005 - yanlış URL'yi açar
 

işlev açıklamasını yeniden yaptı, SunucuAdı dizesi yerine bir dizi kaydırdı

 int WinHttpConnect( int hSession, int & pswzServerName[], int nServerPort, int dwReserved);

ama yemedim ... aynı hata

        RtlSetLastWin32Error( 0 ); //сбрасываем
         int wHost[]; int n=MultiByteToWideChar ( 65001 , 0 , "www.mql4.com" , - 1 , wHost, 0 );
         ArrayResize (wHost, n); MultiByteToWideChar ( 65001 , 0 , "www.mql4.com" , - 1 , wHost, n);
        hConnect=WinHttpConnect(hSession, wHost, 80 , 0 );
 

Soru MQL4 dili ile ilgili değil. C++ sorusu. Buradaki birçok kişi bu dili konuşuyor. Tavsiye ihtiyacı. Sorumu yeni başlayanlar dizisine aboneliğimi iptal etmedim, çünkü genellikle programlamaya yeni başlayan insanlar oraya gider.

Kıvılcım

Borland C++ Builder 6.0 Enterprise Edition'da scintilla'nın nasıl kurulacağına dair Rusça talimatları bulamıyorum. Google araması herhangi bir sonuç vermedi. Bunun için forumları zaten araştırdım. Rusça bilgi yok. İngilizce'de, o seviyede oynamam. C++ forumlarında bu soruyu sordum - cevap yok. Lütfen bana bunun nasıl yapılacağını bilen birini söyle.
Site dışından indirilen yükleyici (gönderiye eklidir)

Dosyalar:
scintilla224.zip  1184 kb
 
drknn :

Soru MQL4 dili ile ilgili değil. C++ sorusu. Buradaki birçok kişi bu dili konuşuyor. Tavsiye ihtiyacı. Genellikle programlamada yeni olan insanlar oraya gittiğinden, sorumu acemi başlığına aboneliğimi iptal etmeye başlamadım.

Kıvılcım

Borland C++ Builder 6.0 Enterprise Edition'da scintilla'nın nasıl kurulacağına dair Rusça talimatları bulamıyorum. Google araması herhangi bir sonuç vermedi. Bunun için forumları zaten araştırdım. Rusça bilgi yok. İngilizce'de, o seviyede oynamam. C++ forumlarında bu soruyu sordum - cevap yok. Lütfen bana bunun nasıl yapılacağını bilen birini söyle.
Site dışından indirilen yükleyici (gönderiye eklidir)

Ortama bir VCL olarak gömmek istiyor musunuz? Bileşeni elle yazmam gerekecek, başka bir yol göremiyorum...
 
sergeev :

işlev açıklamasını yeniden yaptı, SunucuAdı dizesi yerine bir dizi kaydırdı

ama yemedim ... aynı hata

belki aptallık, ama ... HTTP:// URL'ye eklemeye çalışmadı mı?
 
alsu :
Ortama bir VCL olarak gömmek istiyor musunuz? Bileşeni elle yazmam gerekecek, başka bir yol göremiyorum...

Anladığım kadarıyla 1 bileşene değil, bütün bir bileşen paletine ihtiyacım var. Borland.Delphi.v7.0'a benzer bir SynEdit paleti yerleştirmeye çalıştım. Metin düzenleyicinin satırlarının numaralandırılmasının Notepad++'da uygulandığı gibi 1'den değil 01'den başlaması hoşuma gitmedi. Ve SynEdit'te, kullanıcı dilinin sözdizimi vurgulamalarını yapmanıza izin veren bir bileşen bulmak mümkün değildi. Her türden şey var, c++, pascals, java, php... var ama kendi dili sessiz. Ya da belki vardır ama bulunamadı. Bu yüzden bir alternatif olduğunu düşündüm - skintilla - internette bunun hakkında yazdılar. Talimatlar için googledim. Ve sessizlik var. Forumlar aynı. Ancak, insanlar skintilla'dan bir veya başka bir bileşen kullandıklarını söylediklerini yazıyorlar. Ve palete nasıl ulaştığı - hiçbir yerde bir kelime değil. Biraz garip...
 

Bu paletlere ihtiyacım var