Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Как просмотреть текст 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 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.015 c
3-38048
keeper
2003-01-29 10:59
2003.02.13
Index XXXX is not a valid name


4-38622
Антипыч
2002-12-26 14:28
2003.02.13
Значки на рабочем чтоле


14-38439
France
2003-01-30 09:55
2003.02.13
DXF


3-38052
d_oleg
2003-01-29 14:54
2003.02.13
Interbase - запись в services


14-38557
Ежик
2003-01-28 09:31
2003.02.13
Включение компьютера.....