PROFIからSUPER PROFIへの質問-1. - ページ 15

 
TheXpert:

変換して みたらどうだろう。

時間があれば、例を作ってみようと思います。そうでなければ...このC++のコードは、MQL4に変換する必要があります。

wstring は int の配列に置き換えられ、サイズを再計算する際にこれを考慮する必要があります。
WORDに変換する必要があります。2バイトで、INTは4バイトです。つまり、1つのINTに2つのキャラクターを入れなければならなくなります。上位2バイト(1バイト目)+下位2バイト(2バイト目)。
 
Zhunko:
やはりWORDでないとダメですね。2バイトで、INTは4バイトです。つまり、1つのINTには2つの文字が含まれていなければならない。上位2バイト(1バイト目)+下位2バイト(2バイト目)。
そう、サイズ会計の話はそういうことなんです。
 

ぜひ試してみてください。MultiByteToWideChar() 関数を直接使っても問題ないのかもしれません。

それをINT配列に滑り込ませること。とにかく参照することです。どんな違いがあるのか、どんなタイプがあるのか。型ではなく、バイトで埋まっています。

また、WinHttpConnect() にも渡します。

 
Zhunko:

ぜひ試してみてください。MultiByteToWideChar() 関数を直接使っても問題ないのかもしれません。

それをINT配列に滑り込ませること。とにかく参考までにです。どんな違いがあるのか、どんなタイプがあるのか。型ではなく、バイトで埋まっています。

また、WinHttpConnect() にも渡します。

小切手を切る

#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);
}

MultiByteToWideCharが動作するかどうかはまだ分かりませんが、正しい文字列をログに記録しています。

も追加しました。

#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());
エラー 12005 - URL が無効です
 

ServerNameの文字列の代わりに配列を使用するように関数の説明を修正しました。

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

でも、そうじゃなかった...。同じエラーです。

        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);
 

質問は、MQL4言語についてではありません。C++についての質問です。ここでは、この言語を知っている人がたくさんいます。アドバイスが欲しいんです。プログラミング 全般が初めての人がよく訪れるので、初心者スレッドには質問を入れませんでした。

シンティラ

Borland C++ Builder 6.0 Enterprise Editionにscintillaをインストールする方法について、ロシア語で書かれた説明書が見当たりません。googleで検索しても結果が出なかった。もうフォーラムで検索する時間も使い果たしました。ロシア語の情報がないだけです。私はこのレベルの英語はよくわかりません。C++のフォーラムでこの質問をしたが、回答はなかった。どうすれば実現できるのか、ご教示いただけないでしょうか。
オフサイトからインストーラーをダウンロードしました(この投稿に添付)

ファイル:
scintilla224.zip  1184 kb
 
drknn:

質問は、MQL4言語についてではありません。C++についての質問です。ここでは、この言語を知っている人がたくさんいます。アドバイスが欲しいんです。プログラミング全般が初めての人がよく訪れるので、初心者スレッドには質問を入れませんでした。

シンティラ

Borland C++ Builder 6.0 Enterprise Editionにscintillaをインストールする方法について、ロシア語で書かれた説明書が見当たりません。googleで検索しても結果が出なかった。もうフォーラムで検索し尽くしてしまいました。ロシア語の情報がないだけです。私はこのレベルの英語はよくわかりません。C++のフォーラムでこの質問をしたが、回答はなかった。どうすれば実現できるのか、ご教示いただけないでしょうか。
オフサイトからインストーラーをダウンロードしました(この投稿に添付)。

VCLとして環境に組み込むか?コンポーネントを手書きで書くしかないですね、他に方法はないでしょうか...。
 
sergeev:

ServerNameの文字列の代わりに配列を使用するように関数の説明を修正しました。

でも、そうじゃなかった...。同じエラーです。

バカみたいだけど...URLにHTTP://を追加してみてはいかがでしょうか?
 
alsu:
VCLとして環境に組み込むか?コンポーネントを手書きで書くしかないですね、他に方法はないでしょうか...

私の理解では、1つの部品が必要なのではなく、部品のパレット全体が必要なのです。Borland.Delphi.v7.0 で同様の SynEdit パレットを埋め込んでみました。気に入らないのは、テキストエディタの行番号が、Notepad++で実装されているように1からではなく、01から始まることです。また、SynEdit にはユーザー言語の構文をハイライト するためのコンポーネントが見つかりませんでした。C++、pascal、java、php...いろいろです。...ただし、カスタム言語なし。あるいは、あるのかもしれませんが、見つけられませんでした。そこで、スキンチラという選択肢があるのではと思い、インターネットで調べてみたのです。そこで、ググって手順を調べました。でも、何もないんです。フォーラムでも同じことが言えます。しかし、Skintillaのこの部品を使っているとか、この部品を使っているとか書いている人を見かけることがあるんです。しかし、それがどのようにしてパレットに入ったのか、誰も言及しない。変な話だけど...。
 

こんなパレットが欲しい