Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error usando TMemoryStream (https://www.clubdelphi.com/foros/showthread.php?t=19091)

Abaddon 04-03-2005 00:48:21

Error usando TMemoryStream
 
Hola, al ejecutar mi aplicacion me da una excepcion, una violacion de acceso a memoria justo al ejecutar Str.Write(p,tamanyo), donde p es un puntero (pointer) al inicio de donde teno en memoria una imagen y tamanyo es el tamaño de la imagen. Previamente he hecho Tamanyo:=sFormat.lFrameSize; Los valores qeu he pasado (tamaño y puntero) son correctos, y sFormat es de tipo TMemoryStream.

El codigo que uso es el siguiente


procedure CargaImagen(p: pointer; Tamanyo: Integer; AImage: TImage)
var
Str: TMemoryStream;
begin
Str := TMemoryStream.Create;
try
Str.Write(p, Tamanyo);
AImage.Picture.Bitmap.LoadFromStream(Str);
finally
Str.Free;
end;
end;

Tanto el tamaño como el puntero los saco de funciones asociadas a la dll de la tarjeta grafica con la que estoy trabajando, una inspecta de mikrotron.

Salu2 y muchas gracias.

Toni

Kreyser 04-03-2005 10:48:11

TMemoryStream
 
Hola. Has probado algo así??

Código:

procedure CargaImagen(p: pointer; Tamanyo: Integer; AImage: TImage)
var
Str: TMemoryStream;
begin
Str := TMemoryStream.Create;
try
Str.Write(p, Tamanyo);
Str.Position := 0; //Lo nuevo...
AImage.Picture.Bitmap.LoadFromStream(Str);
finally
Str.Free;
end;
end;

Espero sirva.
Saludos.

Abaddon 04-03-2005 10:59:40

No lo he probado, de todas maneras Str.Position := 0; , deberia ir antes de Str.Write(p, Tamanyo);, para indicar a partir de donde quiero escribir, ¿no te parece?. Lo probare a ver si asi me funciona.

Muchas Gracias.

Toni


La franja horaria es GMT +2. Ahora son las 09:44:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi