Bibliotecas: Mapeado de Ficheros sin la DLL - página 4

 
sergeev:
tratarlos como una variable larga de sizeof(<Type>)*<Number_Elements> y todo funcionará :)
Entonces esta clase es necesaria para transferir sólo un puntero? Pensé que era posible utilizar matrices a la vez :(
 
baramantan:
¿Así que esta clase sólo es necesaria para transferir un puntero? Pensé que era posible utilizar matrices a la vez :(
¿te diste cuenta de lo que estabas preguntando? :)
 
sergeev:
trátalos como una variable long de sizeof(<Tipo>)*<Número_Elementos> y todo funcionará :)

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

¿Lo he hecho bien? Si no, ¿qué está mal?

 

baramantan:

¿Lo hice bien?
Pregúntale a Debug. Él lo sabe al 100%.
 
sergeev:
Pregúntale a debag. Él lo sabe al 100%.

¿Y por qué tienes que responder a mi post desplazando flechas?

¿Puedes mostrar con un ejemplo como pasar un array int o double?

 

¿Cómo vas a comprobarlo si ni siquiera tienes depuración? ¿Estás acostumbrado a estudiar informática en una pizarra sin ordenador en la escuela?

Si quieres detalles y ejemplos, lee MSDN.


En general, la gente puede ser insolente. Ya lo han pasado todo a MQL y se lo han masticado todo con comentarios,
así que para que escriban funciones para sus slivators también :) resulta raro.

;)

 
sergeev:

¿Cómo vas a comprobarlo si ni siquiera tienes depuración? ¿Estás acostumbrado a estudiar informática en una pizarra sin ordenador en la escuela?

Si quieres detalles y ejemplos, lee MSDN.


En general, la gente puede ser insolente. Ya lo han pasado todo a MQL y se lo han masticado todo con comentarios,
así que para que escriban funciones para sus slivators también :) resulta raro.

;)

Ahora no entiendo por qué os metisteis en mis posts con mis preguntas, ¿si no queréis responderlas en sustancia? ¡Estoy escandalizado, redacción!
 

Bueno, responderé a mis propias preguntas. Tuve que recoger este producto a medio terminar, poco cocido.

Esta clase no puede pasar arrays de tipo int y double por una razón muy simple.

La función declarada no puede aceptar arrays de tipo int o double. La clase sólo puede manejar uchar " virtual int Write(const uchar &buf[],int sz); // escribir el número especificado de bytes en memoria "

He falsificado la receta para finalizarla para mis necesidades, posteo lo que obtuve, solo se pueden pasar arrays int. Si el autor no finaliza su creación, postearé la mía más adelante.

Archivos adjuntos:
MemMapLib.mqh  17 kb
MemMap.mq5  2 kb
 
baramantan:

Responderé a mis propias preguntas. Tuve que investigar un poco

así que cumplí mi objetivo :)

Esta clase no puede aceptar arrays de tipo int y double por una razón muy simple.
La función declarada no puede aceptar arrays de tipo int o double.

Es una verdad obvia, acepta uchar, no <algún_tipo_necesario>.

De la misma forma se puede exigir a este, como tu dices, "producto semiacabado" que guarde un array de estructuras con cadenas. Pisando fuerte - por qué el autor no previó el "formato de datos que necesito".

Pero se le dio una función universal. menos de un byte no hay donde dividir. Por eso se almacena.

Dado que cualquier tipo de datos se puede traducir en uchar array (leer bytes), es el más universal para una clase de este tipo.

Improvisé la receta para modificarla a mis necesidades, posteo lo que obtuve, sólo se pueden pasar arrays int.

Era con uchar, ahora es con int.

si. progreso :)
 
sergeev:

así que he cumplido mi objetivo :)

Bueno, es una verdad obvia. acepta uchar, no <some_necessary_type>.

De la misma manera se le puede exigir a este, como tu dices, "producto semiacabado" que guarde un array de estructuras con cadenas. Pisando fuerte - por qué el autor no previó el "formato de datos que necesito".

Pero se le dio una función universal. menos de un byte no hay donde dividir. Por eso se almacena.

Dado que cualquier tipo de datos se puede traducir en uchar array (leer bytes), es el más universal para una clase de este tipo.

Era uchar, ahora es int.

si. progreso :))

No soy un mega programador, por supuesto. Pero no entiendo dónde está la universalidad... uchar no puede ser universal porque limita al usuario, a saber: uchar es sólo para valores positivos. El valor mínimo es cero, el valor máximo es 255.

Cualquier dato más allá del valor de uchar se hace igual al valor máximo o mínimo de uchar.

Basado en lo que dije, pregunté desde el principio "cómo pasar int o double". No entiendo tu punto, jefe.