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

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

Я офигеваю! RichEdit.


Страницы:   1 2

nsvi ©   (2003-02-06 01:38:00) 

В абсолютно одинаковых условиях в RichEdit файл 200 кб в кодировке Win загружается за 0,5 с, тот же файл, но в кодировке DOS грузится 1,5 минуты, файл 700 кб в Win за 1,5 с, в DOS - не дождался (больше 15 минут).
Это при загрузке в
RichEdit1.RE_LoadFromFile(filename,reText,false);
Пробовал через PStrList, в него-то грузится файл DOS махом, но передача в RichEdit занимает столько же времени, как и прямо в него. Какая ему разница какая кодировка? Ведь файл то текстовый, причем один и тот же?
D6,Duron-1000,256 мб


nsvi   (2003-02-07 00:53:00) [21]

Тут поэкспериментировал... Кусок файла 100 кб конвертировал в разные кодировки. Время загрузки в RichEdit:
в Win - 0,5 с;
в KOI - 0,5 с;
в MAC - 1 c;
в ISO - 1 с;
в DOS - 20 с.
За большую точность не ручаюсь, на глазок.
Ну теперь-то все ясно, автомат для перекодировки не проблема.

Попутно еще вопрос, что за свойство у RichEdit - Localizy (loForm, loNo, loYes)?


Kladov   (2003-02-06 19:54:00) [22]


> Какая ему разница какая кодировка?


Это надо у MS спросить. Не знаю как в XP, но в 2K пока именно так. Решить можно подменой riched32.dll на более раннюю или наоборот более позднюю, у которой нет такого заглюка (если получится). Или предварительным конвертированием из 866 в 1251. Например, так:

procedure TForm1.Button1Click(Sender: PObj);
var FS, MS: PStream;
S: PChar;
L: Integer;
begin
if OpenSaveDialog1.Execute then
begin
FS := NewReadFileStream( OpenSaveDialog1.Filename );
MS := NewMemoryStream;
Stream2Stream( MS, FS, FS.Size );
FS.Free;
S := MS.Memory;
for L := 1 to MS.Size do
begin
if S^ = #0 then S^ := " ";
Inc( S );
end;
S := MS.Memory;
MS.Position := 0;
OemToChar( S, S );
( MS, MS.Size, reText, FALSE)


> Какая ему разница какая кодировка?


Это надо у MS спросить. Не знаю как в XP, но в 2K пока именно так. Решить можно подменой riched32.dll на более раннюю или наоборот более позднюю, у которой нет такого заглюка (если получится). Или предварительным конвертированием из 866 в 1251. Например, так:

procedure TForm1.Button1Click(Sender: PObj);
var FS, MS: PStream;
S: PChar;
L: Integer;
begin
if OpenSaveDialog1.Execute then
begin
FS := NewReadFileStream( OpenSaveDialog1.Filename );
MS := NewMemoryStream;
Stream2Stream( MS, FS, FS.Size );
FS.Free;
S := MS.Memory;
for L := 1 to MS.Size do
begin
if S^ = #0 then S^ := " ";
Inc( S );
end;
S := MS.Memory;
MS.Position := 0;
OemToChar( S, S );
RichEdit1.RE_LoadFromStream( MS, MS.Size, reText, FALSE );
MS.Free;
end;
end;

Остается только придумать способ автоматически отличить текст в dos-кодировке от win-кодировки.


Gandalf   (2003-02-06 13:52:00) [23]


> Так я же написал код

Пардон, проглядел...

У меня этот код работает, на ура.
WinXP,D5-7,KOlnMCK 1.64-5.


nsvi   (2003-02-06 13:35:00) [24]

Так я же написал код, ну а сам файл текстовый, называется, к примеру в кодировке win "text1.txt", в кодировке dos - "text2.txt" - его не перешлешь. Код именно
RichEdit1.RE_LoadFromFile("text1.txt",reText,False);


Gandalf   (2003-02-06 11:01:00) [25]

Код в студию! Например если сделать так:

RichEdit1.RE_LoadFromFile("DosOrWin.TXT",reText,False);

то два файла в любой кодировке грузятся одинаково.


Страницы:   1 2

Наверх

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