Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1118
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Veuillez nous conseiller sur les développements possibles.
J'ai un tableau [100], j'ai aussi enregistré un fichier binaire de taille [1000], comment retourner le tableau des 100 dernières valeurs du fichier binaire. Y a-t-il quelque chose d'universel ? Je travaille à nouveau sur ce sujet depuis 12 heures et rien.
Veuillez me conseiller sur les développements possibles.
J'ai un tableau [100], j'ai aussi enregistré un fichier binaire de taille [1000], comment retourner le tableau des 100 dernières valeurs du fichier binaire. Y a-t-il quelque chose d'universel ? Ça fait 12 heures que je travaille là-dessus et rien.
Si je me souviens bien, il a été écrit dans mql4, que si count = WHOLE_ARRAY ou si la valeur dépasse le nombre d'éléments du tableau, alors le tableau entier est écrit à la fin. Et il n'a rien dit à propos d'une quelconque marge. C'est-à-dire qu'il est hors de question de ne pas mentionner 1 000.
Pour le vérifier, comptez le nombre de valeurs écrites et la taille du fichier.
Si je me souviens bien, il a été écrit dans mql4, que si count = WHOLE_ARRAY ou si la valeur dépasse le nombre d'éléments du tableau, le tableau entier est écrit à la fin. Et il n'a rien dit à propos d'une quelconque marge. Il peut donc être absolument hors de question qu'il n'y ait pas une marge de 1 000 000 de points.
Pour le vérifier, calculez le nombre de valeurs écrites et la taille du fichier qui en résulte.
Je ne veux pas dire qu'après avoir écrit le tableau dans le binaire, de nouvelles données apparaissent, et que je continue à les écrire dans le binaire via un nouveau tableau dimensionné (= la dimension de la colonne du tableau primaire), chaque fois jusqu'à la fin du fichier, pour une nouvelle colonne j
alors nous devons retirer du binaire les données dont le nombre est égal à l'index du tableau original, qui a été transféré au binaire lors de la première intégration. Cependant, les dernières données seront incluses dans ce tableau limité, car le binaire est plus grand que le tableau primaire, puisque des lignes secondaires ont été ajoutées. Les rangées secondaires doivent aller dans le tableau de lecture, et les premières rangées en binaire doivent être hors de la zone.
Je ne veux pas dire qu'après avoir écrit le tableau dans le binaire, de nouvelles données apparaissent après un moment, et je continue à les écrire dans le binaire via un nouveau tableau dimensionné (= dimension de la colonne du tableau primaire), chaque fois jusqu'à la fin du fichier, pour une nouvelle colonne j
alors nous devons retirer du binaire les données dont le nombre est égal à l'index du tableau original, qui a été transféré au binaire lors de la première intégration. Cependant, les dernières données doivent être supprimées de manière à ce que les dernières données soient incluses dans ce tableau limité, car le binaire est plus grand que le tableau primaire en raison de l'ajout de lignes secondaires.
Il n'est donc pas nécessaire d'attribuer une taille au tableau avant de le lire. Si ce ne sont pas les premières données qui sont nécessaires, calculez la taille en octets et décalez la position de départ de la lecture de la bonne quantité.
C'est la question de savoir comment calculer les octets
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
C'est la question comment calculer les octets
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Si les données sont de type double, divisez la taille du fichier par le nombre d'octets occupés par le nombre de type double, c'est-à-dire par 8.
Si les données sont doubles, il faut diviser la taille du fichier par le nombre d'octets occupés par le nombre double, c'est-à-dire par 8.
Est-ce parFileFindFirst?
ou simplement scanner chaque nouvelle ligne en octets
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
AvecFileFindFirst?
ParFileFindFirst?
Ou simplement en résumant chaque nouvelle ligne en octets
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Vous n'auriez pas dû corriger votre message après y avoir répondu...
Faux. Avant de lire un tableau, définissez sa taille file_size = FileSize(handle) ; et divisez-la par la mémoire occupée par le type de données, c'est-à-dire pour un double par 8. Vous obtenez le nombre de numéros dans le fichier. Si le tableau est bidimensionnel, le nombre d'enregistrements dans le fichier sera deux fois moins élevé. Et vous obtenez le nombre d'octets à décaler pour lire la ligne souhaitée.
Vous auriez dû corriger votre message après y avoir répondu...
Faux. Avant de lire un tableau, définissez sa taille file_size = FileSize(handle) ; et divisez-la par la mémoire occupée par le type de données, c'est-à-dire pour un double par 8. Vous obtenez le nombre de numéros dans le fichier. Si le tableau est bidimensionnel, le nombre d'enregistrements dans le fichier sera deux fois moins élevé. Et vous obtenez le nombre d'octets à décaler pour lire la ligne souhaitée.