IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Free Pascal Discussion :

Imprimer du texte


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Par défaut Imprimer du texte
    Je cherche maintenant à imprimer directement à partir de mon programme une liste de coup pour faciliter mes vérifications de coups valides, mais j'ai cru comprendre qu'on ne pouvait pas imprimer sur une imprimante USB en Pascal, les instructions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USE crt;
     
    Writeln(lst, 'Imprime moi...');

    ne marche pas, y a t-il une autre solution à part celle de créer un fichier texte et de l'imprimer dans le bloc note ?

    Merci

  2. #2
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Bonjour,

    Citation Envoyé par glegat Voir le message
    j'ai cru comprendre qu'on ne pouvait pas imprimer sur une imprimante USB en Pascal
    Imprimante USB ou non, cela ne change rien à l'affaire.

    Voici par exemple comment imprimer depuis Lazarus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    procedure TMainForm.FilePrintExecute(Sender: TObject);
    // *** impression ***
    var
      LPrinter: TPrinter;
      Li, Lline: Integer;
      LV: Integer;
    begin
      LPrinter := Printer;
      LPrinter.Title := EditorForm.Caption; // titre de la fiche (ici EditorForm) comme titre du document - facultatif
      try
        LPrinter.BeginDoc; // on imprime...
        LPrinter.Canvas.Font.Name := 'Arial'; // impression dans le canevas
        LPrinter.Canvas.Font.Size := 12;
        LPrinter.Canvas.Font.Color := clBlack;
        LV := 4 * Round(1.2 * Abs(LPrinter.Canvas.TextHeight('I'))); // taille verticale d'une lettre "haute"
        LLine := 0; // compteur de ligne en cours
        for Li := 0 to (EditorForm.SynEditEditor.Lines.Count - 1) do // lignes à imprimer extraites d'un composant SynEdit (par exemple)
        begin
          Inc(LLine);
          LPrinter.Canvas.TextOut(100 , LV + 120 * (LLine - 1),  // écriture à 100 pixels du bord et en tenant compte de la hauteur du texte
            EditorForm.SynEditEditor.Lines[Li]);
          if (Li mod 50) = 0 then // saut de page toutes les cinquante lignes
          begin
            LPrinter.NewPage; // saut de page
            LLine := 0;
          end;
        end;
      finally
        LPrinter.EndDoc; // fin d'impression
      end;
    end;
    La classe TPrinter figure dans l'unité Printers.
    Mais je ne sais pas ce que vous utilisez comme Pascal...

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  3. #3
    Membre confirmé
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Par défaut Unité Printers
    La classe TPrinter figure dans l'unité Printers.
    Mais je ne sais pas ce que vous utilisez comme Pascal...
    Merci pour votre code. Je me suis empressé de l'essayer, mais j'utilise Free Pascal (compilateur version 2.6.4) et l'unité printers que vous utilisez dans votre code n'est pas présente dans free Pascal. Y a t-il une autre solution ?

    Gérard

  4. #4
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par glegat Voir le message
    Merci pour votre code. Je me suis empressé de l'essayer, mais j'utilise Free Pascal (compilateur version 2.6.4) et l'unité printers que vous utilisez dans votre code n'est pas présente dans free Pascal. Y a t-il une autre solution ?

    Gérard
    Dans ce cas, il faut utiliser l'unité printer de Free Pascal qui fournit les fonctionnalités de base d'une impression (texte uniquement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    program testprn;
     
    uses printer; // existe pour Free Pascal
     
    var i : integer;
        f : text;
     
    begin
      writeln ('Test de l''unité PRINTER');
      writeln ('On imprime...');
     
    // impression "classique"
      for i:=1 to 80 do writeln (lst,'Voici la ligne : ',i,'.'#13);
      close (lst);
      writeln ('Impression terminée.');
     
      {$ifdef Unix}
      writeln ('Impression dans un "pipe"...');
      assignlst (f,'|/usr/bin/lpr -m');
      rewrite (f);
      for i:=1 to 80 do writeln (f,'Voici la ligne : ',i,'.'#13);
      close (f);
      writeln ('Impression terminée.')
      {$endif}
    end.
    C'est rustique, mais ça devrait fonctionner...
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  5. #5
    Membre confirmé
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Par défaut
    Encore merci, effectivement l'unite printer existe dans Free Pascal, la compilation est acceptée, mais à l'exécution j'obtiens un runtime error 103 et rien ne s'imprime.

    Je ne suis pas un spécialiste (je me remets depuis quelques jours à la programmation après une interruption de plusieurs années) mais je croyais que Free Pascal était encore utilisé aujourd'hui par des développeurs, il doit bien y avoir un moyen de lancer une impression !

    Je vais continuer mes recherches, merci de votre aide.

    Gérard.

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 167
    Billets dans le blog
    9
    Par défaut
    Bonsoir ! J'ai trouvé ce code. Je ne peux pas le tester, parce que je n'ai pas d'imprimante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
      ShellAPI, Windows;
     
    begin
      ShellExecute(0, 'print', 'C:\MonDossier\MonDocument.odt', nil, nil, SW_HIDE) ;
    end.

  7. #7
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par glegat Voir le message
    je croyais que Free Pascal était encore utilisé aujourd'hui par des développeurs
    Bien sûr ! Lazarus n'est qu'une surcouche de Free Pascal... Par conséquent, Lazarus utilise le compilateur Free Pascal. Il présente simplement l'avantage d'offrir une synthèse des éléments que le programmeur Free Pascal devra rassembler lui-même (d'où la difficulté à réaliser des tâches aussi simples qu'imprimer un texte). En contrepartie, il impose (en partie) un cadre assez contraignant avec le concepteur de fiches du style Delphi.

    Sinon, l'erreur 103 indique que le fichier n'est pas ouvert. Soit il s'agit du fichier lu pour être imprimé, soit on tente d'écrire sur l'imprimante sans que le "fichier" d'impression ne soit ouvert... Je vais essayer pour voir...

    Bon courage !
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

Discussions similaires

  1. [Batch] Imprimer un texte
    Par Invité dans le forum Windows
    Réponses: 5
    Dernier message: 01/09/2006, 15h17
  2. [VB.Net] Imprimer un texte
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/01/2006, 18h55
  3. [Print]Comment imprimer le texte d'une Jframe???
    Par greg3105 dans le forum Général Java
    Réponses: 4
    Dernier message: 03/04/2005, 19h47
  4. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15
  5. Imprimer fichier texte
    Par Freeze dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo