Друк файлу в dos кодуванні

Друк файлу в DOS кодуванні

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

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

Що прекодіровать треба я вже зрозумів! Питання - як. І потім як роздрукувати (ніколи не писав проги використовують принтер) - пробував Canvas "ом не сподобалося (хоча може не так ползоваться).

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

або використовувати змінну Printer

Пріпопитке компілювати програму з OEMtoChar Delphi викидає помилку:
[Error] obr.dpr (52): Undeclared identifier: "OEMtoChar"
Думаю щось потрібно прописати в Uses, але в довідці Delphi нічого про це не написано.

Додай модуль Windows
або напиши windows.OemToChar (.)
А взагалі це функція API

При виконанні такої конструкції:
OEMtoChar (PChar (Edit1.Text), PChar (Edit2.Text));

Windows вилітає в помилку:
Access violation at address 77D5ED16 in module "user32.dll". Write of address 00403D11.

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

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

Дуже багата і змістовна довідка в Delphi 5 по OEMtoChar ;-)

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

> Дуже багата і змістовна довідка
досить для того, щоб зрозуміти, що буфер повинен бути виділений
lpszSrc - Points to a null-terminated string of characters from the OEM-defined character set.
lpszDst - Points to the buffer for the translated string.

Проблему зміни кодувань вирішив так:

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.

Усім дуже дякую. Програма написана. Тема закрита.

Схожі статті