Erreurs, bugs, questions - page 2732

 
Artyom Trishkin:

Je sais que je dois trouver les fichiers vidéo. Tout. Absolument. Et quels sont leur type et leur nom, que la machine les recherche elle-même.

Il est difficile de deviner comment la machine cherche, mais comment chercher dans DOS (appuyez sur Win+R et écrivez cmd), comme ceci :

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

J'ai cherché sur Google le premier sitehttp://fileext.ru/video , je l'ai collé dans Excel, pour qu'il soit en colonnes, puis dans le bloc-notes.

dernier paramètre où écrire les données de recherche avec les chemins et les noms de fichiers d:\filename.txt

J'ai vérifié. Ça marche..... mais mon binaire n'a rien à voir avec la vidéo ))))

 
La compilation avec la protection en nuage de MQL5 semble bloquer l'éditeur en l'absence d'Internet. Au début, il se bloque doucement (c'est-à-dire que l'éditeur est disponible pour d'autres actions, mais la commande de compilation est en attente d'achèvement et il n'est pas clair combien de temps il faut attendre s'il y a un timeout). Si l'on appuie sur le bouton d'annulation, il se bloque fermement.
 

Je veux renvoyer la chaîne de caractères de .dll à MQL4 (MQL5 n'a aucun problème).

J'ai déjà fait beaucoup d'erreurs, donc je dois demander au sachant : Qu'est-ce qu'un tableau de chaînes de caractères en mémoire ? - Qu'est-ce qu'un tableau de chaînes de caractères ?

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

Je veux renvoyer la chaîne de caractères de .dll à MQL4 (MQL5 n'a aucun problème).

J'ai déjà fait beaucoup d'erreurs, donc je dois demander au sachant : Qu'est-ce qu'un tableau de chaînes de caractères en mémoire ? - Qu'est-ce qu'un tableau de chaînes de caractères ?

Un tableau de chaînes de caractères est un tableau d'objets de type chaîne de caractères. Quelque part, l'un des développeurs a écrit qu'il y a deux champs : un pointeur vers une chaîne de caractères et 32 bits de la taille de la mémoire allouée. En général, il serait bon d'écrire ce genre de choses dans la documentation officielle, afin de ne pas deviner.
 
Igor Makanu:

qu'est-ce qu'un tableau de chaînes de caractères en mémoire ? - qu'est-ce qu'un tableau de chaînes de caractères ?

A propos de la structure de données MASSIVE.
Je le décris pour MT5, la même chose devrait être pour MT4 aussi, probablement quelque chose sera différent, mais cela devrait être proche.

En général, le tableau se compose de deux parties : la description et les données, mais il peut aussi se composer uniquement de données.
Data est la mémoire allouée aux éléments du tableau.
Description - la structure contenant les champs suivants, la séquence n'est pas sauvegardée :

flags - ensemble d'indicateurs décrivant le tableau : IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - nombre d'éléments créés dans le tableau ;
capacité - nombre d'éléments réservés dans le tableau ;
pointeur de constructeur - pointeur vers la fonction de constructeur pour les éléments du tableau ;
pointeur de destructeur - pointeur vers la fonction de destructeur pour les éléments du tableau ;
pointeur de données - pointeur vers le début du tableau.

string s_arr_1[] ;- tableau dynamique qui consiste en une description et un tableau de données.
string s_arr_2[10]; - le type de tableau dépend de l'emplacement de la chaîne :
si elle est utilisée comme variable locale, il s'agit d'un tableau statique, qui se compose d'une description et d'un tableau de données, situés séquentiellement sur la pile.
si elle est utilisée comme champ dans une structure/classe, il s'agit simplement d'un tableau de données (il n'y a pas de partie description).
 
Sergey Dzyublik:

A propos de la structure de données MASSIVE.
Il s'agit d'une description de mémoire et pour MT5, la même chose devrait être pour MT4 aussi bien, probablement quelque chose sera différent mais il devrait être proche.

En général, le tableau se compose de deux parties : la description et les données, mais il peut aussi se composer uniquement de données.
Data est la mémoire allouée aux éléments du tableau.
Description - la structure contenant les champs suivants, la séquence n'est pas sauvegardée :

flags - un ensemble d'indicateurs décrivant le tableau : IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - nombre d'éléments créés dans le tableau ;
capacité - nombre d'éléments réservés dans le tableau ;
pointeur de constructeur - pointeur vers la fonction de constructeur pour les éléments du tableau ;
pointeur de destructeur - pointeur vers la fonction de destructeur pour les éléments du tableau ;
pointeur de données - pointeur vers le début d'un tableau.

string s_arr_1[] ;- tableau dynamique, qui consiste en une description et un tableau de données.
string s_arr_2[10]; - le type de tableau dépend de l'emplacement de la chaîne :
si elle est utilisée comme variable locale, il s'agit d'un tableau statique, qui se compose d'une description et d'un tableau de données, situés séquentiellement sur la pile.
si elle est utilisée comme champ dans une structure/classe, il s'agit simplement d'un tableau de données (il n'y a pas de partie description).

Merci !

On espérait qu'il existait une structure standard de WinAPI, mais apparemment, il n'en va pas de même pour les chaînes de caractères.

SZZ : J'ai corrigé l'échange avec la dll, mais comme avant en 2 appels - requête pour l'action dans la dll et retour de la taille de tampon requise pour la chaîne et le 2ème appel avec la chaîne copiant dans le tampon préparé, ok, le problème est local, mais j'espérais que je simplifierais la solution


Vladimir Simakov:
Un tableau de chaînes de caractères est un tableau d'objets de type chaîne de caractères. Quelque part, un développeur a écrit qu'il y a deux champs : un pointeur vers une chaîne de caractères et 32 bits de la taille de la mémoire allouée. En général, il serait bien d'écrire de telles choses dans les docs officiels, pour ne pas deviner.

le principal problème est que MQL4 et 5 sont des programmes très différents ))))

