Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.49 MB
Время: 0.009 c
6-38415
zarem
2002-12-23 02:16
2003.02.13
Посылка кадров UDP & TCP


1-38388
archer
2003-02-03 14:29
2003.02.13
Не работает CreateOLEObject( WScript.Shell )


3-38093
able
2003-01-25 21:23
2003.02.13
Help!!!


1-38250
amihe
2003-02-04 21:25
2003.02.13
Как создать ActiveX из не TwinControl потомков?


9-37994
3d[Power]
2002-08-29 05:16
2003.02.13
Direct 3D Sound





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский