Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
bilta
Anmeldungsdatum: 23.01.2006 Beiträge: 7
|
Verfasst am: 25.01.2006, 19:25 Titel: Drucker Befehl 'LPRINT' bei FreeBasic |
|
|
Programm gibt eine Fehlermeldung aus beim Befehl LPRINT "Text".
Wo liegt der Fehler?
Gruss
Bilta |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 25.01.2006, 20:09 Titel: |
|
|
Ich hab schnell diesen Code Gebastelt:
Code: | LPRINT "Hallo Welt!"
LPRINT "Hallo Welt! 2"
LPRINT "Hallo Welt! 3" |
Bei mir Funktionierts (ich hab einen rund 10 Jahre alten Drucker, der noch an LPT 1 hängt, Freebasic 0.15)
Und ich bin nicht der einzige, siehe http://forum.qbasic.at/viewtopic.php?t=1877.
Hast du Freebasic 0.15?
changelog.txt hat Folgendes geschrieben: | Version 0.15 Beta:
...
[added]
...
- LPRINT support (mjs)
... |
Mit einer älteren Version geht es also gar nicht.
Sollte es immer nocht nicht gehen, kann das Interresant sein:
http://forum.qbasic.at/viewtopic.php?t=1473 _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 25.01.2006, 20:45 Titel: |
|
|
Also bei mir funktioniert's auch nicht.
Konfiguration:
- FB Version 0.15 stable
- Drucker: Brother HL-1430
- Anschluss über D-Link DP-300U Printserver
- Netzwerkdrucker als LPT1 verbunden
- OS: W2K
Scheinbar klappt das nur mit echten Druckern am LPT1. Von daher sollte man wohl besser die WinAPI verwenden, wenn auch USB- oder Netzwerkdrucker unterstützt werden sollen.  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
bilta
Anmeldungsdatum: 23.01.2006 Beiträge: 7
|
Verfasst am: 26.01.2006, 11:05 Titel: LPRINT |
|
|
Besten Dank für die verschiedenen Antworten.
Mein Drucker ist an LPT1 angeschlossen, aber ich verwende
FreeBasic 0.14!
Gibt es FreeBasic 0.15 schon in der deutschen Fassung?
Gruss |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 26.01.2006, 11:25 Titel: Re: LPRINT |
|
|
bilta hat Folgendes geschrieben: | ..aber ich verwende
FreeBasic 0.14!
Gibt es FreeBasic 0.15 schon in der deutschen Fassung? |
Wenn du FreeBasic 0.14 schon 'fertig hast', kannst du gerne mit der
Übersetzung von FreeBasic 0.15 beginnen
(Da FreeBasic 0.16 schon in den Startlöchern steht, solltest du dich aber beeilen..)
Es kann natürlich auch sein, daß ich dich mißverstanden habe
Im Klartext: Wie meinstn das ???
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
bilta
Anmeldungsdatum: 23.01.2006 Beiträge: 7
|
Verfasst am: 26.01.2006, 14:22 Titel: LPRINT |
|
|
Michael Frey fragte mich, ob ich FreeBasic 0.15 habe -
und weiter teilte er mir mit, 'mit einer älteren Version geht es also gar nicht'
Deshalb meine Antwort, dass ich FreeBasic 0.14 habe.
Du hast mich also wirklich missverstanden!
Gruss
Bilta |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 26.01.2006, 18:43 Titel: |
|
|
@bilta
Das war nur ein Witz von ytwinky.
(Meiner Meinung nach nicht alzu gelungen)
Nun im ernst:
Freebasic gibt es nur in Englisch, auch du hast im moment eine Normale, Englische Version vor dir.
Wahrscheinlich hast du Freebasic (so heisst nur der Compiler) mit der FBIde (das ist eine Entwicklungsumgebung, dort gibt man den Code ein) verwechselt.
Du kannst die Freebasic also ohne Probleme wechseln und die Oberfläche mit der du Programmierst (wahrscheinlich FBIde) bleibt auf Deutsch.
Hier der Links zur aktuellen Freebasic Version:
http://prdownloads.sourceforge.net/fbc/FreeBASIC-v0.15b-win32.exe?download _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
oldirty

Anmeldungsdatum: 04.08.2005 Beiträge: 65
|
Verfasst am: 26.01.2006, 19:39 Titel: |
|
|
Zwar nicht mit LPRINT aber fast genau so gut:
Hier mal ein Demo zum Drucken:
Es wird der Standard-Drucker ermittelt mir vorheriger Druckerauswahl
Über "open lpt "LPT:" + printer_name + ",EMU=TTY" as fo'+ doc_title2 as fo" wird er dann (Auch wenn an USB angeschlossen) identifiziert. Alle print #-Ausgaben werden dann an den Drucker geschickt.
Vielleicht hilfts ja weiter.
CU
OlDirty
Code: |
''
'' lineprt -- shows how to use GDI printers from FB using BASIC-only commands
''
#include "windows.bi"
screen 19
windowtitle "Druckdialog"
Dim As Any Ptr hwnd
hwnd = FindWindow( 0, "Druckdialog" ) 'Zeiger Finden über Fenstertitel
option explicit
option private
Declare Function apiGetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Declare Function fDefaultPrinter() As String
Dim as string printer_name, doc_title, doc_title2
Dim as integer fi, fo, erg
Dim as string zeile
Exec Environ$("windir") &"\\System32\\rundll32.exe",_
"shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder"
Erg = MessageBox (hwnd,"Standarddrucker gewählt?","Fertig?",_
MB_ICONQUESTION Or _
MB_OK Or _
MB_DEFBUTTON1 Or _
MB_TOPMOST)
printer_name=fDefaultPrinter() 'Druckername ermitteln
if len(printer_name)=0 then end 1
Erg = MessageBox (hwnd,"Druck starten?","Starten?",_
MB_ICONQUESTION Or _
MB_YESNO Or _
MB_DEFBUTTON1 Or _
MB_TOPMOST)
if erg=IDNO then
print "Druck abgebrochen"
print "Gewaehlter Drucker war: ";printer_name
sleep
end
end if
'line input "What's the documents title"; doc_title
'Demo-Text-Datei fuer den Ausdruck
doc_title="C:\temp\dat.txt"
if len(doc_title)>0 then
if instr(doc_title,",")>0 then
print "The document title must not contain a comma"
end 1
end if
doc_title2 = ",TITLE=" + doc_title
end if
print printer_name
print doc_title
print
fi=freefile
open doc_title for input as fi
fo=freefile
open lpt "LPT:" + printer_name + ",EMU=TTY" as fo'+ doc_title2 as fo
while eof(fi)<>-1
line input #fi,zeile
print zeile
print #fo,zeile
wend
'print #fo, "Hello World !"
'print #fo, chr$(12); ' start a new page
'print #fo, "I say ""Hello World !"" on page 2"
close fo
close fi
sleep
end
'******************************************************
Function fDefaultPrinter() As String
Dim strBuffer As String * 254
Dim lngReturn As Long
Dim strDefaultPrinter As String
lngReturn = apiGetProfileString("WINDOWS", "DEVICE", ",,,", _
strBuffer, _
Len(strBuffer))
fDefaultPrinter =Left$(strBuffer, InStr(strBuffer, ",") - 1)
End Function
|
|
|
Nach oben |
|
 |
bilta
Anmeldungsdatum: 23.01.2006 Beiträge: 7
|
Verfasst am: 26.01.2006, 20:03 Titel: LPRINT |
|
|
Herzlichsten Dank für die Aufklärung!
Ich werde mich offensichtlich intensiver mit der Materie auseinandersetzen
müssen.
Einen schönen Abend wünscht
Bilta |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
bilta
Anmeldungsdatum: 23.01.2006 Beiträge: 7
|
Verfasst am: 27.01.2006, 11:08 Titel: LPRINT |
|
|
@Michael Frey
Habe, wie von Dir vorgeschlagen, den Wechsel vorgenommen.
Jetzt funktionierts einwandfrei!
Nochmals besten Dank für alle Antworten. |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 27.01.2006, 20:48 Titel: |
|
|
Die API ist natürlich wesentlich bequemer, zumindest bietet sie mehr Features. Aber, der Vollständigkeit halber: Habt ihr denn auch alle brav die Ref gelesen?
Befehlsreferenz; LPRINT hat Folgendes geschrieben: | Einige Drucker beginnen mit dem Druckauftrag erst, wenn ein CHR(12) (End of Page)
gedruckt wird. |
Klartext:
Michael Frey's code sollte in dieser Form funktionieren:
Code: | LPRINT "Hallo Welt!"
LPRINT "Hallo Welt! 2"
LPRINT "Hallo Welt! 3"
LPRINT CHR(12) |
Have a nice day
Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
|