Форум: "Система";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
ВнизGetPrinter - получение имени порта принтера Найти похожие ветки
← →
olookin (2003-07-19 20:05) [0]Помогите воспользоваться GetPrinter. У меня работает вызов этой функции, и значение возвращается правильное, но при этом генерит Access violation.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
( "EPSON EPL-5900L Advanced",h,0) Помогите воспользоваться GetPrinter. У меня работает вызов этой функции, и значение возвращается правильное, но при этом генерит Access violation.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
x,d: dword;
begin
d:=0;
if OpenPrinter("EPSON EPL-5900L Advanced",h,0) then begin
if not GetPrinter(h,5,0,0,@d) then begin x:=d;
if not GetPrinter(h,5,@pf,x,@d) then showmessage("itsnogood") else
showmessage(pf.pPortName);
end;
при выходе из процедуры генерит ошибку
Буду признателен за помощь....
И еще - просьба TPrinter.GetPrinter не предлагать - там не возвращается имя порта - сам проверял (на D5).
← →
olookin (2003-07-19 20:35) [1]Пожалуйста помогите....
← →
Marser (2003-07-20 00:00) [2]Значит, с TPrinter не сложилось? Зря, хелп читать нужно, это развивает. Как сделал бы я:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
( tp.printers[i]) Значит, с TPrinter не сложилось? Зря, хелп читать нужно, это развивает. Как сделал бы я:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
I:byte;
begin
tp:=printer;
for I:=0 to tp.printers.count-1 do
memo1.lines.add(tp.printers[i])
end;
У меня выдает:
EPSON Stylus COLOR 680 on LPT1:
И никаких ошибок
P.S. А что такое PRINTER_INFO_5? Предупредил бы хоть о левых компонентах...
← →
olookin (2003-07-20 03:34) [3]to Marser - а ты поясни что имеено у тебя выдает строку:
EPSON Stylus COLOR 680 on LPT1:
Что? tp.printers[i] что ли?
← →
olookin (2003-07-20 03:38) [4]И еще - предположим вы правы...... Так мне что - выцеплять строку с именем порта принтера отдельно? Не глупо ли это? Т.е. выдирать из "Printer Lalala Lpt:11111" и мне значит надо имя порта из строки выдирать?
← →
Alex Konshin (2003-07-20 08:46) [5]Зачем тебе нужно знать имя порта?
Это тебе случайно не для того, чтобы получить handle принтера?
Вот посмотри сюда:
http://home.earthlink.net/~akonshin/files/PrintLib.pas
Это мое добавление для юнита Printers. Хак, но до сих пор работает на ура.
Посмотри внимательнее, там все, что тебе нужно есть.
← →
Marser (2003-07-20 10:00) [6]
> olookin © (20.07.03 03:34)
Вот именно Tp.printers[n] и выдает(хелп читать надо). А выдрать несложно - было бы желание. Вот модифицированный код:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
I,p:byte;
begin
tp:=printer;
for I:=0 to tp.printers.count-1 do
begin
memo1.lines.add(tp.printers[i]);
P:=pos(" on ",tp.printers[i]);
listbox1.items.add(copy(tp.printers[i],p+4,length(tp.printers[i])-(p-4)));
end;
end;
← →
Alex Konshin (2003-07-20 12:58) [7]А выдирать и не надо, смотри мой код.
← →
olookin (2003-07-20 13:56) [8]to Marser - или у меня что-то в системе или в дельфях не то, или ты ошибся... Прямо твой код использую и получаю ТОЛЬКО имена принтеров, а портов и в помине нет....
← →
olookin (2003-07-20 13:57) [9]to Alex Konshin - мне именно имя порта через полученный хэндл принтера. Хэндл получать я и сам могу...
← →
olookin (2003-07-20 13:58) [10]to Marser - и еще - у меня 5-я дельфа....
← →
Marser (2003-07-20 21:52) [11]
> olookin © (20.07.03 13:58)
> to Marser - и еще - у меня 5-я дельфа....
У меня тоже, а свои примеры я предварительно тестирую. Видимо, что-то не то в системе... А что за принтер?
> Alex Konshin © (20.07.03 12:58)
> А выдирать и не надо, смотри мой код.
Посмотрю обязательно.
← →
Alex Konshin (2003-07-20 22:38) [12]Я же говорю, посмотри внимательнее
PortName := THackPrinterDevice(oPrinter.Printers.Objects[idx]).FPort;
← →
olookin (2003-07-21 10:17) [13]to Alex Konshin - такая же история, возвращает имя принтера но не возвращает имя порта. Похоже причина в том, что я использую Win2000. Как говорит Marser - у него в Win98 все нормально работает.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c