Ошибки, баги, вопросы - страница 2732

 
Vladimir Karputov:

Начать поиск (любой поиск,любое название) и сразу остановить поиск. В результате появится панель поиска, где можно выбрать тип файла:


Упс... Спасибочки.
 
Artyom Trishkin:

Я знаю, что найти мне нужно видеофайлы. Все. Абсолютно. А уж какого они типа и имени - это пусть сама машинка ищет.

как машина ищет сложно предположить, но как в ДОСе искать (нажимаем Win+R пишем cmd), примерно так:

dir/b/s  *.3g2 *.3gp *.3gp2 *.3gpp *.3gpp2 *.asf *.asx *.avi *.bin *.dat *.drv *.f4v *.flv *.gtp *.h264 *.m4v *.mkv *.mod *.moov *.mov *.mp4 *.mpeg *.mpg *.mts *.rm *.rmvb *.spl *.srt *.stl *.swf *.ts *.vcd *.vid *.vid *.vid *.vob *.webm *.wm *.wmv *.yuv > d:\filename.txt

расширения нагуглил первый попавшийся сайт http://fileext.ru/video , вставил в Эксель, чтоб колонками было, дальше в блокнот

последний параметр куда писать данные поиска с путями и именами файлов d:\filename.txt

проверил, работает.... но у меня бинарники никак не с видео )))

 
Компиляция с защитой MQL5 cloud, похоже, вешает редактор в отсутствие интернета. Сперва мягко вешает (т.е. редактор доступен для прочих действий, но команда компиляции ждет завершения, и не понятно сколько ждать, если есть таймаут). Если нажать кнопку Отмена, то тут уже вешается намертво.
 

хочу возвратить из .dll в MQL4 строку  (с MQL5 вообще без проблем все пишется)

в общем много копий уже наломал, вот и хочу спросить знающих: что из себя представляет массив строк в памяти? - что такое массив строк?! 

string s_arr_1[];
// эти массивы чем-нибудь отличаются?
string s_arr_2[10];
 
Igor Makanu:

хочу возвратить из .dll в MQL4 строку  (с MQL5 вообще без проблем все пишется)

в общем много копий уже наломал, вот и хочу спросить знающих: что из себя представляет массив строк в памяти? - что такое массив строк?! 

Массив строк-это массив объектов string. Где-то, кто-то из разработчиков писал, что там два поля: указатель на строку и 32 бита размера выделенной памяти. А вообще, такие вещи неплохо бы и в официальных доках прописать, что бы не гадать.
 
Igor Makanu:

что из себя представляет массив строк в памяти? - что такое массив строк?! 

О структуре данных МАССИВ.
Описываю с памяти для МТ5, по идеи то же должно касаться и МТ4, возможно что-то будет не так, но должно быть близко.

В целом масив состоит из двух частей: описание и данных, но так же может состоять только из данных.
Данные - память выделенная под элементы массива.
Описание - структура содержащая следующие поля, последовательность не сохранена:

flags - набор флагов описывающих массив: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - количество созданных элементов в массиве;
capacity - количество зарезервированных элементов в массиве;
constructor pointer - указатель на функцию конструктор для элементов массива;
destructor pointer - указатель на функцию дестуктор для элементов массива;
data pointer - указатель на начало массива данных.

string  s_arr_1[]; - динамический массив, который состоит из описания и массива данных.
string  s_arr_2[10]; - тип массива зависит от расположения строки:
если используется как локальная переменная - то это статический массив, который состоит из описания и массива данных, расположенных последовательно на стеке.
если используется как поле в структуре/классе - это просто массив данных (часть с описанием отсутствует).
 
Sergey Dzyublik:

О структуре данных МАССИВ.
Описываю с памяти и для МТ5, по идеи то же должно касаться и МТ4, возможно что-то будет не так, но должно быть близко.

В целом масив состоит из двух частей: описание и данных, но так же может состоять только из данных.
Данные - память выделенная под элементы массива.
Описание - структура содержащая следующие поля, последовательность не сохранена:

flags - набор флагов описывающих массив: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - количество созданных элементов в массиве;
capacity - количество зарезервированных элементов в массиве;
constructor pointer - указатель на функцию конструктор для элементов массива;
destructor pointer - указатель на функцию дестуктор для элементов массива;
data pointer - указатель на начало массива данных.

string  s_arr_1[]; - динамический массив, который состоит из описания и массива данных.
string  s_arr_2[10]; - тип массива зависит от расположения строки:
если используется как локальная переменная - то это статический массив, который состоит из описания и массива данных, расположенных последовательно на стеке.
если используется как поле в структуре/классе - это просто массив данных (часть с описанием отсутствует).

Спасибо!

была надежда, что может быть, какая то стандартная структура из WinAPI существует, но видимо со строками такого быть не может

ЗЫ: обмен с dll наладил, правда как и раньше в 2 вызова - запрос действия в dll и возврат требуемого размера буфера под string и 2-й вызов с копированием string в подготовленный буфер, ладно, задача локальная, но была надежда, что упрощу решение


Vladimir Simakov:
Массив строк-это массив объектов string. Где-то, кто-то из разработчиков писал, что там два поля: указатель на строку и 32 бита размера выделенной памяти. А вообще, такие вещи неплохо бы и в официальных доках прописать, что бы не гадать.

основная проблема что MQL4 и 5 это очень разные программы ))))

строки в MQL4 в .Net разбираются прекрасно StringBuilder Класс , в общем тут Вы правы, что строка это все таки не область памяти, а некий обьект

 
что из себя представляет массив строк в памяти? - что такое массив строк?! 

О структуре данных СТРОКА.
Описываю с памяти для МТ5, по идеи то же должно касаться и МТ4, возможно что-то будет не так, но должно быть близко.


Строка состоит из Описания + Данные.
Описание содержит следующие поля:

buffer_len - размер буфера выделенного под строку;
unicode_str pointer - указатель на поле unicode_str (смещение+8) в структуре Данных.

Данные содержат следующие поля:
flags - набор флагов описывающих строку: статическая(0x03)/динамическая (0x01), возможно и кодировки... 
len - длина строки;
unicode_str - непосредственно unicode_str строка на которую указывает unicode_str pointer из Описания.
 
Sergey Dzyublik:

О структуре данных СТРОКА.
Описываю с памяти для МТ5, по идеи то же должно касаться и МТ4, возможно что-то будет не так, но должно быть близко.


Строка состоит из Описания + Данные.
Описание содержит следующие поля:

buffer_len - размер буфера выделенного под строку;
unicode_str pointer - указатель на поле unicode_str (смещение+8) в структуре Данных.

Данные содержат следующие поля:
flags - набор флагов описывающих строку: статическая(0x03)/динамическая (0x01), возможно и кодировки... 
len - длина строки;
unicode_str - непосредственно unicode_str строка на которую указывает unicode_str pointer из Описания.

Вопрос. Это где-то описано, или сами разбирали?

 
Igor Makanu:

хочу возвратить из .dll в MQL4 строку  (с MQL5 вообще без проблем все пишется)

в общем много копий уже наломал, вот и хочу спросить знающих: что из себя представляет массив строк в памяти? - что такое массив строк?! 

Передавайте вместо массива string только uchar массив. Так проще.
Например, можно так преобразовывать:

int StringArrayToCharArray(string &stringArr[],uchar &c[]) {
   uchar temp[];
   int pos=0;
   for (int i=0; i<ArraySize(stringArr); i++) {
      ArrayFree(temp);
      StringToCharArray(stringArr[i],temp);
      ArrayCopy(c,temp,pos);
      pos+=ArraySize(temp);
   }
   return pos;
}
//+------------------------------------------------------------------+

int CharArrayToStringArray(string &stringArr[],uchar &c[]) {
   ArrayFree(stringArr);
   int pos=0;
   int j=0;
   for (; pos<ArraySize(c); j++) {
      ArrayResize(stringArr,j+1);
      stringArr[j]=CharArrayToString(c,pos);
      while(c[pos]!=0) pos++;
      pos++;
   }
   return j;
}

Работает одинаково для MQL4 и MQL5

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