procedure TForm1.Button1Click(Sender: TObject);
var
lst: TextFile;
sc: Integer;
begin//Printer.Orientation:=poPortraite
AssignFile(lst,'prn');
Rewrite(lst);
sc:=0;
for sc:=0 to RichEdit1.Lines.Count-1 do
writeln(lst,StrToOem(RichEdit1.Lines[sc]));
System.CloseFile(lst);
end;
Here's the translation of the text into Russian:
Код, предоставленный ниже, это процедура, которая печатает содержимое RichEdit-контрола в файл с именем 'prn', когда кнопка на форме кликается.
Разбиваем код на части:
Printer.Orientation:=poPortrait: эта строка устанавливает ориентацию принтера в портретном режиме, но она комментирована в оригинальном коде, поэтому это не будет выполнено.
AssignFile(lst,'prn'); и Rewrite(lst);: эти строки открывают файл с именем 'prn' для записи.
sc:=0;: эта строка инициализирует переменную sc в 0.
Цикл for проходит по каждой строке RichEdit-контрола (от индекса 0 до последней строки) и пишет эту строку в файл с помощью writeln, с дополнительной конвертацией из Unicode-символов в OEM-символы с помощью StrToOem.
System.CloseFile(lst);: эта строка закрывает файл после того, как все строки будут написаны.
Однако, есть несколько проблем с этим кодом:
Файл 'prn' не закрываетсяproperly до тех пор, пока он не будет присвоен Rewrite() или даже открыт. Вы должны переместить AssignFile и Rewrite за пределы любого цикла.
Вам может потребоваться блок try/finally для обеспечения закрытия файла, даже если возникнет исключение.
Printer.Orientation:=poPortrait; будет выполнено только в том случае, если вы uncomment эту строку, но поскольку она не связана с печатанием RichEdit-контрола, она не кажется, что принадлежит к этой процедуре.
Вот измененная версия вашего кода:
procedure TForm1.Button1Click(Sender: TObject);
var
lst: TextFile;
begin
AssignFile(lst, 'prn');
Rewrite(lst);
try
for sc := 0 to RichEdit1.Lines.Count - 1 do
writeln(lst, StrToOem(RichEdit1.Lines[sc]));
finally
CloseFile(lst);
end;
end;
Этот код будет печатать содержимое RichEdit-контрола в файл с именем 'prn', когда кнопка кликается. Он также обеспечивает закрытие файла, даже если возникнет исключение во время процесса записи.
Представлен пример кода на языке Delphi, который позволяет печатать содержимое RichEdit в файл 'prn' и затем выводить его на принтер с ориентацией portrait.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.