Hallo skyobserver,
probier mal bitte folgendes, um die Beschränkung der
RFC 1179 zu umgehen:
Delphi-Quellcode:
IdLPR1.Host := '
brn_906b9b';
IdLPR1.Queue := '
BINARY_P1';
IdLPR1.BoundPortMin := 512;
IdLPR1.BoundPortMax := 1024;
IdLPR1.BoundPort := IdLPR1.BoundPortMin;
while (
not IdLPR1.Connected)
and (IdLPR1.BoundPort <= IdLPR1.BoundPortMax)
do
begin
try
IdLPR1.Connect;
except
On E: EIdSocketError
do
begin
if E.LastError = 10048
then // Socket already in use...
IdLPR1.BoundPort := IdLPR1.BoundPort + 1
else
raise;
end;
On E:
Exception do
raise;
end;
end;
if IdLPR1.Connected
then
begin
IdLPR1.PrintFile('
D:\temp.prn');
IdLPR1.Disconnect;
end
else
ShowMessage('
Fehler beim Versenden des Printfiles');
Das ist zwar nicht schön und nicht schnell bei vielen Druckaufträgen, sollte aber funktionieren. Sobald dann die ersten Ports in der Range wieder frei werden (die 60-120 Sekunden), wird beim nächsten Auftrag wieder ein kleinerer Port genommen.
Eine Abbruchmöglichkeit und Fehlerprüfung solltest Du noch einbauen, aber Du hast schonmal eine Idee davon.
Edit: Die
Exception wirst Du in der
IDE trotzdem noch sehen, also bitte entsprechend steuern & testen.
Gruß Assertor