Тема: Builder C++, RichEdit як встановити кодування windows-1251

Є в мене код для зчитування тексту з файлу в RichEdit, але проблема в тому що тест зчитується у невірному кодуванні.

RichEdit1->Lines->LoadFromFile (openTxtDlg1->FileName.Unique());//openTxtDlg1 - це TOpenDialog

Текст в кодуванні Windows-1251 (cp1251), а сам RichEdit має кодування UnicodeString (можливо воно зчитується в ASCII я невпевнений, але AnsiToUtf8 звичайно не допомагає)
Як конвертувати windows-1251 (cp1251) в UnicodeString, або як зчитати файл з кодуванням windows-1251 в RichEdit ?

2

Re: Builder C++, RichEdit як встановити кодування windows-1251

Щось таке:

TEncoding *encoding = new TEncoding();
encoding->CodePage = 1251;
RichEdit1->Lines->LoadFromFile( openTxtDlg1->FileName.Unique(), encoding );
delete encoding;
Подякували: Betterthanyou1

3 Востаннє редагувалося Betterthanyou (03.03.2016 22:12:58)

Re: Builder C++, RichEdit як встановити кодування windows-1251

Прихований текст

Builder каже що це абстрактний клас
E2352 Cannot create instance of abstract class 'TEncoding'

конструктор
public:
    /* TObject.Create */ inline __fastcall TEncoding(void) : System::TObject() { }

Я спробував зробити

TEncoding *Encoding = NULL;
Encoding->GetEncoding(1251);
RichEdit1->Lines->Encoding->GetEncoding(1251);
RichEdit1->Lines->LoadFromFile  (openTxtDlg1->FileName.Unique(),Encoding );
ShowMessage(RichEdit1->Lines->Encoding->CodePage);//перевірити кодування

але ShowMessage показує що кодування 1252, що ж не так ?

якщо спробувати через CodePage то помилка E2247 'TEncoding::CodePage' is not accessible

RichEdit1->Lines->Encoding->CodePage = 1251;

Вирішив

    RichEdit1->Lines->LoadFromFile  (openTxtDlg1->FileName.Unique(),TEncoding::GetEncoding(1251) );
Подякували: koala1