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

Alexey Subbotin
4970
Alexey Subbotin  
C-4:


Спасибо за совет. Но почему-то функция вырисовывается узковатая:

Использовалось 500 СБ и как-то непохоже что 99.7% из них укладываются в три сигмы.

Ну так надо посчитать программно напрямую и проверить. По рисунку мало что можно сказать - по мне так все вроде правильно.

Если схема генерации биномиальная, и соседние отсчеты полностью независимы, то ЦПТ должна выполняться. Но если не выполняется условие независимости (плохой генератор и т.п.), то "толстые хвосты" вполне возможны

hrenfx
3482
hrenfx  
---
22691
---  

как вычислить размер текста в пикселях ?

DrawText vs GetTextExtent

#define DT_CALCRECT 0x00000400

#import "user32.dll"
        int DrawTextA(int hDC, string lpchText, int nCount, int lpRect[4], int uFormat);
        int GetWindowDC(int hWnd);
        int ReleaseDC(int hWnd, int hDC);
#import

start()
{
  string txt="abcdef1234567";
  int hWnd=WindowHandle(Symbol(), Period());
  int hDC=GetWindowDC(hWnd);
  int rect[4]={0,0,0,0};
  DrawTextA(hDC, txt, 8, rect, DT_CALCRECT);
  ReleaseDC(hWnd, hDC);
  Print("x1="+rect[0]+" y1="+rect[1]+"  x2="+rect[2]+" y2="+rect[3]);
}
Vadim Zhunko
5136
Vadim Zhunko  
// Функция GetTextExtentPoint32 вычисляет ширину и высоту заданной строки текста.
BOOL GetTextExtentPoint32
(
  HDC hdc,           // дескриптор DC
  LPCTSTR lpString,  // текстовая строка
  int cbString,      // число символов в строке
  LPSIZE lpSize      // размер строки
);
---
22691
---  

наверно правильней GetTextExtentPoint32

но в принципе  DrawTextA тоже считает. Единственное HFONT надо менять на требуемый. Иначе думаю результат будет не совсем правильный.
more
1282
more  
sergeev:

наверно правильней GetTextExtentPoint32

В string-переменной в четырех байтах хранится int-число во внутреннем представлении.

Как оно туда попало - неважно.

Нельзя ли без использования побитовых операций поиметь это число в int-переменную ?

Vadim Zhunko
5136
Vadim Zhunko  
more:

В string-переменной в четырех байтах хранится int-число во внутреннем представлении.

Как оно туда попало - неважно.

Нельзя ли без использования побитовых операций поиметь это число в int-переменную ?

std::string sText = "12";
int nValue = (MAX_CHAR + 1) * sText[0] + sText[1];
Примерно так для двух байт.
more
1282
more  
Zhunko:
Примерно так для двух байт.

Что это такое ?

Я говорю о переменных в MQL4-программе.

Dmitry Fedoseev
55088
Dmitry Fedoseev  
more:

В string-переменной в четырех байтах хранится int-число во внутреннем представлении.

Как оно туда попало - неважно.

Нельзя ли без использования побитовых операций поиметь это число в int-переменную ?


Можно, через умножение каждого байта на степень 256 и сложение. Как-то так, примерно...

more
1282
more  
Integer:


Можно, через умножение каждого байта на степень 256 и сложение.

То есть, вот так:

int i = StringGetChar(str,3) ;

i +=StringGetChar(str,2) * 256;

i +=StringGetChar(str,1) * 256*256;

i +=StringGetChar(str,0) * 256*256*256;


Очень хорошо.

Спасибо !