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

Vadim Zhunko
5136
Vadim Zhunko  
TheXpert:

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

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

wstring нужно заменить на массив интов и учитывать это при пересчете размера.
Нужно, ведь, в WORD. Это 2 байта, а INT - 4 байта. Т.е. в один INT надо будет класть два символа. Старших 2 байта (первый) + младших 2 байта (второй).
TheXpert
17959
TheXpert  
Zhunko:
Нужно, ведь, в WORD. Это 2 байта, а INT - 4 байта. Т.е. в один INT надо будет класть два символа. Старших 2 байта (первый) + младших 2 байта (второй).
Да, именно это и имел в виду, когда говорил про учет размера.
Vadim Zhunko
5136
Vadim Zhunko  

Надо попробывать. Возможно не будет проблем при прямом использовании функции MultiByteToWideChar().

Подсунуть ей массив INT. Всё равно, он по ссылке. Какая разница - какой тип у него? Заполняется он не по типу, а по байтам.

Также передать его в WinHttpConnect().

---
22676
---  
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
---
22676
---  

переделал описание функции, подсунул массив вместо строки 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);
Владимир Тезис
4266
Владимир Тезис  

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

Scintilla

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

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

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

Scintilla

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

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

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

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

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

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

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