Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-06-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Liberar stream en función

Buenas a tod@s.


Trabajando en el tema del QR para VeriFactu he hecho una función para generarlo y devolvérmelo en modo stream para guardarlo en la tabla e imprimirlo en la factura posteriormente.


El tema es que he creado una función aprovechando y retocando un componente que publicó el compañero escafandra en otro foro tal que así:


Código Delphi [-]
function DameQRIMG(QRText: String): TMemoryStream;
var
  QR: TQRCodeImage;
  Stream: TMemoryStream;
  Bitmap: TBitmap;
  GR: TGraphic;
  Jpg: TJpegImage;
begin
  QR:=TQRCodeImage.Create(nil);
  QR.Width := 169;
  QR.Height:= QR.Width;
  QR.Text := QRText;
  GR:=TGraphic.Create;
  GR:=QR.Picture.Graphic;
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Width:= QR.Width;
    Bitmap.Height:= QR.Width;
    Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,GR);

    jpg := TJPEGImage.Create;
    jpg.Assign(Bitmap);
    Stream:=tmemorystream.Create;
    jpg.SaveToStream(Stream);
  finally
    Result:=Stream;
    Bitmap.Free;
    Jpg.Free;
//    Stream.Free;
  end;
end;


En la que la llamo con el texto del QR y me devuelve un stream con la imagen. Hasta aquí todo bien.


El problema es si le hago un "Free" a la variable Stream que previamente he creado, he asignado y luego he igualado "Result" a ella. Si hago el "Free" me da un error y si lo quito funciona bien pero no sé si eso irá consumiendo memoria en cada llamada hasta el infinito y más allá.


Alguien me podría decir si no hago el "Free" tendré problemas de memoria o si se libera solo de alguna manera, o en caso contrario, cómo puedo liberarlo sin que me de error.


Gracias y un saludo.
__________________
Be water my friend.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Stream webcam walito API de Windows 2 27-04-2010 15:21:57
MD5 de un Stream. JXJ Varios 3 03-10-2007 18:52:40
Stream a TImage eframtz Gráficos 4 20-04-2007 04:55:06
Puntero a Stream Enan0 Varios 3 22-03-2005 22:08:13
Optener un Stream como "Result" en una funcion sitrico Varios 3 24-11-2004 22:06:38


La franja horaria es GMT +2. Ahora son las 15:44:20.


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