Bibliothèque: Mappage de fichiers sans DLL - page 4

 
sergeev:
traitez-les comme une variable longue de sizeof(<Type>)*<Number_Elements> et tout se passera bien :)
Donc cette classe est nécessaire pour transférer seulement un pointeur ? Je pensais qu'il était possible d'utiliser des tableaux à la fois :(
 
baramantan:
Cette classe n'est donc nécessaire que pour transférer un pointeur ? Je pensais qu'il était possible d'utiliser des tableaux à la fois :(
Je ne sais pas si vous avez réalisé ce que vous demandiez, mais je ne sais pas si vous l'avez fait. :)
 
sergeev:
traitez-les comme une variable longue de sizeof(<Type>)*<Number_Elements> et tout se passera bien :)

void OnStart()
{
CMemMapFile hmem ;
int err=hmem.Open("Local\\\\test",111,modeCreate) ;

int data[] ;
ArrayResize(data,50) ;

err=hmem.Write(data,ArraySize(data)*sizeof(int)) ;

ArrayInitialize(data,0) ;
hmem.Seek(0,SEEK_SET) ;
err=hmem.Read(data, ArraySize(data)*sizeof(int) ) ;


hmem.Close() ;
}

Ai-je bien fait ? Si ce n'est pas le cas, qu'est-ce qui ne va pas ?

 

baramantan:

Ai-je bien fait ?
Demandez à Debug, il le sait à 100 %.
 
sergeev:
Demandez à debag, il le sait à 100 %.

Et pourquoi devez-vous répondre à mon post en déplaçant des flèches ?

Pouvez-vous montrer par un exemple comment passer un tableau int ou double ?

 

Comment allez-vous le vérifier si vous n'avez même pas de débogage ? Avez-vous l'habitude d'étudier l'informatique sur un tableau noir sans ordinateur à l'école ?

Si vous voulez des détails et des exemples, lisez MSDN.


En général, les gens peuvent être impudents. Ils ont déjà tout transféré vers MQL et ont tout mâché avec des commentaires,
alors pour eux d'écrire des fonctions pour leurs slivators aussi :) cela s'avère être étrange.

;)

 
sergeev:

Comment allez-vous le vérifier si vous n'avez même pas de débogage ? Avez-vous l'habitude d'étudier l'informatique sur un tableau noir sans ordinateur à l'école ?

Si vous voulez des détails et des exemples, lisez MSDN.


En général, les gens peuvent être impudents. Ils ont déjà tout transféré vers MQL et ont tout mâché avec des commentaires,
alors pour eux d'écrire des fonctions pour leurs slivators aussi :) cela s'avère être étrange.

;)

Maintenant je ne comprends pas pourquoi vous êtes intervenus dans mes posts avec mes questions - si vous ne voulez pas y répondre sur le fond ? Je suis choqué, la rédaction !
 

Je vais répondre à mes propres questions. J'ai dû ramasser ce produit à moitié fini et mal cuit.

Cette classe ne peut pas gérer les tableaux int et double pour une raison très simple.

La fonction déclarée ne peut pas accepter de tableaux de types int ou double. La classe ne peut gérer que des " virtual int Write(const uchar &buf[],int sz) ; // écrire le nombre spécifié d'octets en mémoire "

J'ai forgé la recette pour la finaliser à mes besoins, je poste ce que j'ai obtenu, on ne peut passer que des tableaux int. Si l'auteur ne finalise pas sa création, je posterai la mienne plus tard.

Dossiers :
MemMapLib.mqh  17 kb
MemMap.mq5  2 kb
 
baramantan:

Je vais répondre à mes propres questions. J'ai dû faire quelques recherches

j'ai donc atteint mon objectif :)

Cette classe ne peut pas accepter les tableaux int et double pour une raison très simple.
La fonction déclarée ne peut pas accepter les tableaux de type int ou double.

Il s'agit d'une vérité évidente : elle accepte uchar, et non pas <quelque_type_nécessaire>.

De la même manière, vous pouvez exiger de ce "produit semi-fini", comme vous le dites, qu'il enregistre un tableau de structures avec des chaînes de caractères. Vous vous demandez pourquoi l'auteur n'a pas anticipé le "format de données dont j'ai besoin".

Mais on vous a donné une fonction universelle. moins d'un octet, il n'y a nulle part où diviser. C'est pourquoi il est stocké.

Puisque n'importe quel type de données peut être traduit en tableau uchar (lire des octets), c'est le plus universel pour une telle classe.

J'ai bricolé la recette pour la finaliser pour mes besoins, je poste ce que j'ai obtenu, on ne peut passer que des tableaux d'int.

C'était avec uchar, maintenant c'est avec int.

oui. progrès :)
 
sergeev:

donc j'ai atteint mon but :)

Eh bien, c'est une vérité évidente. il accepte uchar, pas <quelque_type_nécessaire>.

De la même manière, on peut exiger de ce "produit semi-fini", comme vous le dites, de sauvegarder un tableau de structures avec des chaînes. Vous vous demandez pourquoi l'auteur n'a pas anticipé le "format de données dont j'ai besoin".

Mais on vous a donné une fonction universelle. moins d'un octet, il n'y a nulle part où diviser. C'est pourquoi il est stocké.

Puisque tout type de données peut être traduit en tableau uchar (lire des octets), c'est le plus universel pour une telle classe.

C'était uchar, maintenant c'est int.

yeah. progrès :))

Je ne suis pas un méga programmeur, bien sûr. Mais je ne comprends pas où est l'universalité ? uchar ne peut pas être universel parce qu'il limite l'utilisateur, à savoir : uchar n'est utilisable que pour des valeurs positives. La valeur minimale est zéro, la valeur maximale est 255.

Toute donnée au-delà de la valeur de uchar devient égale à la valeur maximale ou minimale de uchar.

Sur la base de ce que j'ai dit, j'ai demandé dès le début "comment passer un int ou un double". Je ne comprends pas votre point de vue.