Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   im Netzwerk Drucker auswählen ? (https://www.delphipraxis.net/43161-im-netzwerk-drucker-auswaehlen.html)

Hansa 30. Mär 2005 00:46


im Netzwerk Drucker auswählen ?
 
Hi,

ich muß verschiedene Drucker ansteuern. Deshalb gibt es einen PrintDialog. Nun habe ich hier einen Nadeldrucker Epson LQ-870. Der hängt am Server.

Delphi-Quellcode:
  if dlgDrucker.Execute then begin
    DruckerName := Printer.Printers [Printer.PrinterIndex];
showmessage ('*'+Druckername+'*');
    AssignFile (d,DruckerName);
    rewrite (d);
    showmessage ('aktiver Drucker ab jetzt : '+Printer.Printers [Printer.PrinterIndex]);
    StatusBar.SimpleText := 'Drucker : '+DruckerName;
  end;
Leider druckt der nichts. Im PrintDialog ist er allerdings aufgeführt. Wo liegt der Fehler ? Ich habe den Freigabenamen im Verdacht. 8)

runger 30. Mär 2005 06:13

Re: im Netzwerk Drucker auswählen ?
 
Hallo,

kannst du aus der normalen Betriebssystemumgebung mit diesem Printer drucken?
Freigabename kriegst du raus indem du Start-->Einstellungen-->Drucker dann den betreffenden Drucker auswählst. Rechte Maustaste-->Eigenschaften-->Freigabe.
Dort steht dann der Freigabename. Vergleiche den mit dem Namen der dir zur Auswahl angeboten wird.
Wenn der Drucker ein Netzwerkdrucker ist (was du ja sagst) solltest du ihn anpingen können.

Rainer

runger 30. Mär 2005 06:22

Re: im Netzwerk Drucker auswählen ?
 
Hallo,

bei mir funktioniert das so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var druckername:string;d:textfile;
begin
if dlgDrucker.Execute then begin
    DruckerName := Printer.Printers [Printer.PrinterIndex];
    showmessage ('*'+Druckername+'*');
    AssignFile (d,DruckerName);
    rewrite (d);
    writeln(d,'Test');
    closefile(d);
    showmessage ('aktiver Drucker ab jetzt : '+Printer.Printers [Printer.PrinterIndex]);
    StatusBar.SimpleText := 'Drucker : '+DruckerName;
  end;
end;
Rainer

Hansa 30. Mär 2005 12:29

Re: im Netzwerk Drucker auswählen ?
 
Du meinst das CloseFile ? Geht auch nicht. Ging das bei dir auch im Netzwerk ? Momentan wäre folgende Frage wichtig : muß im AssignFile der komplette Name des Druckers rein oder der abgekürzte Freigabename ?

kiar 30. Mär 2005 12:35

Re: im Netzwerk Drucker auswählen ?
 
hallo hansa,

siehst du denn den netzwerkdrucker?

Hansa 30. Mär 2005 12:37

Re: im Netzwerk Drucker auswählen ?
 
Ich bin doch nicht blöd. :mrgreen:

kiar 30. Mär 2005 13:04

Re: im Netzwerk Drucker auswählen ?
 
hallo blinder :mrgreen:

Zitat:

siehst du denn den netzwerkdrucker?
nicht visuell sondern in deiner Message :shock:

also folgendes funktioniert bei mir problemlos:
Delphi-Quellcode:

var
    DruckerName:String;
    f:TextFile;
begin
    if PrintDialog1.Execute then
    begin
       DruckerName := Printer.Printers [Printer.PrinterIndex];
       showmessage ('*'+DruckerName+'*');
       AssignFile (f, 'DruckerName');
       rewrite(f);
       showmessage ('aktiver Drucker ab jetzt : '+Printer.Printers [Printer.PrinterIndex]);
       StatusBar1.SimpleText := 'Drucker : '+ DruckerName;
    end;
end;
raik

Hansa 30. Mär 2005 20:47

Re: im Netzwerk Drucker auswählen ?
 
Folgendes Ergebnis : der Drucker muß so angesprochern werden :

\\<Servername>\<Druckername>

Womit allerdings das nächste Problem auftaucht : der Druckername ist nicht etwa der vollständige Name des Druckers, so wie er in den Einstellungen zu sehen ist, sondern der Freigabename im Netzwerk (also 8 Zeichen).

Deshalb stellt sich jetzt die Frage wie ich mit dem Printdialog den Drucker auswählen kann, gleichzeitig aber auch den entsprechenden Freigabenamen im Netzwerk an mein Programm zurückliefere. 8) Mit dem Namen alleine kommt das nämlich nicht zurecht.

Hansa 23. Aug 2005 00:58

Re: im Netzwerk Drucker auswählen ?
 
24 St. rum ? Also Push. :mrgreen:

Zitat:

Zitat von Hansa
...Momentan wäre folgende Frage wichtig : muß im AssignFile der komplette Name des Druckers rein oder der abgekürzte Freigabename ?

Wer weiß jetzt was genaues zu dem Thema ? Momentan wird gar nichts gedruckt. 8)

ringli 23. Aug 2005 06:03

Re: im Netzwerk Drucker auswählen ?
 
Würde es etwas bringen wenn du den Netzwerkdrucker auf einen LPT-Port mappst?

BrunoT 23. Aug 2005 06:41

Re: im Netzwerk Drucker auswählen ?
 
Hi Hansa,

warum nimmst du nicht das Printer.Canvas?


Einfaches Drucken

mfg

BrunoT

marabu 23. Aug 2005 07:23

Re: im Netzwerk Drucker auswählen ?
 
Hallo Hansa,

nur um die Begriffe zu ordnen: ein Netzwerkdrucker hat eine IP-Adresse und ist erreichbar sobald er eingeschaltet ist. Ein im Netzwerk freigegebener Drucker hat einen Freigabenamen (die Empfehlung dessen Länge auf 8 zu begrenzen hat historische Gründe) und ist über eine Workstation erreichbar. Soweit die "andere" Seite. Auf dem Rechner, auf dem dein Druckprogramm läuft, muss der Drucker eingerichtet sein, egal ob Freigabename oder IP-Adresse. Wenn es Probleme gibt, dann kann es sich um ein Rechte-Problem handeln, oder du hast bei der Einbindung einen Fehler gemacht. Beschreibe mal präzise was du da so gemacht hast und vielleicht wird dir dabei schon selbst klar, was schief läuft.

Grüße vom marabu

PS: so alt wie dein thread ist - gibt es den Drucker überhaupt noch?

Hansa 23. Aug 2005 10:33

Re: im Netzwerk Drucker auswählen ?
 
Zitat:

Zitat von marabu
PS: so alt wie dein thread ist - gibt es den Drucker überhaupt noch?

Der Drucker ist neu, aber das Problem alt. Fehlermeldungen sind : 103, 53 oder 32. Finde nichts darüber, woran es liegt. Deshalb "Try and Error"-Modus. :mrgreen: Zur Zeit kommt Error 103, wobei der Freigabename (also 8 Zeichen) verwendet wird (in AssignFile). Mit Canvas usw. kann ich wohl nicht viel anfangen, da die Zieldrucker Nadeldrucker sind mit begrenztem Befehlssatz.

BrunoT 23. Aug 2005 10:53

Re: im Netzwerk Drucker auswählen ?
 
Hi Hansa,

Fehler 103 ist Datei-IO-Error :gruebel:
Code:
 
103   Datei nicht geöffnet   Wird von CloseFile, Read Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead oder BlockWrite gemeldet, wenn die Datei nicht geöffnet ist.
Öffne mal CMD und gib folgendes ein:

Code:
net view \\server
nun schau mal nach wie der Drucker heisst, und ob das Share da ist.
jetzt drucke über DOS:
Code:
dir c:\ >>\\server\Epson870
echo ^L >>\\server\Epson870
bitte für ^L -> Strg+L drücken(für Seitenvorschub).
Wenn da Fehlermeldungen kommen, liegt es an den Zugriffsrechten.

mfg


BrunoT

PS dieser Drucker ist grafikfähig und kann auch mit Canvas drucken. :lol:

shmia 23. Aug 2005 10:53

Re: im Netzwerk Drucker auswählen ?
 
Ich würde nicht versuchen, irgendwie an die Freigabe des Druckers heranzukommen, sondern den Windows Spooler beauftragen meine Daten zu übertragen.
http://www.delphipraxis.net/internal...ct.php?t=26846

Hansa 23. Aug 2005 11:09

Re: im Netzwerk Drucker auswählen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Fehlermeldungen kommen keine, sofern der Drucker so ausgewählt wird : \\+Rechnername+\+Freigabename (8 Zeichen). Kleiner Nachteil : es kommen nur leere Seiten. :shock:

P.S.: was soll das zuckersüße ? :mrgreen: Da will man mal zuerst den Anhang beifügen, um ihn nicht zu vergessen und kriegt von Gerome einen Rüffel. :lol:

Verdammt, jetzt geht Attachment nicht mal. :zwinker: Mal sehen, ob der Beitrag hier tatsächlich erscheint. 8)

BrunoT 23. Aug 2005 11:34

Re: im Netzwerk Drucker auswählen ?
 
und Hansa geht der DOS-Druck?

Hansa 23. Aug 2005 12:01

Re: im Netzwerk Drucker auswählen ?
 
DOS-Druck ? Habe ich übersprungen. :stupid: Es geht jetzt fast so wie gewünscht. Also mit AssignFile, writeln usw. Allerdings hat das Ganze immer noch den Schönheitsfehler, daß der Printdialog nutzlos ist. Es geht nur über Freigabename ! Damit könnte ich leben, dann muß eben eine INI-Datei her. Wenn es geht, irgendwie über den PrintDialog den Drucker auszuwählen und daraus den Freigabename zu ermitteln dann wäre es perfekt. 8)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz