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

Вниз

кодировки((( 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-70763
Alex-A
2002-07-04 12:02
2002.07.22
Извлечь из Icl - иконку


1-70796
Cowboy
2002-07-10 11:31
2002.07.22
Как узнать имя компоненты?


1-70746
3asys
2002-07-07 22:10
2002.07.22
Создание в run-time TWebBrowser


1-70743
WorkMan
2002-07-05 07:34
2002.07.22
Статическая линковка библиотек.


1-70702
Alexandr
2002-07-11 12:37
2002.07.22
блондинка за рулем