PDA

Ver la Versión Completa : problemas de memoria con impresoras en terminal server


engranaje
20-06-2011, 12:18:28
No se me ha ocurrido una manera mejor que el título para intentar explicar los que me pasa. Se trata de una aplicacion desarrollada en delphi 2.0 que he tenido que modificar recientemente debido a que no imprimía en citrix. Tras los cambios ya he conseguido que me imprima tanto a traves del quickreport, como utilizando directamente la api para rellenar forumularios en papel preimpreso con impresoras matriciales.

En local no he tenido ningún problema sin embargo tanto en terminal server como en citrix me encuentro con violaciones de acceso repentinas y operaciones con puntero invalidas. No he conseguido un patrón exacto para reproducirlas, pero siempre se dan al imprimir y nunca la primera vez que se imprime, algunas veces es la segunda vez y otras a la 5º o 6º impresión.

Trazando los errores me encuentro con que algunas veces es el getprinter el que da una violación de acceso, otras el freemem que hago al pdevice (pchar con el nombre de la impresora), otras veces pasa sin problemas por todo el proceso y me da la violación de acceso al intentar escribir en una stringlist que uso a modo de log, o al escribir una linea en la impresora que al final llama a esta función:

function PrintRawData(hPrn : THandle;
Buffer : pointer;
NumBytes : SpoolInt) : integer;
{$IFDEF WIN32}
var
BytesWritten : DWORD;
{$ENDIF}
begin
if (NumBytes = 0) then
begin
Result := 1;
Exit;
end;
{$IFDEF WIN32}
if (WritePrinter(hPrn,
Buffer,
NumBytes,
BytesWritten) = FALSE) then
begin
Result := -1;
Exit;
end;
if (NumBytes <> BytesWritten) then
begin
Result := -1;
Exit;
end;
Result := 1;
{$ELSE}
result := WriteSpool(hPrn,
Buffer,
NumBytes);
{$ENDIF}
end;


El caso es que por mas que intento reproducir estos problemas en local no lo consigo.

ecfisa
20-06-2011, 13:07:32
Hola engranaje.

Por favor, cuando incluyas código Delphi encierra el mismo con las etiquetas para que sea más legible.

En este enlace se explica su uso: etiquetas vB (http://www.clubdelphi.com/foros/showthread.php?t=10004)


Saludos y muchas gracias