MemoryStream

30/09/2004 - 17:46 por Clever | Informe spam
Que tal Masters!

Aprovechando de su experiencia...

Tengo un objeto MemoryStream y que intento leer asi(en C#):

objMemStr.Read =(cadBytes, 0, objMemStr.Length) ;}

pero me marca que no puedo pasar de Long a int en
objMemStr.Length, pero lo he tratado de convertir a
int con Convert.ToIntxx y me marca fuera de rango

Alguien sabe que pudiera estar pasando o le ha pasado en
c#?

De antemano, GRacias.

Preguntas similare

Leer las respuestas

#1 Alx Sharp
30/09/2004 - 18:52 | Informe spam
Hola...

La firma del método es Read([in, out] byte[] buffer, int offset, int count);
El parámetro count que espera es de tipo int, mientras que el valor de la
propiedad Length que intentas pasar es de tipo long.
Cuando he llamado el método, simplemente hago un casting y no tengo mayor
problema:

objMemStr.Read(cadBytes, 0, (int)objMemStr.Length);

Si la longitud del MemoryStream fuera tan grande que no pudiera tratarse
como un int, se perderían datos, por lo que pienso que sería mejor si se
leyera el stream por partes.
Cuando haces un casting de un tipo de mayor capacidad como long a un tipo de
menor capacidad como int, se rellena el int y los datos que no caben se
pierden.

Espero que sirva...

Saludos...

"Clever" escribió en el mensaje
news:0cae01c4a704$ad6c7310$

Que tal Masters!

Aprovechando de su experiencia...

Tengo un objeto MemoryStream y que intento leer asi(en C#):

objMemStr.Read =(cadBytes, 0, objMemStr.Length) ;}

pero me marca que no puedo pasar de Long a int en
objMemStr.Length, pero lo he tratado de convertir a
int con Convert.ToIntxx y me marca fuera de rango

Alguien sabe que pudiera estar pasando o le ha pasado en
c#?

De antemano, GRacias.
Respuesta Responder a este mensaje
#2 Clever
30/09/2004 - 19:38 | Informe spam
Alx sino es mucha molestia... como se lee un stream por
partes??

Hola...

La firma del método es Read([in, out] byte[] buffer, int


offset, int count);
El parámetro count que espera es de tipo int, mientras


que el valor de la
propiedad Length que intentas pasar es de tipo long.
Cuando he llamado el método, simplemente hago un casting


y no tengo mayor
problema:

objMemStr.Read(cadBytes, 0, (int)objMemStr.Length);

Si la longitud del MemoryStream fuera tan grande que no


pudiera tratarse
como un int, se perderían datos, por lo que pienso que


sería mejor si se
leyera el stream por partes.
Cuando haces un casting de un tipo de mayor capacidad


como long a un tipo de
menor capacidad como int, se rellena el int y los datos


que no caben se
pierden.

Espero que sirva...

Saludos...

"Clever" escribió


en el mensaje
news:0cae01c4a704$ad6c7310$

Que tal Masters!

Aprovechando de su experiencia...

Tengo un objeto MemoryStream y que intento leer asi(en




C#):

objMemStr.Read =(cadBytes, 0, objMemStr.Length) ;}

pero me marca que no puedo pasar de Long a int en
objMemStr.Length, pero lo he tratado de convertir a
int con Convert.ToIntxx y me marca fuera de rango

Alguien sabe que pudiera estar pasando o le ha pasado en
c#?

De antemano, GRacias.




.

Respuesta Responder a este mensaje
#3 Alx Sharp
30/09/2004 - 21:22 | Informe spam
Hola de nuevo...

Tal vez puedas dividir la longitud total (propiedad Length) en un numero N
de manera que la división sea un numero (blockSize) que se pueda almacenar
en un int.
Asi podrías leer el stream N veces en bloques de tamaño blockSize, e
incrementando el desplazamiento que normalmente lo utilizas como 0 para que
lea desde el principio del stream.
Esto que te menciono es a grandes rasgos, porque el algoritmo real sería un
poco mas detallado.

Te lo escribo así porque en este momento voy saliendo de la oficina, pero si
quieres ayuda mas profunda, escribeme de nuevo y desde mi casa te ayudo en
cuanto pueda...

Saludos...

"Clever" escribió en el mensaje
news:0e0701c4a714$470c7600$

Alx sino es mucha molestia... como se lee un stream por
partes??

Hola...

La firma del método es Read([in, out] byte[] buffer, int


offset, int count);
El parámetro count que espera es de tipo int, mientras


que el valor de la
propiedad Length que intentas pasar es de tipo long.
Cuando he llamado el método, simplemente hago un casting


y no tengo mayor
problema:

objMemStr.Read(cadBytes, 0, (int)objMemStr.Length);

Si la longitud del MemoryStream fuera tan grande que no


pudiera tratarse
como un int, se perderían datos, por lo que pienso que


sería mejor si se
leyera el stream por partes.
Cuando haces un casting de un tipo de mayor capacidad


como long a un tipo de
menor capacidad como int, se rellena el int y los datos


que no caben se
pierden.

Espero que sirva...

Saludos...

"Clever" escribió


en el mensaje
news:0cae01c4a704$ad6c7310$

Que tal Masters!

Aprovechando de su experiencia...

Tengo un objeto MemoryStream y que intento leer asi(en




C#):

objMemStr.Read =(cadBytes, 0, objMemStr.Length) ;}

pero me marca que no puedo pasar de Long a int en
objMemStr.Length, pero lo he tratado de convertir a
int con Convert.ToIntxx y me marca fuera de rango

Alguien sabe que pudiera estar pasando o le ha pasado en
c#?

De antemano, GRacias.




.

Respuesta Responder a este mensaje
#4 Octavio Hernandez
01/10/2004 - 01:29 | Informe spam
Hola,

Alx sino es mucha molestia... como se lee un stream por partes??





Un int puede almacenar valores hasta 2^31 - 1, que es un valor bastante
significativo (2 GB, no?). Lo más probable es que nunca te haga falta esa
partición.

Slds - Octavio

Hola...

La firma del método es Read([in, out] byte[] buffer, int


offset, int count);
El parámetro count que espera es de tipo int, mientras


que el valor de la
propiedad Length que intentas pasar es de tipo long.
Cuando he llamado el método, simplemente hago un casting


y no tengo mayor
problema:

objMemStr.Read(cadBytes, 0, (int)objMemStr.Length);

Si la longitud del MemoryStream fuera tan grande que no


pudiera tratarse
como un int, se perderían datos, por lo que pienso que


sería mejor si se
leyera el stream por partes.
Cuando haces un casting de un tipo de mayor capacidad


como long a un tipo de
menor capacidad como int, se rellena el int y los datos


que no caben se
pierden.

Espero que sirva...

Saludos...

"Clever" escribió


en el mensaje
news:0cae01c4a704$ad6c7310$

Que tal Masters!

Aprovechando de su experiencia...

Tengo un objeto MemoryStream y que intento leer asi(en




C#):

objMemStr.Read =(cadBytes, 0, objMemStr.Length) ;}

pero me marca que no puedo pasar de Long a int en
objMemStr.Length, pero lo he tratado de convertir a
int con Convert.ToIntxx y me marca fuera de rango

Alguien sabe que pudiera estar pasando o le ha pasado en
c#?

De antemano, GRacias.




.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida