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

Delphi Discussion :

[Delphi] TextFile et Printer


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut [Delphi] TextFile et Printer


    voila, je voulais juste savoir si quelqu'un ne pouvait pas me donner un petit exemple sur "sending a text File to the Printer" (envoie d'un fichier texte à l'imprimante)

    je sais que je dios faire un code dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Procedure InitialisePriter;
    begin
     AssignPrn (FrintFile);
     Printer.canvas.Font.Name := 'Time New Roman';
     Printer.Canvas.Font.Size := 14;
    (etc...)
    end;
    si quelqu'un pouvait me donner un exemple concret ou un tutorial, ca m'aiderait pas mal



    FX

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    C'est du delphi ?

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    oeil,

    Ce n'est pas vraiment du Pascal, mais du Delphi.

    Je n'ai jamais utilisé une imprimante comme ça, mais après un petit coup d'oeil à la doc, voici où j'en suis.

    L'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    var f : text;
    ...
      AssignPrn(f);
    ...
    ne signifie pas "prend le fichier f (auquel tu aurais assigné un fichier réel existant sur ton disque) et imprime le",

    mais "je vais utiliser l'imprimante comme si j'écrivais dans un fichier texte, via la variable f"

    Petit programme minimal:
    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
    program tes_console;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils, Printers;
     
    var
      i : integer;
      var f : text;
    Begin
      AssignPrn(f);
      rewrite(f);
      Printer.Canvas.Font.Size := 24;
      for i:=1 to 10 do
        writeln(f,'i =',i:3);
      CloseFile(f);
     
      readln;
    end.
    Regarde le résultat sur ton imprimante, et constate:

    par défaut, il n'y a pas de marges (au sens large : gauche, droite, haut, bas), il faudra gérer tout cela, ce n'est pas difficile, mais je ne vois pas trop l'intérêt de faire tout ce travail pour imprimer un fichier texte, autant le faire via un simple éditeur de texte.

    Mais si tu y tiens, il faudra une deuxième variable de type "Text", qui te servira à lire le fichier en question, et faire une boucle qui devrait ressembler à ceci:
    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
     
    ...
    var
      s : string;
      fpr, fimp : text;
      { fpr = celui qui va servir pour AssignPrn,
        fimp = celui qu'on veut imprimer }
     
    ...
    { je suppose qu'arrivé ici, les initialisations sont toutes faites,
      y compris l'ouverture des fichiers, bref, tout ce qu'il faut }
     
      while not(eof(fimp)) do
      begin
        readln(fimp,s);
        writeln(fpr,s);
      end;
    ...
    { penser à fermer les fichiers ! }
    En espérant t'avoir été utile

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut
    ok

    J'ai trouvé un petit exemple dans un de mes boukin...

    Voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    uses SysTuils, Printers, Graphics;
     
    var PrintFile: TextFile;
     
    begin
      AssginPrn (PrintFile);
      Printer.canvas.font.name := 'Times New Roman';
      Printer.Canvas.font.size := 14;
      Printer.Canvas.Font.Style := [fsBold, fsItalic];
      Rewrite (PrintFile);
      Writeln (PrintFile, 'Hello');
      CloseFile (PrintFile);
    end;
    Je sais que mes questions sur les operations que je dois farie ne sont souvent pas tres tres logique mais je dois faire des operation bien précises pour ce project dont celle la par exemple.
    Je vais essayer de me debrouiller avec ca... merci comme même

    FX

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    hi,
    Citation Envoyé par braecking
    Je sais que mes questions sur les operations que je dois farie ne sont souvent pas tres tres logique mais je dois faire des operation bien précises pour ce project dont celle la par exemple.
    Je vais essayer de me debrouiller avec ca... merci comme même
    Qu'as-tu à faire précisément ? La solution à utiliser en dépend totalement (La Palisse, merci).

    L'impression en utilisant le Canvas de Printer est beaucoup plus souple que vouloir utiliser AssignPrn, à l'exception près qu'on ne peut pas utiliser write ou writeln, l'écriture se faisant alors avec Canvas.TextOut, ce qui implique de faire quelques calculs poour savoir où écrire (exemple, où est le début de la ligne suivante, compte tenu de la hauteur de celle qu'on vient d'écrire), mais ça n'a rien de compliqué, et quand on l'a fait une fois, c'est pratiquement du copier/coller pour plus tard, et, en utilisant le même code sur le Canvas d'une fenêtre, tu peux visualiser ce que sera le résultat (en simplifiant quelque peu).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut
    ok j'ai réussi, c'a marche sans probleme... suvit lexemple que j'avait et j'ai adapté

    quand meme

    FX

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 09h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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