Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 15

 
TheXpert:

Можно попробовать конвертировать.

Если будет время, попробую наваять пример. А так... вот этот С++ код надо перегнать в MQL4:

wstring нужно заменить на массив интов и учитывать это при пересчете размера.
Нужно, ведь, в WORD. Это 2 байта, а INT - 4 байта. Т.е. в один INT надо будет класть два символа. Старших 2 байта (первый) + младших 2 байта (второй).
 
Zhunko:
Нужно, ведь, в WORD. Это 2 байта, а INT - 4 байта. Т.е. в один INT надо будет класть два символа. Старших 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. Вопрос по С++. Многие тут владеют этим языком. Нужен совет. Не стал отписывать свой вопрос в ветку новичков, так как взачастую туда заходят люди, которые вообще новички в программировании.

Scintilla

Не удаётся ни как найти инструкцию на русском языке, как установить scintilla в Borland C++ Builder 6.0 Enterprise Edition. Поиск по гуглу результатов не дал. По форумам тож уже замучался искать. Инфы на русском тупо нет. В английском не петрю на таком уровне. На форумах С++ задавал этот вопрос - ответов нет. Подскажите пожалуйста, кто знает как это сделать.
Инсталлятор качал с оффсайта (к посту он приложен)

Файлы:
scintilla224.zip  1184 kb
 
drknn:

Вопрос не по языку MQL4. Вопрос по С++. Многие тут владеют этим языком. Нужен совет. Не стал отписывать свой вопрос в ветку новичков, так как взачастую туда заходят люди, которые вообще новички в программировании.

Scintilla

Не удаётся ни как найти инструкцию на русском языке, как установить scintilla в Borland C++ Builder 6.0 Enterprise Edition. Поиск по гуглу результатов не дал. По форумам тож уже замучался искать. Инфы на русском тупо нет. В английском не петрю на таком уровне. На форумах С++ задавал этот вопрос - ответов нет. Подскажите пожалуйста, кто знает как это сделать.
Инсталлятор качал с оффсайта (к посту он приложен)

Ты хочешь его как VCL в среду встроить? Придется писать компонент руками, другого способа я не вижу...
 
sergeev:

переделал описание функции, подсунул массив вместо строки ServerName

но не скушала... ошибка таже

может глупость,но ... HTTP:// к УРЛу не пробовал дописывать?
 
alsu:
Ты хочешь его как VCL в среду встроить? Придется писать компонент руками, другого способа я не вижу...

Насколько я понял, мне нужен не 1 компонент, а целая палитра компонентов. Я пробовал встроить похожую палитру SynEdit в Borland.Delphi.v7.0. Не понравилось то, что нумерация строк текстового редактора идёт начиная с 01, а не с 1, как это реализовано в Notepad++. И не удалось найти компонент в SynEdit, который позволяет сделать подсветку синтаксиса пользовательского языка. Всякие там, с++, паскали, ява, пхп... есть, а свой язык - нема. Или может есть, но найти не удалось. Вот я и подумал, что есть альтернатива - скинтилла - о ней в инете писали. Сунулся в гугл за инструкциями. А там тишина. На форумах то же самое. Однако народ пишет, что вот мол, использовал тот или иной компонент из скинтиллы. А как он добрался до палитры - ни где ни слова. ЧуднО как-то...
 

мне вот такие палитры нужны

Причина обращения: