Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QuickReport Discussion :

Impression réseau sous Citrix : "Divsion par zéro"


Sujet :

QuickReport

  1. #1
    Nouveau membre du Club
    Impression réseau sous Citrix : "Divsion par zéro"
    Bonjour,
    Notre appli est sous Delphi 2009, avec QuickReport 5.05.2

    Un client l'exploite sous citrix tant avec des terminaux légers Wyse et que des PC Win XP.
    Les imprimantes connues par l'application dans ce contexte sont : celles déclarées sur le serveur Windows + celles des postes clients remontées dans la session (locales ou réseau).
    Quand l'imprimante choisie est une imprimante réseau (pointée sur un serveur d'impression par le PC client), nous la voyons bien dans la session d'exécution de l'appli : Client\Pxxx#////impsrv/IMPRIMANTE1.

    Nous sommes capable d'y faire de impressions directes (via l'objet Printer sa propriété Canvas et ses méthodes BeginDoc/EndDoc).
    Par contre, dès que l'on tente l'impression d'un état QuickReport, on obtient le message : "division par zero en virgule flottante" sur l'évênement OnPrint

    L'aperçu fonctionne correctement, par contre, on se retourve avec 1 seule page, vierge, envoyée au spooler d'impression.

    J'ai cherché les divisions dans les sources et ai prévenu l'erreur concernant les variables Size et Resolution (if <>0...) sans succès

    Quelqu'un a été confronté à ce problème ?
    Il y a-t-il une précaution à prendre dans mon code, unecorrection à faire dans QuickReport ?? Je n'ai pas trouvé d'update.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Bonjour,

    Quelqu'un a été confronté à ce problème ?
    OUI, mais cela fait très longtemps que je n'utilise plus Quickreport (sauf mes vieux programmes) et encore moins dans un environnement aussi complexe!
    La division par zéro en virgule flottante était souvent due à un manque de déclaration d'imprimante sur le poste (mais ce doit pas être le cas)

    Il y a-t-il une précaution à prendre dans mon code, une correction à faire dans QuickReport ?
    j'ai également eu un problème avec la version 3 et l'arrivée de windows vista avec le déplacement des fichiers du spouleur dans des dossiers au nom trop longs (je n'ai pas retrouvé le post à ce sujet, ni ne me souviens de comment j'ai contourné le problème : un déplacement du spouleur je crois à moins que ce soit dans QRPTprn.pas) mais je crois que l'erreur était plutôt 'metafichier incorrect'

    une question cependant : si l'imprimante Client\Pxxx#////impsrv/IMPRIMANTE1. est l'imprimante définie par défaut est-ce que l'impression fonctionne ?
    une remarque : il s'agit de D2009 donc Unicode mais la version de Quickreport l'est-elle bien ? (le changement des Strings de ANSIString à WideString est-il bien correct ?)
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Nouveau membre du Club
    Bonjour,

    merci pour cette réponse, Sergio,

    Citation Envoyé par SergioMaster Voir le message

    La division par zéro en virgule flottante était souvent due à un manque de déclaration d'imprimante sur le poste (mais ce doit pas être le cas)
    Le serveur n'a en efet à ma connaissance aucune imprimante déclarée localement, ce sont celles du poste client qui y sont remontées (et sans doute même dans le cadre du gestionnaire d'impressions Citrix)

    Citation Envoyé par SergioMaster Voir le message

    une question cependant : si l'imprimante Client\Pxxx#////impsrv/IMPRIMANTE1. est l'imprimante définie par défaut est-ce que l'impression fonctionne ?)
    L'imprimante sélectionnée dans l'application est systématiquement forcée comme imprimante par défaut avant tout début de job d'impression ; pour en récupérer les caractéristiques de support d'impression (A4 et non étiquette) par exemple, celà nous a semblé incontournable avec Delphi.
    Pour celà, on appelle printer.getprinter, éventuellement GetProfileString, puis printer.setprinter, éventuellement WriteProfileString
    J'aurai peut-être interêt à proposer un programme test sans toute cette démarche élaborée au fil de l'évolution de notre appli.

    Citation Envoyé par SergioMaster Voir le message

    une remarque : il s'agit de D2009 donc Unicode mais la version de Quickreport l'est-elle bien ? (le changement des Strings de ANSIString à WideString est-il bien correct ?)
    Oui, nous avons dû adapter l'ensemble qui tourne bien sous client riche

  4. #4
    Rédacteur/Modérateur

    Citation Envoyé par joue l'autre Voir le message

    L'imprimante sélectionnée dans l'application est systématiquement forcée comme imprimante par défaut avant tout début de job d'impression ; pour en récupérer les caractéristiques de support d'impression (A4 et non étiquette) par exemple, cela nous a semblé incontournable avec Delphi.
    étrange, perso je passe (ou plutôt passais) par
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Quickrep1.PinterSettings.PrinterIndex:=Printer.PrinterIndex

    après un PrintDialog.Execute (ou printersetupdialog.Execute

    Quant à la récupération des caractéristiques je me souviens déjà avoir mis du code sur ce forum (une petite recherche avec les mots clés "bacs" ou "bin" devrait donner la discussion)


    J'aurai peut-être intérêt à proposer un programme test sans toute cette démarche élaborée au fil de l'évolution de notre appli.
    bonne idée ! sans avoir à changer l'imprimante par défaut c'est mieux
    1 Quickrep bidon , 1 PrintDialog c'est loin d'être un programme difficile
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Nouveau membre du Club
    problème réglé
    Le programme test a permi de reproduire l'erreur et de le résoudre par l'environnement : mise à jour du pilote d'impresion.
    Merci !