Главная страница
    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.004 c
3-70613
Бадян
2002-06-29 01:03
2002.07.22
Помогите с импортом в БД


14-70908
lipskiy
2002-06-24 02:51
2002.07.22
Микропрограммки


1-70788
EugenCFG
2002-07-10 10:46
2002.07.22
Здраствуйте ещё раз...


1-70775
jen_bond
2002-07-09 11:38
2002.07.22
Изменение размера компонента


6-70849
Ajax
2002-05-11 12:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский