Вывод в контрол содежимого любого файла
От: AlexMarlo  
Дата: 31.01.10 20:01
Оценка:
вообщем надо вывести любой файл допустим в RichEdit(пока пытаюсь с ним но буду рад более удобному варианту)
файлы любые текстовые,запускаемые,мультмедиа
т.е. вывести текст файла как это делают просмотерщик коммандера или Notepad++
Re: Вывод в контрол содежимого любого файла
От: okman Беларусь https://searchinform.ru/
Дата: 31.01.10 21:15
Оценка:
Здравствуйте, AlexMarlo, Вы писали:

AM>вообщем надо вывести любой файл допустим в RichEdit(пока пытаюсь с ним но буду рад более удобному варианту)

AM>файлы любые текстовые,запускаемые,мультмедиа
AM>т.е. вывести текст файла как это делают просмотерщик коммандера или Notepad++

Не понимаю, в чем проблема — считываете файл в память, вызываете MultiByteToWideChar,
с заменой непечатных символов на любой подходящий знак и текст готов "к употреблению" RichEdit.
Re[2]: Вывод в контрол содежимого любого файла
От: AlexMarlo  
Дата: 31.01.10 21:35
Оценка:
O>Не понимаю, в чем проблема — считываете файл в память, вызываете MultiByteToWideChar,
O>с заменой непечатных символов на любой подходящий знак и текст готов "к употреблению" RichEdit.

RichEdit уже использую
MultiByteToWideChar зачем мне Юникод?
Re[3]: Вывод в контрол содежимого любого файла
От: alsemm Россия  
Дата: 31.01.10 21:40
Оценка:
Здравствуйте, AlexMarlo, Вы писали:

O>>Не понимаю, в чем проблема — считываете файл в память, вызываете MultiByteToWideChar,

O>>с заменой непечатных символов на любой подходящий знак и текст готов "к употреблению" RichEdit.

AM>RichEdit уже использую

AM>MultiByteToWideChar зачем мне Юникод?
Чтобы открывать файлы в разных кодировках.
Re[3]: Вывод в контрол содежимого любого файла
От: okman Беларусь https://searchinform.ru/
Дата: 31.01.10 23:24
Оценка: -1
Здравствуйте, AlexMarlo, Вы писали:

AM>RichEdit уже использую

AM>MultiByteToWideChar зачем мне Юникод?

Чтобы отображать бинарные файлы текстом.
С помощью MultiByteToWideChar можно быстро поменять все непечатные коды на вполне "удобоваримые".
Re[4]: Вывод в контрол содежимого любого файла
От: alsemm Россия  
Дата: 01.02.10 06:16
Оценка: +1 -1
Здравствуйте, okman, Вы писали:

O>Здравствуйте, AlexMarlo, Вы писали:


AM>>RichEdit уже использую

AM>>MultiByteToWideChar зачем мне Юникод?

O>Чтобы отображать бинарные файлы текстом.

Класс, а микроскопом гвозди можно забивать, потому что он тяжелый и железный как молоток.

O>С помощью MultiByteToWideChar можно быстро поменять все непечатные коды на вполне "удобоваримые".

В MultiByteToWideChar надо скормить кодировку исходного текста. Если данные бинарные, то какая у них кодировка? Например, если я захочу открыть gif файл в контроле, какую кодировку мне задать в MultiByteToWideChar?
И потом, что с этим счастьем делать, если надо файл редактировать?
Re[5]: Вывод в контрол содежимого любого файла
От: okman Беларусь https://searchinform.ru/
Дата: 01.02.10 06:32
Оценка:
Оффтопик.

Здравствуйте, alsemm.

Не понимаю Вашего сарказма.
Вы читали заголовок ?
"...Файлы любые текстовые,запускаемые,мультмедиа, т.е. вывести ТЕКСТ файла как это
делают просмотерщик коммандера или Notepad++...".
Если файл двоичный, его текст будет читаться не более приятно, чем Ваше сообщение.
Re: Вывод в контрол содежимого любого файла
От: AlexMarlo  
Дата: 01.02.10 06:56
Оценка:
Всё вроде разобрался без юникода))
Re[6]: Вывод в контрол содежимого любого файла
От: alsemm Россия  
Дата: 01.02.10 06:59
Оценка:
Здравствуйте, okman, Вы писали:

O>Если файл двоичный, его текст будет читаться не более приятно, чем Ваше сообщение.

Если файл двоичный, то зачем к нему вообще применять MultiByteToWideChar? Вы понимаете, что смысл MultiByteToWideChar — перевести текст из заданной байтовой кодировки в UTF16 (и то, начиная только с Windows2000, до этого только UCS2). Если вам кодировка исодного потока байт неизвестна, зачем применять MultiByteToWideChar? Тупого преобразования будет достаточно:

void makeRawUTF16(const char* str, unsigned len, std::vector<WCHAR>& out)
{
    out.clear();
    out.reserve(len);
    for (const char* estr = str + len; str != estr; ++str)
    {
        out.push_back(*str);
    }
}
Re[2]: Вывод в контрол содежимого любого файла
От: alsemm Россия  
Дата: 01.02.10 07:03
Оценка:
Здравствуйте, AlexMarlo, Вы писали:

AM>Всё вроде разобрался без юникода))

Для сравнения как оно с юникодом и без, открой http://www.columbiauniversity.org/kermit/utf8.html в браузере и своем просмотровщике "без юникода"
Re[7]: Вывод в контрол содежимого любого файла
От: okman Беларусь https://searchinform.ru/
Дата: 01.02.10 07:20
Оценка:
Здравствуйте, alsemm, Вы писали:

A>Здравствуйте, okman, Вы писали:


O>>Если файл двоичный, его текст будет читаться не более приятно, чем Ваше сообщение.

A>Если файл двоичный, то зачем к нему вообще применять MultiByteToWideChar? Вы понимаете, что смысл MultiByteToWideChar — перевести текст из заданной байтовой кодировки в UTF16 (и то, начиная только с Windows2000, до этого только UCS2). Если вам кодировка исодного потока байт неизвестна, зачем применять MultiByteToWideChar? Тупого преобразования будет достаточно:

A>
A>void makeRawUTF16(const char* str, unsigned len, std::vector<WCHAR>& out)
A>{
A>    out.clear();
A>    out.reserve(len);
A>    for (const char* estr = str + len; str != estr; ++str)
A>    {
A>        out.push_back(*str);
A>    }
A>}
A>


Да, вот это уже по существу — прояснили ситуацию.
Спасибо.
Re: Вывод в контрол содежимого любого файла
От: Pavel Dvorkin Россия  
Дата: 01.02.10 10:20
Оценка: 2 (1)
Здравствуйте, AlexMarlo, Вы писали:

AM>вообщем надо вывести любой файл допустим в RichEdit


EM_STREAMIN
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.