Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Titelzeile beim Ausdrucken programmieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 10.12.2012, 11:38    Titel: Titelzeile beim Ausdrucken programmieren Antworten mit Zitat

Hi Gemeinde!

Habe da eine kleine Programmfrage. Ich will eine Tabelle ausdrucken(ziemlich lange) und dadurch Platz sparen, dass ich über jede Spalte den Spaltennamen schreibe.
Diese Spaltennamen sollen auf jedem neuen Papierblatt als Zeile ausgedruckt werden.
Da ich gerne mit QBasic .txt-Dateien erzeuge und dort so schön Seitennummer und Filename autom. ausgedruckt werden, will ich das eben in die .txt-Dateien hineintun.

Bitte um Hilfe

Grüße aus dem Tauwetter


Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 107

BeitragVerfasst am: 10.12.2012, 16:00    Titel: Antworten mit Zitat

Code:
DIM spname AS STRING
DIM seite AS INTEGER
DIM maxze AS INTEGER
DIM i AS INTEGER
DIM x AS INTEGER

seite = 1
maxze = 55

spname = "Spalte1    Spalte2   spalte3"


'OPEN "lpt1" FOR OUTPUT AS #1
OPEN "ausgabe.txt" FOR OUTPUT AS #1

PRINT #1, spname
PRINT #1, STRING$(50, "_")
PRINT #1,
FOR i = 1 TO 200
   PRINT #1, "Zeile" + STR$(i)

   IF i MOD maxze = 0 THEN
      PRINT #1,
      PRINT #1,
      PRINT #1, SPACE$(60) + "Seite" + STR$(seite)
      PRINT #1, CHR$(12)
      PRINT #1, spname
      PRINT #1, STRING$(50, "_")
      PRINT #1,
      seite = seite + 1
   END IF
NEXT
x = i MOD maxze
IF x THEN
   FOR i = 1 TO maxze - x
      PRINT #1,
   NEXT
   PRINT #1, SPACE$(60) + "Seite" + STR$(seite)
END IF
CLOSE


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 10.12.2012, 16:28    Titel: Antworten mit Zitat

Hi HorstD:

Das ging ja richtig schnell! Danke!
Habe allerdings noch keine Ahnung, was dein Code so richtig macht und an welcher Stelle ich den einfügen soll.

-Ich erzeuge ja schon eine datei, kann also keinen weiteren open-Befehl gebrauchen.
-Verstehe noch nicht was die Variablen "seite" und "maxze" da bewirken.

Hast Du das aus einem bereits geschriebenen Programm rausgenommen?

Grüße

Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 10.12.2012, 17:12    Titel: Antworten mit Zitat

So wie ich das beim überfliegen sehe, ist "seite" die aktuelle Seitenzahl und "maxze" die maximale Zeilenzahl pro Seite. Das Programm schreibt dir die Daten formatiert in eine neue Datei - diese müsstest du dann nur noch regulär ausdrucken (dabei "maxze" anpassen), oder stattdessen OPEN "lpt" aktivieren, also Ausgabe direkt an den Drucker.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 10.12.2012, 19:09    Titel: Antworten mit Zitat

@HorstD:

-Ich weiß nicht, wieviele Zeilen ich erzeuge.
-IUch bestimme nicht den Seitenumbruch, sondern Wordpad.
-Nicht ich vergebe die Seitenzahlen, sondern Wordpad!
-WP schreibt auch den Dateinamen in die erste Zeile.
-Gibt es nicht eine Möglichkeit mittels einer Formatierungsanweisung das gleiche einfacher zu erreichen?

jedenfalls mal vielen Dank an Deine Adresse

Grüße Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 10.12.2012, 19:36    Titel: Antworten mit Zitat

Mach doch mal einen "Probeausdruck" - Druckvorschau reicht, dann siehst du, wie viele Zeilen reinpassen, bevor eine neue Seite beginnt. Nicht wirklich sauber, könnte aber funktionieren. Und wenn er die aktuelle Seitenzahl nicht dazu schreiben soll - lass sie einfach weg.

Ansonsten: http://www.freebasic-portal.de/befehlsreferenz/lprint-anweisung-349.html: LPRINT statt PRINT. Ungetestet, ob das auch wirklich in einem modernen Windowssystem funktioniert. happy Da steht dabei, wie du einen Seitenumbruch erzeugst.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 107

BeitragVerfasst am: 11.12.2012, 00:52    Titel: Antworten mit Zitat

Hier eine angepasste Version.
Wenn du damit nicht klarkommst, musst du deinen Code zeigen.

Code:

DIM spname AS STRING
DIM maxze AS INTEGER
DIM i AS INTEGER

maxze = 52   'Max. Zeilen deiner Tabelle pro Seite (evtl. anpassen)

spname = "Spalte1    Spalte2   spalte3"   ' Spaltenueberschrift (Beispiel)

OPEN "ausgabe.txt" FOR OUTPUT AS #1     'ausgabe.txt durch deinen Dateinamen ersetzen

PRINT #1, spname             'Spaltenueberschrift
PRINT #1, STRING$(50, "_")   'Strich (nur als Beispiel)
PRINT #1,                    'Leerzeile (nur als Beispiel)

FOR i = 1 TO 200                 'nur als Beispiel
   PRINT #1, "Zeile" + STR$(i)   'durch deine Tabellenzeilen ersetzen

   IF i MOD maxze = 0 THEN        'Wenn max. Zeilenanzahl erreicht, dann
     
      PRINT #1, CHR$(12)          'Seitenumbruch
      PRINT #1, spname            'Spaltenueberschrift
      PRINT #1, STRING$(50, "_")  'Strich
      PRINT #1,                   'Leerzeile
     
   END IF
NEXT

CLOSE

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz