Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать файла в 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо