powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с печатью текста.
12 сообщений из 12, страница 1 из 1
Помогите с печатью текста.
    #33921053
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. есть код, который преобразовывает текст из WIN в DOS. Текст располагается в RichEdit1 по всей длине рускими - всё как надо! Зато на бумагу выводится текст каракулями (обратно кодировка WIN). Почему, объясните! Как исправить?
TStringList *dd = new TStringList();
char buf[1024];
dd->LoadFromFile("C:\\1.txt");
for(int i=0; i<dd->Count; i++)
{
OemToChar(dd->Strings .c_str(),buf);
RichEdit1->Font->Name="Courier";
RichEdit1->Lines->Add(buf);
}
RichEdit1->Print("C:\\1.txt");

2. есть ещё код, который без преобразования WIN->DOS выводит текст на бумагу на русском, но всё в 1 строку!
TPrinter *Prntr = Printer();
TextFile txt;
TRect r = Rect(1,1,Prntr->PageWidth,Prntr->PageHeight);
Prntr->BeginDoc();
Prntr->Canvas->TextOutA(1,1,RichEdit1->Lines->Text);
Prntr->EndDoc();

3. Пробовал ещё перенести текст на другую строку функцией fgets(), но не получается этот кусочек (3) слепить со кусочком (2).
FILE *f;
char s[50];
if((f=fopen("C:\\1.txt", "rt"))==NULL)
{
ShowMessage("Неудача");
}
fgets(s,80,f);
if(feof(f))
break;
if(s[strlen(s)-1]=='\n')
s[strlen(s)-1]=0;
//RichEdit1->Font->Name="Courier";
RichEdit1->Lines->Add(s);
}
while(true);
fclose(f);

Подскажите, плз!!!! Как вывести на бумагу текст по всей ширине рус буквами!!! Что исправить или что добавить в коде 1 или 2, или 3 ? Надо очень!!!!
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921188
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот источник ошибки: RichEdit1->Print("C:\\1.txt");
Ты печатаешь не конвертированый в RichEdit1 текст, а тот же самый оригинальный 1.txt
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921255
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал вот так:
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);
ошибок не выдает, в RichEdit текст отображается как надо, а на печать вообще ничего не идёт!!! Принтер не срабатывает, т.н. как бы не было команды печатать текст!
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921285
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дед МакарВот источник ошибки: RichEdit1->Print("C:\\1.txt");
Ты печатаешь не конвертированый в RichEdit1 текст, а тот же самый оригинальный 1.txt
Print печатает содержимое RichEdit, а параметр - это только название для задания печати.
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921294
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, по хорошему, я так думаю, должно быть так:
RichEdit1->Print(dd); Ошибка - разные типы. dd-TStringList, в Print( AnsiString )
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921301
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seeerg_23
Во втором варианте (с TextOut) можно печатать построчно.
Д/З - посмотреть в стандартной справке свойства TRichEdit и разобраться, как можно работать с каждой его строчкой отдельно.
Пользы будет больше, чем от получения прямого ответа на форуме.

Остальным - не подсказывать, разбалуете :)
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921306
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а попробуй просто у ричэдита поставить в свойсвах фонта чарсет не по дефолту а руссиан :)
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921312
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, плз, что сделать, где исправить либо что нужно добавить!!!
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33921730
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Почему эта строка ничего не выводит на принтер? Вроде правильно!!!
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);

2. Вот эта строка выводит текст на русском, но текст смещён влево - шрифт как бы не применяется!!!
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
Prntr->BeginDoc();
for( int i = 0; i < RichEdit1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(RichEdit1->Lines->Strings )),
RichEdit1->Lines->Strings);
RichEdit1->Font->Name="Courier";
Prntr->EndDoc();
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33922091
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seeerg_231. Почему эта строка ничего не выводит на принтер? Вроде правильно!!!
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);
Справка Обычная aka HelpFormats and prints the contents of the rich edit control.
virtual void __fastcall Print(const AnsiString Caption);
Description
Use Print to print the contents of a rich edit control. The Caption parameter specifies the title that appears in the print manager and on network title pages .

seeerg_23
2. Вот эта строка выводит текст на русском, но текст смещён влево - шрифт как бы не применяется!!!
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
Prntr->BeginDoc();
for( int i = 0; i < RichEdit1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(RichEdit1->Lines->Strings )),
RichEdit1->Lines->Strings);
RichEdit1->Font->Name="Courier";
Prntr->EndDoc();

Справка Обычная aka HelpWrites a string on the canvas, starting at the point (X,Y), and then updates the PenPos to the end of the string.

void __fastcall TextOut(int X, int Y, const AnsiString Text);

Description

Use TextOut to write a string onto the canvas. The string will be written using the current value of Font. Use the TextExtent method to determine the space occupied by the text in the image. To write only the text that fits within a clipping rectangle, use TextRect instead.

After a call to TextOut, the PenPos property indicates the point at the top right of the text on the canvas.
При чём тут RichEdit1->Font ?
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33922559
seeerg_23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TStringList *dd = new TStringList();
AnsiString kk;
Скажите, есть функция преобоазования типов TStringList к AnsiString и наоборот, чтобы kk=dd;
...
Рейтинг: 0 / 0
Помогите с печатью текста.
    #33922939
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dd->Text=kk;
и наоборот
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с печатью текста.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]