Erreurs, bugs, questions - page 327

 
mrProF:
En un coup d'œil, le fichier entier est écrit en str...
Ajouter le drapeau FILE_ANSI, car il lit l'unicode par défaut :)
De plus, je serai 15 car il y a une ligne blanche à la fin.
Selon la documentation de MQL5, la fonction FileReadString "lit une chaîne de caractères à partir du fichier avec la position actuelle du pointeur de fichier ...". Lors de la lecture d'un fichier csv, la chaîne sera lue à partir de la position actuelle jusqu'au séparateur le plus proche ou jusqu'au signe de la fin de la chaîne de texte". Je ne suis donc pas d'accord pour dire que "tout le fichier est écrit". J'ai essayé d'utiliser FILE_ANSI, mais cela ne fonctionne pas. Concernant la ligne vide à la fin : je ne comprends pas bien, précisez de quelle ligne vous parlez.
 
DenisR:
Selon la documentation de MQL5, la fonction FileReadString "lit une chaîne de caractères à partir de la position actuelle du pointeur de fichier...". Lors de la lecture d'un fichier csv, la chaîne sera lue depuis la position actuelle jusqu'au séparateur le plus proche ou jusqu'au signe de la fin de la chaîne de texte". Je ne suis donc pas d'accord pour dire que "tout le fichier est écrit". J'ai essayé d'utiliser FILE_ANSI, mais cela ne fonctionne pas. Concernant la chaîne vide à la fin : je ne comprends pas bien, précisez de quelle chaîne vous parlez.

C'est s'il trouvera une virgule correctement, si l'encodage ne correspond pas, il peut ne pas la voir.
Je vais regarder avec le débogueur.
J'ai copié votre code, ajouté le drapeau - tout est ok.
 
Et donc, voici les résultats, comme je l'ai dit.
Sans ansi, il lit abracadabra et sans voir les virgules, il vole à la fin du fichier.
Avec l'ansi, il se lit bien.
Voir les pièces jointes.
Dossiers :
 
-Alexey-:
Dans MetaEditor, le bouton "Liste des fonctions dans le fichier" ouvre la liste. Si je le fais défiler vers le bas, il se termine à P, et ne va pas plus loin (le triangle noir tourné vers le bas devient inactif), bien qu'il y ait des classes à la lettre R. S'il vous plaît, réparez-le.

Plus de détails sont nécessaires.

Construire, classer, résoudre...

Je viens de l'essayer sur le fichier ChartObject.mqh - il défile de haut en bas.

 
mrProF:
Et donc, voici les résultats, comme je l'ai dit.
Sans ansi, il lit abracadabra et sans voir les virgules, il vole à la fin du fichier.
Avec l'ansi, il se lit bien.
Voir les pièces jointes.
En ansi, j'ai lu (5 505 1009), c'est-à-dire que i est maintenant 5 au lieu de 0 pour une raison quelconque, la taille du fichier est 505 comme avant et FileTell est 1009 comme avant. Dans MT4, le même script indique (15 505 505).
 
alexvd:

Plus de détails sont nécessaires.

Construire, classer, résoudre...

Je viens de l'essayer sur le fichier ChartObject.mqh - il défile de haut en bas.

Interesting:
Et au moins une liste approximative de la taille de quoi ? Il y a peut-être une limite à la taille de la liste...

-Aleksey-

Exactement 100 lignes.


Intéressant:

J'ai expérimenté avec une de mes bibliothèques (110 fonctions), elle affiche de 100 à 106 dans la liste (un nombre différent tout le temps, mais pas 110).

La dernière construction semble être un problème avec un nombre de lignes supérieur à 100. ChartObject.mqh n'a que 62 lignes dans la liste. Résolution 1680x1050. Windows7, le schéma de police est une police agrandie.

 
DenisR:
En ansi, j'ai lu (5 505 1009), c'est-à-dire que i est maintenant 5 au lieu de 0 pour une raison quelconque, la taille du fichier est 505 comme avant et FileTell est 1009 comme avant. Dans MT4, le même script indique (15 505 505).
Hmm, le mien est 155091009.


//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+


void OnStart()
  {int handle;
   ulong i, size;
   double _Ask, _Bid;
   string str;
      
   handle = FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI,',');
   
   if (handle != INVALID_HANDLE)
     {
      size = FileSize(handle);
      
      for (i = 0; i < size; i++)
        {
         str = FileReadString(handle);
         _Ask = FileReadNumber(handle);
         _Bid = FileReadNumber(handle);
        
         if (FileIsEnding(handle))
           {
            Print(i," ",size," ",FileTell(handle));
            break;
           }
        }
     }   
      
   FileClose(handle);

   return;

  }
//+------------------------------------------------------------------+


Essayez de déboguer ligne par ligne si vous savez le faire...

 
mrProF:
Hmm, j'ai 155091009.



J'avais aussi 15 505 1009 au début, mais ensuite le terminal a été mis à jour avec la dernière version (408) et c'est devenu 5 505 1009. Mais dans tous les cas, le signe de fin de fichier ne peut pas être plus grand que la taille du fichier lui-même. C'est ma principale préoccupation pour le moment.
 
alexvd:

Plus de détails sont nécessaires.

Construire, classer, résoudre...

Je viens de l'essayer sur le fichier ChartObject.mqh - il défile de haut en bas.

Builds 404 et 408, Win XP Prof SP3, CPU 3.0 GHz et 3.0 Gb RAM.

Lataille de la police et les autres paramètres (sauf la couleur) sont standard.

Les actions sont les suivantes :

1. Créez une bibliothèque ou tout autre module de programme ;

2. Générer un ensemble de procédures et de fonctions qui doivent être supérieures à 100. Dans mon cas, c'était 110 (je me moquais de ma bibliothèque de migration).

Plus précisément, les fonctions étaient au nombre de 110, et le module est sorti avec une taille d'environ 3310 lignes.

3. Compilation du module ;

4. Nous essayons de parcourir la liste des fonctions.

Dans la liste, j'ai vu de 100 à 106 fonctions (avec à chaque recompilation un nombre et une composition de fonctions différents). Au début, les noms de 106 fonctions étaient affichés, puis le nombre a commencé à diminuer.

Dans le même temps, les 110 fonctions n'ont jamais figuré dans la liste.

PS

Une autre chose étrange - je ne sais pas après combien de fonctions (mais certainement moins de 50) les nouvelles fonctions ont cessé d'apparaître dans la liste après la première compilation, j'ai dû faire deux ou trois recompilations.

Je propose soit de changer l'ordre de formation de la liste, par exemple pour attribuer les classes individuelles sous la forme d'un menu de groupe (avec l'affichage de la classe "stuffing" dans une liste séparée), soit d'organiser un gestionnaire séparé, comme celui de Delphi (la discussion d'une telle demande a déjà eu lieu sur le forum).

 
-Alexey-:
alexvd:

Plus de détails sont nécessaires.

Construire, classer, résoudre...

Je viens de l'essayer sur le fichier ChartObject.mqh - il défile de haut en bas.

Bild last, semble être un problème avec le nombre de lignes supérieur à 100. ChartObject.mqh a seulement 62 lignes dans la liste. Résolution 1680x1050. Windows7, le schéma de police est une police élargie.

Oui, je l'ai reproduit.

Merci, jetons un coup d'oeil.