Errores, fallos, preguntas - página 2732

 
Vladimir Karputov:

Inicie la búsqueda (cualquier búsqueda, cualquier nombre) y detenga la búsqueda inmediatamente. Esto hará que aparezca una barra de búsqueda en la que puede seleccionar el tipo de archivo:


Oops... Gracias.
 
Artyom Trishkin:

Sé que necesito encontrar los archivos de vídeo. Todo. Por supuesto. Y qué tipo y nombre tienen, que los busque la propia máquina.

Es difícil adivinar como busca la máquina, pero como buscar en DOS (pulsar Win+R y escribir cmd), así:

dir/b/s  *.3 g2 *.3 gp *.3 gp2 *.3 gpp *.3 gpp2 *.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

Busqué en Google el primer sitio webhttp://fileext.ru/video, lo pegué en Excel, para que quedara en columnas, y luego en el bloc de notas

último parámetro donde escribir los datos de la búsqueda con las rutas y los nombres de los archivos d:\Nfilename.txt

Lo he comprobado. Está trabajando.... pero mi binario no tiene nada que ver con el video ))))

 
La compilación con la protección de la nube MQL5 parece colgar el editor en ausencia de Internet. Al principio se cuelga suavemente (es decir, el editor está disponible para otras acciones, pero el comando de compilación está esperando a que se complete y no está claro cuánto tiempo hay que esperar si hay un tiempo de espera). Si se pulsa el botón de cancelación, se cuelga firmemente.
 

Quiero devolver la cadena de .dll a MQL4 (MQL5 no tiene ningún problema)

Ya he cometido muchos errores, así que tengo que preguntar a los entendidos: ¿Qué es un array de cadenas en memoria? - ¿Qué es una matriz de cadenas?

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

Quiero devolver la cadena de .dll a MQL4 (MQL5 no tiene ningún problema)

Ya he cometido muchos errores, así que tengo que preguntar a los entendidos: ¿Qué es un array de cadenas en memoria? - ¿Qué es una matriz de cadenas?

Un array de cadenas es un array de objetos de cadenas. En algún lugar, uno de los desarrolladores escribió que hay dos campos: un puntero a una cadena y 32 bits de tamaño de memoria asignada. En general, sería bueno escribir estas cosas en los documentos oficiales, para no adivinar.
 
Igor Makanu:

¿qué es un array de cadenas en memoria? - ¿qué es una matriz de cadenas?

Sobre la estructura de datos MASIVA.
Lo estoy describiendo para MT5, lo mismo debería ser para MT4 también, probablemente algo será diferente, pero debería estar cerca.

En general, la matriz consta de dos partes: descripción y datos, pero también puede constar sólo de datos.
Los datos son la memoria asignada a los elementos del array.
Descripción - la estructura que contiene los siguientes campos, la secuencia no se guarda:

flags - conjunto de banderas que describen la matriz: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - número de elementos creados en la matriz;
capacidad - número de elementos reservados en la matriz;
puntero del constructor - puntero a la función del constructor para los elementos del array;
puntero destructor - puntero a la función destructora de los elementos del array;
puntero de datos - puntero al principio de la matriz.

string s_arr_1[];- matriz dinámica que consiste en una descripción y una matriz de datos.
string s_arr_2[10]; - el tipo de array depende de la ubicación de la cadena:
si se utiliza como variable local, es un array estático, que consiste en una descripción y un array de datos, situados secuencialmente en la pila.
si se utiliza como campo en una estructura/clase, es sólo una matriz de datos (falta la parte de la descripción).
 
Sergey Dzyublik:

Sobre la estructura de datos MASSIVE.
Esta es una descripción de memoria y para MT5, lo mismo debería ser para MT4 también, probablemente algo será diferente pero debería estar cerca.

En general, la matriz consta de dos partes: descripción y datos, pero también puede constar sólo de datos.
Los datos son la memoria asignada a los elementos del array.
Descripción - la estructura que contiene los siguientes campos, la secuencia no se guarda:

flags - un conjunto de banderas que describen la matriz: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - número de elementos creados en la matriz;
capacidad - número de elementos reservados en la matriz;
puntero del constructor - puntero a la función del constructor para los elementos del array;
puntero destructor - puntero a la función destructora de los elementos del array;
puntero de datos - puntero al principio de una matriz.

string s_arr_1[];- matriz dinámica, que consiste en una descripción y una matriz de datos.
string s_arr_2[10]; - el tipo de array depende de la ubicación de la cadena:
si se utiliza como variable local, es un array estático, que consiste en una descripción y un array de datos, situados secuencialmente en la pila.
si se utiliza como campo en una estructura/clase, es sólo una matriz de datos (no hay parte de descripción).

Gracias.

Había una esperanza de que tal vez exista alguna estructura estándar de WinAPI, pero aparentemente no puede ser lo mismo con las cadenas

SZZ: He arreglado el intercambio con la dll, pero como antes en 2 llamadas - solicitud de acción en la dll y devolución del tamaño del buffer requerido para la cadena y la 2ª llamada con la cadena copiando en el buffer preparado, ok, el problema es local, pero esperaba que simplificara la solución


Vladimir Simakov:
Un array de cadenas es un array de objetos de cadena. En algún lugar, algún desarrollador escribió que hay dos campos: un puntero a una cadena y 32 bits de tamaño de memoria asignada. En general, sería bueno escribir estas cosas en los documentos oficiales, para no adivinar.

el principal problema es que MQL4 y 5 son programas muy diferentes ))))

La cadena en MQL4 es perfectamente analizada en .Net porStringBuilderClass, por lo que tienes razón en que la cadena no es una ubicación de memoria, sino un objeto.

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

Sobre la estructura de datos STR.
Lo describo de memoria para MT5, lo mismo debería aplicarse a MT4 también, probablemente, algo será diferente, pero debería estar cerca.


La línea se compone de Descripción + Datos.
La Descripción contiene los siguientes campos:

buffer_len - tamaño del buffer asignado a la cadena;
puntero unicode_str - puntero al campo unicode_str (offset+8) en la estructura de datos.

Los datos contienen los siguientes campos:
flags - conjunto de banderas que describen la cadena: static(0x03)/dynamic (0x01), posiblemente codificaciones...
len - longitud de la cadena;
unicode_str - cadena unicode_str apuntada directamente por el puntero unicode_str de Description.
 
Sergey Dzyublik:

Sobre la estructura de datos STR.
Lo describo de memoria para MT5, lo mismo debería aplicarse a MT4 también, probablemente, algo será diferente, pero debería estar cerca.


La línea se compone de Descripción + Datos.
La Descripción contiene los siguientes campos:

buffer_len - tamaño del buffer asignado a la cadena;
puntero unicode_str - puntero al campo unicode_str (offset+8) en la estructura de datos.

Los datos contienen los siguientes campos:
flags - conjunto de banderas que describen la cadena: static(0x03)/dynamic (0x01), posiblemente codificaciones...
len - longitud de la cadena;
unicode_str - cadena unicode_str apuntada directamente por el puntero unicode_str de Description.

Pregunta. ¿Está descrito en alguna parte o lo has analizado tú mismo?

 
Igor Makanu:

Quiero devolver la cadena de .dll a MQL4 (MQL5 no tiene ningún problema)

Ya he cometido muchos errores, así que tengo que preguntar a los entendidos: ¿Qué es un array de cadenas en memoria? - ¿Qué es una matriz de cadenas?

Pasar sólo una matriz uchar en lugar de una matriz de cadenas. Así es más fácil.
Por ejemplo, se puede convertir así:

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

Funciona igual para MQL4 y MQL5

Archivos adjuntos: