Форум: "Основная";
Текущий архив: 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.004 c