La chaîne de caractères dans MQL4 est parfaitement analysée dans .Net parStringBuilderClass, donc vous avez raison de dire que la chaîne de caractères n'est pas un emplacement mémoire, mais plutôt un objet.

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

À propos de la structure de données STR.
Je le décris de mémoire pour MT5, la même chose devrait s'appliquer à MT4 aussi, probablement, quelque chose sera différent, mais cela devrait être proche.


La ligne se compose de la description et des données.
La description contient les champs suivants :

buffer_len - taille du tampon alloué pour la chaîne ;
pointeur unicode_str - pointeur vers le champ unicode_str (offset+8) dans la structure de données.

Les données contiennent les champs suivants :
flags - ensemble de drapeaux décrivant la chaîne : statique(0x03)/dynamique (0x01), éventuellement des encodages...
len - longueur de la chaîne ;
unicode_str - chaîne unicode_str directement pointée par le pointeur unicode_str de Description.
 
Sergey Dzyublik:

À propos de la structure de données STR.
Je le décris de mémoire pour MT5, la même chose devrait s'appliquer à MT4 aussi, probablement, quelque chose sera différent, mais cela devrait être proche.


La ligne se compose de la description et des données.
La description contient les champs suivants :

buffer_len - taille du tampon alloué pour la chaîne ;
pointeur unicode_str - pointeur vers le champ unicode_str (offset+8) dans la structure de données.

Les données contiennent les champs suivants :
flags - ensemble de drapeaux décrivant la chaîne : statique(0x03)/dynamique (0x01), éventuellement des encodages...
len - longueur de la chaîne ;
unicode_str - chaîne unicode_str directement pointée par le pointeur unicode_str de Description.

Question. Est-il décrit quelque part ou l'avez-vous analysé vous-même ?

 
Igor Makanu:

Je veux renvoyer la chaîne de caractères de .dll à MQL4 (MQL5 n'a aucun problème).

J'ai déjà fait beaucoup d'erreurs, donc je dois demander au sachant : Qu'est-ce qu'un tableau de chaînes de caractères en mémoire ? - Qu'est-ce qu'un tableau de chaînes de caractères ?

Passez seulement un tableau uchar au lieu d'un tableau string. C'est plus facile comme ça.
Par exemple, vous pouvez convertir comme ceci :

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

Fonctionne de la même manière pour MQL4 et MQL5

 
Geess:

Passez seulement un tableau d'uchar au lieu d'un tableau de string. C'est plus simple comme ça.
Par exemple, vous pouvez le convertir de cette façon :

Cela fonctionne de la même manière pour MQL4 et MQL5.

vous devez retourner des valeurs de la dll à MQL, dans tous les cas, du côté de MQL vous devez préparer un tampon pour recevoir les données

En somme, c'est une longue explication, j'ai déjà tout fait, je voulais juste poser quelques questions.

Merci.

Raison: