![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать файла в DOS кодировке [D5, WinXP]
Steplerr © (2006-05-16 15:09:00)Исходный файл в досовской cp866 кодировке, мне его нужно распечатать на лазерном принтере. Сам сделать немогу - выходит лажа. Буду премного благодарен, если в ответ получу готовую процедуру, а не ссылку на Canvas.
Steplerr (2006-05-16 18:22:00) [1]Проблему смены кодировок решил так:
function Dos2Win(p:string):string;
var tmpa,tmpb:PChar;
begin
tmpa:=PChar(p); tmpb:=PChar(p);
OemToChar(tmpa,tmpb);
Dos2Win:=String(tmpb);
end;
Потом построчно обрабатывал файл и выводил на печать через Printer.Canvas.TextOut.
Всем большое спасибо. Программа написана. Тема закрыта.
Desdechado (2006-05-16 16:54:00) [2]> Очень богата и содержательна справка
достаточно для того, чтоб понять, что буфер должен быть выделен
lpszSrc - Points to a null-terminated string of characters from the OEM-defined character set.
lpszDst - Points to the buffer for the translated string.
Steplerr (2006-05-16 16:47:00) [3]Очень богата и содержательна справка в Delphi 5 по OEMtoChar;-)
Ну хоть скажите какие переменные использовать (чего в var писать) чтобы не вылетала ошибка.
Desdechado (2006-05-16 16:41:00) [4]может, удосужишься почитать справку по OEMtoChar
Steplerr (2006-05-16 16:35:00) [5]При выполнении такой конструкции:
OEMtoChar(PChar(Edit1.Text),PChar(Edit2.Text));
Windows вылетает в ошибку:
Access violation at address 77D5ED16 in module 'user32.dll'. Write of address 00403D11.
Если не трудно напишите конструкцию для перегона одного файла из OEM в ANSI с возможностю построчной обработки (можно посимвольной).
Elen (2006-05-16 16:09:00) [6]Добавь модуль Windows
или напиши windows.OemToChar(...)
А вообще это функция API
Steplerr (2006-05-16 16:06:00) [7]Припопытке компилировать программу с OEMtoChar Delphi выкидывает ошибку:
[Error] obr.dpr(52): Undeclared identifier: 'OEMtoChar'
Думаю что-то нужно прописать в Uses, но в справке Delphi ничего про это не написано.
Desdechado (2006-05-16 15:52:00) [8]OemToChar
и просто выводить в файл с имененм PRN
или использовать переменную Printer
Steplerr (2006-05-16 15:24:00) [9]Что прекодировать надо я уже понял! Вопрос - как??? И потом как распечатать (никогда не писал проги использующие принтер) - пробовал Canvas'ом не понравилось (хотя может не так ползовался).
Amoeba (2006-05-16 15:11:00) [10]Перекодировывай текст, выдаваемый на печать из OEM кодировки в ANSI. Лазерный принтер не обязан понимать cp866.