Ir al contenido



Foto

Problema en un TService con TMemoryStream


  • Por favor identifícate para responder
1 respuesta en este tema

#1 ArsenioLupin

ArsenioLupin

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 31 diciembre 2017 - 01:05

Hola a todos.

 

Estoy con un problema que realmente no se por donde puede venir y me esta volviendo loco.

 

Trabajo con Delphi XE sobre Windows 7. Hice un sistema para restaurantes y afines en los que, dependiendo el tipo de producto (bebida, comida, etc) y la zona donde se carga (piso del restaurante, etc) imprime por una impresora u otra. Y en cada impresora levanta el modelo de impresión configurado.

 

El código esta compartido con un servicio de impresión, que levanta los datos desde la base y ejecuta exactamente lo mismo. Funciona bien en impresoras locales, pero en impresoras compartidas en red funciona bien la aplicación directa, pero desde el servicio no, no da error, solo que imprime por la última impresora que se haya usado, por lo que creo que el problema esta en como levanta el modelo en sí.

 

Revisé debugueando el código, tanto de forma directa como desde el servicio, lo único que encuentro distinto es cuando crea dos TMemoryStream:


delphi
  1. mem := TMemoryStream.Create;
  2. StrStream := TStringStream.Create();

Como se puede ver en los adjuntos, cuando debugueo el servicio y veo ambas variables en el watch (MemVacio.jpg):

Mem_Vacio.jpg

no se ven los datos internos y cuando lo hago desde la aplicación directa se ven bien (MemDatos.jpg):

Mem_Datos.jpg

 

Quizás no sea solo esto, pero es lo único que logro encontrar, en el código, que este distinto.

 

Si es un tema de asignación de memoria o algo así, si a alguien se le ocurre algo para resolverlo, le agradecería MUCHO.

 

Quizás ayude, o no, que la impresión la hago con FastReport y para levantar el modelo y preparar la impresión hago:


delphi
  1. frxReport1.LoadFromStream(StrStream);
  2. frxReport1.PrintOptions.Copies := Copias;
  3. frxReport1.PrintOptions.Printer := Impresora;
  4. frxReport1.ReportOptions.CreateDate := Now;
  5. frxReport1.PrintOptions.ShowDialog := False;
  6.  
  7. frxReport1.ReportOptions.Name := Nombre;
  8. frxReport1.PrepareReport;
  9. frxReport1.Print;

Archivos adjuntos


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.280 mensajes
  • LocationRepública Dominicana

Escrito 19 enero 2018 - 01:44

Hola, ¿Y cómo creas y cargas el strSTream?.


  • 0