Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Печать файла в DOS кодировке   Найти похожие ветки 

 
Steplerr ©   (2006-05-16 15:09) [0]

Исходный файл в досовской cp866 кодировке, мне его нужно распечатать на лазерном принтере. Сам сделать немогу - выходит лажа. Буду премного благодарен, если в ответ получу готовую процедуру, а не ссылку на Canvas.


 
Amoeba ©   (2006-05-16 15:11) [1]

Перекодировывай текст, выдаваемый на печать из OEM кодировки в ANSI. Лазерный принтер не обязан понимать cp866.


 
Steplerr ©   (2006-05-16 15:24) [2]

Что прекодировать надо я уже понял! Вопрос - как??? И потом как распечатать (никогда не писал проги использующие принтер) - пробовал Canvas"ом не понравилось (хотя может не так ползовался).


 
Desdechado ©   (2006-05-16 15:52) [3]

OemToChar
и просто выводить в файл с имененм PRN

или использовать переменную Printer


 
Steplerr ©   (2006-05-16 16:06) [4]

Припопытке компилировать программу с OEMtoChar Delphi выкидывает ошибку:
[Error] obr.dpr(52): Undeclared identifier: "OEMtoChar"
Думаю что-то нужно прописать в Uses, но в справке Delphi ничего про это не написано.


 
Elen ©   (2006-05-16 16:09) [5]

Добавь модуль Windows
или напиши windows.OemToChar(...)
А вообще это функция API


 
Steplerr ©   (2006-05-16 16:35) [6]

При выполнении такой конструкции:
OEMtoChar(PChar(Edit1.Text),PChar(Edit2.Text));

Windows вылетает в ошибку:
Access violation at address 77D5ED16 in module "user32.dll". Write of address 00403D11.

Если не трудно напишите конструкцию для перегона одного файла из OEM в ANSI с возможностю построчной обработки (можно посимвольной).


 
Desdechado ©   (2006-05-16 16:41) [7]

может, удосужишься почитать справку по OEMtoChar


 
Steplerr ©   (2006-05-16 16:47) [8]

Очень богата и содержательна справка в Delphi 5 по OEMtoChar;-)

Ну хоть скажите какие переменные использовать (чего в var писать) чтобы не вылетала ошибка.


 
Desdechado ©   (2006-05-16 16:54) [9]

> Очень богата и содержательна справка
достаточно для того, чтоб понять, что буфер должен быть выделен
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 18:22) [10]

Проблему смены кодировок решил так:

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.

Всем большое спасибо. Программа написана. Тема закрыта.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
3-1144644104
Scorpio
2006-04-10 08:41
2006.06.04
Поиск по нескольким БД


15-1147520526
LexxX
2006-05-13 15:42
2006.06.04
Восприятие музыки. Громкость


2-1147621441
wirg
2006-05-14 19:44
2006.06.04
Помогите с запросом


15-1147344034
Юрий Зотов
2006-05-11 14:40
2006.06.04
Звездные войны... :o)


3-1144911897
Оливка
2006-04-13 11:04
2006.06.04
Access violation in rtl70.bpl