Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизКак просмотреть текст DOS? Найти похожие ветки
← →
b69 (2002-12-29 17:09) [0]Как просмотреть текст DOS RichEdit"ом(без помощи функции OemToChar)? Ставлю Font.Charset:=OEM_CHARSET и ничего не происходит.
← →
Anatoly Podgoretsky (2002-12-29 17:36) [1]Может у тебя на юникод шрифт
← →
b69 (2002-12-29 18:58) [2]Какой шрифт?
← →
Anatoly Podgoretsky (2002-12-29 19:11) [3]Тебе виднее какой у тебя стоит
← →
b69 (2002-12-29 20:07) [4]У меня Courier New, а вообще мне нужно для любого шрифта. А функция OemToChar или OemToCharBuff или CharToOem
procedure TForm1.Button2Click(Sender: TObject);
var Src, Str:PChar;
begin
Src := RichEdit1.Lines.GetText;
OemToCharBuff(Src, Str,Length(Src));
RichEdit1.Lines.Text := StrPas(Str);
end;
вызывают "Access Violation...". В чём дело?
← →
Anatoly Podgoretsky (2002-12-29 20:32) [5]Если у тебя с этим шрифтом не показывает, то значит у тебя проблемы с локализацией системы, проверить можешь если используешь стиль Terminal
← →
b69 (2002-12-30 08:22) [6]С Terminal всё нормально, почему OemToChar не работает?
← →
MBo (2002-12-30 08:32) [7]var s:string;
S := RichEdit1.Lines.Text;
OemToChar(PChar(S), PChar(S));
RichEdit1.Lines.Text := S;
← →
b69 (2002-12-30 08:52) [8]А у меня, чуть выше, не то написано? Или же здесь есть какой-то секрет...?
← →
MBo (2002-12-30 08:53) [9]есть секрет - выделение памяти
← →
Anatoly Podgoretsky (2002-12-30 09:14) [10]Если у тебя с OemToChar будет показывать, то это будет означать, что у тебя порушенная система, наиболее вероятно в области шрифтов.
Ты перечислил большое количество операционнок, это подразумевает, что программа предполагается для установки на многих компьютерах, в связи с этим высока вероятность не совпадение локализаций с 866/1251. Поэтому я бы порековмендовал не использовать OemToChar, а заменить его на свою функцию перобзования из 866 в 1251 или из твоих OEM/ANSI, если у тебя другие кодовые страницы, тогда ты не будешь зависить от локализации.
← →
b69 (2002-12-30 16:05) [11]То есть OemToChar не вовсех ОС работает? А своя функция перобзования - можно пример?
← →
Anatoly Podgoretsky (2002-12-30 16:51) [12]OemToChar работает на всех ОС, но только для Oem To ANSI, а это не одно и тоже, что и 866 To 1251
Таблица перекодировки, где индексом является входной алфафит, а знычением выходной алфафит, y = f(x)
сh := CvtTable[ch]
Готовая реализация есть на моем сайте.
← →
b69 (2002-12-30 16:56) [13]А что за сайт?
← →
b69 (2002-12-30 16:58) [14]Уважаемый MBo
var s:string;
S := RichEdit1.Lines.Text;
OemToChar(PChar(S), PChar(S));
RichEdit1.Lines.Text := S;
не работает. После OemToChar(PChar(S), PChar(S)) строка S="".
Так как же работает эта функция?
← →
Anatoly Podgoretsky (2002-12-30 16:59) [15]OemToChar работает на всех ОС, но только для Oem To ANSI, а это не одно и тоже, что и 866 To 1251
Таблица перекодировки, где индексом является входной алфафит, а знычением выходной алфафит, y = f(x)
сh := CvtTable[ch]
Готовая реализация есть на моем сайте.
← →
b69 (2003-01-01 10:12) [16]Да, у вас отличный сайт, нашёл то, что мне нужно, но к сожалению этот олгаритм слишком медленно работает. Есть ли ещё какие-нибудь способы перевода текста из OEM в ANSI?
← →
Anatoly Podgoretsky (2003-01-01 11:14) [17]Скорость всегда можно повысить, если оптимизировать алгоритм, но не думаю, что 35-70 мегабайт секунду это медленно, у тебя что то неверно в консерватории.
← →
deep.1 (2003-01-01 14:57) [18]А линк непросвещеннм людям можно?
← →
b69 (2003-01-01 18:10) [19]Где не верно?
← →
b69 (2003-01-01 18:15) [20]А может я не тот исходник скачал. Я скачал Text Convertor, и что-то не похоже, по крайней мере на моём компе, чтобы алгоритм переводил 35-70 мегабайт в секунду.
← →
Anatoly Podgoretsky (2003-01-01 18:24) [21]Что ты скачал и где не знаю и как ты работаешь с данными тоже загадка, но я специально провел измерение на 50 мб строке, 1.4 сек - P3/650 мгц
← →
b69 (2003-01-01 18:27) [22]Я скачал исходник Text Convertor"a с вашего сайта, итак быстро этот алгоритм не работает. А 50 мб за 1.4 сек на P3/650 мгц - это круто. А может быть исходничек как-нибудь... plz...
← →
Anatoly Podgoretsky (2003-01-01 18:41) [23]
SL := TStringList.Create;
SL.LoadFromFile("1.txt");
S1 := SL.Text; // вот здесь сейчас 50+ мб
T := GetTickCount;
S2 := CvtStr(S1, Cp1251to866);
Label1.Caption := IntToStr(GetTickCount-T);
← →
Song (2003-01-01 19:18) [24]:-)
← →
b69 (2003-01-02 10:41) [25]>Anatoly Podgoretsky ©
Извиняюсь, алгоритм действительно быстрый, это у меня чё-то комп глючило, спасибо.
← →
Anatoly Podgoretsky (2003-01-02 11:06) [26]При желании его можно еще улучшить, но это за счет эргономики и зависит от задачи
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.019 c