![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как просмотреть текст DOS? [D5, Win95/98, WinME, NT4, Win2k, WinXP]
b69 © (2002-12-29 17:09:00)Как просмотреть текст DOS RichEdit"ом(без помощи функции OemToChar)? Ставлю Font.Charset:=OEM_CHARSET и ничего не происходит.
Anatoly Podgoretsky (2003-01-02 11:06:00) [1]При желании его можно еще улучшить, но это за счет эргономики и зависит от задачи
b69 (2003-01-02 10:41:00) [2]>Anatoly Podgoretsky ©
Извиняюсь, алгоритм действительно быстрый, это у меня чё-то комп глючило, спасибо.
Song (2003-01-01 19:18:00) [3]:-)
Anatoly Podgoretsky (2003-01-01 18:41:00) [4]
SL := TStringList.Create;
SL.LoadFromFile("1.txt");
S1 := SL.Text; // вот здесь сейчас 50+ мб
T := GetTickCount;
S2 := CvtStr(S1, Cp1251to866);
Label1.Caption := IntToStr(GetTickCount-T);
b69 (2003-01-01 18:27:00) [5]Я скачал исходник Text Convertor"a с вашего сайта, итак быстро этот алгоритм не работает. А 50 мб за 1.4 сек на P3/650 мгц - это круто. А может быть исходничек как-нибудь... plz...
Anatoly Podgoretsky (2003-01-01 18:24:00) [6]Что ты скачал и где не знаю и как ты работаешь с данными тоже загадка, но я специально провел измерение на 50 мб строке, 1.4 сек - P3/650 мгц
b69 (2003-01-01 18:15:00) [7]А может я не тот исходник скачал. Я скачал Text Convertor, и что-то не похоже, по крайней мере на моём компе, чтобы алгоритм переводил 35-70 мегабайт в секунду.
b69 (2003-01-01 18:10:00) [8]Где не верно?
deep.1 (2003-01-01 14:57:00) [9]А линк непросвещеннм людям можно?
Anatoly Podgoretsky (2003-01-01 11:14:00) [10]Скорость всегда можно повысить, если оптимизировать алгоритм, но не думаю, что 35-70 мегабайт секунду это медленно, у тебя что то неверно в консерватории.
b69 (2003-01-01 10:12:00) [11]Да, у вас отличный сайт, нашёл то, что мне нужно, но к сожалению этот олгаритм слишком медленно работает. Есть ли ещё какие-нибудь способы перевода текста из OEM в ANSI?
Anatoly Podgoretsky (2002-12-30 16:59:00) [12]OemToChar работает на всех ОС, но только для Oem To ANSI, а это не одно и тоже, что и 866 To 1251
Таблица перекодировки, где индексом является входной алфафит, а знычением выходной алфафит, y = f(x)
сh := CvtTable[ch]
Готовая реализация есть на моем сайте.
b69 (2002-12-30 16:58:00) [13]Уважаемый MBo
var s:string;
S := RichEdit1.Lines.Text;
OemToChar(PChar(S), PChar(S));
RichEdit1.Lines.Text := S;
не работает. После OemToChar(PChar(S), PChar(S)) строка S="".
Так как же работает эта функция?
b69 (2002-12-30 16:56:00) [14]А что за сайт?
Anatoly Podgoretsky (2002-12-30 16:51:00) [15]OemToChar работает на всех ОС, но только для Oem To ANSI, а это не одно и тоже, что и 866 To 1251
Таблица перекодировки, где индексом является входной алфафит, а знычением выходной алфафит, y = f(x)
сh := CvtTable[ch]
Готовая реализация есть на моем сайте.
b69 (2002-12-30 16:05:00) [16]То есть OemToChar не вовсех ОС работает? А своя функция перобзования - можно пример?
Anatoly Podgoretsky (2002-12-30 09:14:00) [17]Если у тебя с OemToChar будет показывать, то это будет означать, что у тебя порушенная система, наиболее вероятно в области шрифтов.
Ты перечислил большое количество операционнок, это подразумевает, что программа предполагается для установки на многих компьютерах, в связи с этим высока вероятность не совпадение локализаций с 866/1251. Поэтому я бы порековмендовал не использовать OemToChar, а заменить его на свою функцию перобзования из 866 в 1251 или из твоих OEM/ANSI, если у тебя другие кодовые страницы, тогда ты не будешь зависить от локализации.
MBo (2002-12-30 08:53:00) [18]есть секрет - выделение памяти
b69 (2002-12-30 08:52:00) [19]А у меня, чуть выше, не то написано? Или же здесь есть какой-то секрет...?
MBo (2002-12-30 08:32:00) [20]var s:string;
S := RichEdit1.Lines.Text;
OemToChar(PChar(S), PChar(S));
RichEdit1.Lines.Text := S;