Erreurs, bugs, questions - page 898

 

lazarev-d-m:

Yedelkin:

sergeev: est-ce que le fichier a des lignes?

FILE_LINE_END

Obtenir l'indication de fin deligne

J'ai plus ou moins compris, le terminal ne voit pas le fichier csv comme un tableau, mais comme un fichier habituel où toutes les variables sont alignées et séparées par un délimiteur, et pour s'orienter dans le fichier comme dans un tableau, j'ai écrit un petit script d'exemple pour travailler avec le csv comme avec un tableau, aussi étrange que cela puisse paraître, aujourd'hui / demain je vais le lancer dans CodeBase, je pense que beaucoup seront intéressés.

lazarev-d-m, mon message n'est pas pour vous. C'est pour Sergeyev personnellement.
 
Yedelkin:

FILE_LINE_END

Obtenir un indicateur de fin deligne

Je ne te dis rien. Tu es déjà intelligent.

et vous comprenez que le fichier comporte des caractères de contrôle dans son mappage de lignes. de sorte que certains observateurs de son contenu l'afficheront selon les règles généralement acceptées.

Управляющие символы — Википедия
  • ru.wikipedia.org
Управля́ющие си́мволы — элементы данной кодировки, которым не приписано графическое представление, но которые используются для управления устройствами, организации передачи данных и других целей. Сейчас для этих целей применяются форматы файлов, языки управления устройствами (такие как Postscript) и сетевые протоколы. Поэтому многие...
 
lazarev-d-m:

J'ai plus ou moins trouvé la solution, le terminal ne voit pas le fichier csv comme un tableau, mais comme un fichier normal où toutes les variables sont alignées et séparées par un séparateur.

Il ne voit pas seulement les csv comme ça, il voit tout comme un fichier.
 

lazarev-d-m:

il faut trouver un mécanisme pour rechercher des chaînes de caractères,

Le fichier comporte-t-il des lignes ? Comment marquer une nouvelle ligne? (allusion à un symbole spécial :)

Imaginez que le fichier est un tableau unidimensionnel de caractères.

comment trouver une "nouvelle ligne" dans le tableau ?

 

 

FILE_LINE_END

Obtenir le caractère de fin de ligne

sergeev: Je ne vous dirai rien. vous êtes assez intelligent comme ça. vous comprenez qu'un fichier a des caractères de contrôle dans sa représentation linéaire. pour que certains visionneurs affichent son contenu selon des règles acceptées.
:) Supposons que les réponses aux questions "Qu'est-ce qu'une nouvelle ligne dans un fichier ? Un fichier a-t-il des lignes?". Tu les as. La réponse n'était pas attendue de vous.
 
Yedelkin:
:) Supposons que les réponses aux questions "Qu'est-ce qu'une nouvelle ligne dans un fichier? Tu l'as. Tu n'es pas censé avoir une réponse.

tout est dans les concepts utilisés et la perception de ces concepts.

Qu'est-ce qu'une"nouvelle ligne" dans le fichier ? C'est ce que j'essaie de découvrir auprès de lazarev-d-m. Si j'attends une réponse, je corrigerai et expliquerai correctement le concept, si nécessaire. Et ensuite, je passerai à la solution du problème.

Et tandis que je ne sais pas ce que lazarev-d-m imagine quand il demande un "newline". Et je ne peux pas donner une réponse comment le trouver. Il connaît FileSeek et FileIsLineEnding et FileRead. Mais il ne semble pas savoir à quoi ils servent.

Il est clair que dans son cas, on ne peut trouver un caractère qu'en cherchant, mais je ne sais pas s'il comprend que la nouvelle chaîne de caractères est juste un caractère.

 
sergeevвсе дело в J'essaie de trouver dans lazarev-d-m ce qu'est une"nouvelle chaîne" dans le fichier. Si j'attends une réponse, je corrigerai et expliquerai le concept correctement. En attendant, je ne sais pas à quoi pense lazarev-d-m lorsqu'il pose la question d'un "newline". Il connaît FileSeek et FileIsLineEnding et FileRead. Mais il semble qu'il ne sache pas à quoi ils servent. Il est clair que dans son cas, on ne peut trouver un personnage qu'en cherchant.

Le fait estque ce forum est un forum pour la communauté MQL5. Et MQL5 implique une notion telle que "le signe de fin de ligne dans un fichier" :

FILE_LINE_END.

Obtenir les drapeaux de fin de ligne

Par conséquent, la question de M. Lazarev est tout à fait correcte. C'est tout à fait correct au sein de la communauté MQL5.

 
Yedelkin:

Le fait estque ce forum est un forum pour la communauté MQL5. Et le langage MQL5 implique une telle notion de "signe de fin de ligne dans un fichier" :

Question - Dites-moi quels nombres divisent par deux ?

La réponse est toute.

Moralité - ne pas confondre la fin et ce dont vous avez besoin lazarev-d-m

 
sergeev: Question - dites-moi, quels sont les nombres divisibles par deux ? La réponse est tout. Moralité - ne pas confondre la fin avec le droit lazarev-d-m.
Oui. La réponse à votre question "Un fichier a-t-il des chaînes de caractères ?" Vous l'avez déjà. Maintenant vous comparez la fin et ce dont Lazarev a besoin. :)
 
sergeev:

Question - Pouvez-vous me dire quels chiffres sont divisibles par deux ?

La réponse est toute.

Moralité - ne pas confondre la fin et ce dont vous avez besoin lazarev-d-m

Je comprends qu'il existe des moyens d'identifier une seule ligne, mais pas de commande distincte pour y accéder, il faut recalculer le nombre de caractères des séparateurs de ligne, pour arriver à la bonne chaîne (si vous connaissez le "nombre" de lignes).

Ou ma variante qui consiste à analyser le fichier ligne par ligne, ce qui est également très pratique, surtout avec les gros fichiers, où il peut y avoir des centaines de lignes, et si l'on tombe soudainement sur cela dans le testeur, alors c'est généralement terrible.

Voici comment j'ai fait, ça ne fonctionne pas correctement, je le réparerai quand je serai libre.

MqlDateTime mqldt;
string qwerty="EURUSD";
int filehandle;

void OnStart()
  {
   filehandle=FileOpen("News.csv",FILE_READ|FILE_CSV|FILE_ANSI,';');
   uint column1=FileReadInteger(filehandle);//Code
   string column2=FileReadString(filehandle);//Symbol
   uint column3=FileReadInteger(filehandle);//Year
   uint column4=FileReadInteger(filehandle);//Month
   uint column5=FileReadInteger(filehandle);//Day
   uint column6=FileReadInteger(filehandle);//Hour
   uint column7=FileReadInteger(filehandle);//Minute
   while(column2!=qwerty&&column3!=mqldt.year&&column4!=mqldt.mon&&column5!=mqldt.day&&column6!=mqldt.hour)
     {
   column1=FileReadString(filehandle);//Code
   column2=FileReadString(filehandle);//Symbol
   column3=FileReadInteger(filehandle);//Year
   column4=FileReadInteger(filehandle);//Month
   column5=FileReadInteger(filehandle);//Day
   column6=FileReadInteger(filehandle);//Hour
   column7=FileReadInteger(filehandle);//Minute
     }
   Alert("Искомое находится в ",column1,"-й строчке");
  }
Maintenant, il renvoie toujours column1=Code, alors qu'il devrait renvoyer le numéro de la ligne, qui correspond à l'heure avec l'heure actuelle, je pense que c'est clair à partir du code