Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

кодировки((( koir-8 win   Найти похожие ветки 

 
xyz   (2002-07-05 16:54) [0]

Подскажите как перевести строку из вин в кои и обратно!
Буду очень благодарен


 
Anatoly Podgoretsky   (2002-07-05 17:03) [1]

Через таблицу перекодировка, функция koi := f(x), x = "win" код
разумеется, что "win" кодировка должна быть транспортабельной в лщи кодировку


 
yxz   (2002-07-07 00:10) [2]

Совершенно не понятно(((
Где эту таблицу взять?
Как это все устроено?


 
-=Sergeante=-   (2002-07-08 09:42) [3]


unit str_conv;

interface
uses
SysUtils;
const
cp1251:pChar =
#233#246#243#234#229#237#227#248#249#231#245#250#244#251#226
+#224#239#240#238#235#228#230#253#255#247#241#236#232#242#252
+#225#254#184#201#214#211#202#197#205#195#216#217#199#213#218
+#212#219#194#192#207#208#206#203#196#198#221#223#215#209#204
+#200#210#220#193#222#168#0;
koi8:pChar =
#202#195#213#203#197#206#199#219#221#218#200#223#198#217#215#193
+#208#210#207#204#196#214#220#209#222#211#205#201#212#216#194#192
+#163#234#227#245#235#229#238#231#251#253#250#232#255#230#249#247#225
+#240#242#239#236#228#246#252#241#254#243#237#233#244#248#226#224
+#179#0;

function koi82win(CString: PChar): PChar;
function win2koi8(CString: PChar): PChar;

implementation

function replace_it(CString: PChar;scr: PChar;dest: PChar):PChar;
var i,j:integer;
begin
i:=0;
while (i<length(CString)) do
begin
j:=0;
while (scr[j]<>#0) do
begin
if CString[i]=scr[j]
then
begin
CString[i]:=dest[j];
Break;
end;
inc(j);
end;
inc(i);
end;
result:=CString;
end;

function koi82win(CString: PChar): PChar;
begin
result:=replace_it(CString,koi8,cp1251);
end;

function win2koi8(CString: PChar): PChar;
begin
result:=replace_it(CString,cp1251,koi8);
end;

end.


 
Anatoly Podgoretsky   (2002-07-08 09:52) [4]

yxz (07.07.02 00:10)

Совершенно не понятно((( - это твоя проблема, надо было в школе учиться, мы можем расказать а уж понимать это только тебе подвластно.

Где эту таблицу взять? - самому создать, если лень то возьми готовую у других, только не вздумай брать -=Sergeante=- © (08.07.02 09:42), это же тихий ужас.

Как это все устроено? - простая замена по таблице, s[i] := Tbl[S[i]];
I - переменная цикла, S - строка, Tbl - таблица перекодировки.


 
-=Sergeante=-   (2002-07-08 11:15) [5]

Anatoly Podgoretsky © (08.07.02 09:52)

В чём, собственно, не устраивает? Таблица или реализация. Определение "тихий ужас" здесь, я думаю, неуместно.


 
Anatoly Podgoretsky   (2002-07-08 11:36) [6]

Хотя бы из декартова произведения, общая призводительность стремится к нулю, остальное можно не смотреть, такие вещи делаются через таблицу перекодировки в циеле


 
yxz   (2002-07-08 14:04) [7]

Anatoly Podgoretsky
Моя проблема в том, что меня в школе этому не учили. Приходится самому допирать. Но есть еще добрые люди которые мне помогают.)))
Подскажите тогда где взять эту таблицу? У кого?

Алгоритм хороший, а как String в PChar перевести?
strpos? но там тоже PChar...(((


 
xyz   (2002-07-09 12:29) [8]

Похоже я нашел решение!
Надо набрать клавиатуру в одной кодировке, посмотреть как глючно смотрится в другой и записать это все в две строковые константы. А потом поступающую строку сравнивать с глючной и переводить в нормальную кодировку.
Использовать вложенные цыклы.
function convert(str : string) : string;
const
koir8 = "одна кодировка";
win32 = "другая кодировка";
begin
for i := 1 to length(str) do
begin
for i2 := 1 to length(koir8) do
begin
if str[i] = koir8[i2] then
begin
result := result+win32[i2];
end;
end;
end;
end;


 
Anatoly Podgoretsky   (2002-07-09 12:40) [9]

yxz (08.07.02 14:04)
Таблицы и перекодировщик можешь взять у меня, а так их куча туева в Сети


 
Gandalf   (2002-07-09 12:43) [10]

"КОРОЛЕВСТВО ДЕЛЬФИ" - там ок 6 вариантов реализации сабжа, многие очень даже.


 
Anatoly Podgoretsky   (2002-07-09 12:51) [11]

Только не используй ни какие, кроме как через полнообъмную таблицу перекодировки, иначе большой тормоз и ограничения по возможностям



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
1-70764
Question
2002-07-09 09:36
2002.07.22
O Screen.DataModuleCount


14-70907
kosyak
2002-06-24 20:57
2002.07.22
редактор


1-70679
nitro313
2002-07-11 02:07
2002.07.22
Народ, подскажите... Как вывести переменную с разделением...


3-70648
Aleksandr
2002-07-01 17:03
2002.07.22
Кто-нить работал по поставке InterBase в дистрибутиве?


14-70871
mrX
2002-06-24 13:44
2002.07.22
Где такое есть?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский