Главная страница
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.045 c
2-1148016114
Близнец
2006-05-19 09:21
2006.06.04
ShellExecuteEx и WaitForSingleObject


2-1146751850
DAn13
2006-05-04 18:10
2006.06.04
TreeView


3-1144697998
dyd
2006-04-10 23:39
2006.06.04
Почему не обновляется база данных


3-1144942221
{Alex}
2006-04-13 19:30
2006.06.04
Вывести запрост в Memo


5-1133311365
asdqwer
2005-11-30 03:42
2006.06.04
Динамическое присвоение метода компоненту в DLL