Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизНужна функция перекодирования строки из win в dos Найти похожие ветки
← →
GH@ST (2005-03-02 10:11) [0]Нашел в интернете алгоритм перекодирования..причем он фигрирует практически во всех справочниках..но там есть вот такая строка
Str[dos] := "Ђ ЃЎ‚ўѓЈ„¤…Ґ†¦‡§?Ё‰©ЉЄ‹"Њ¬ЌЋ®ЏЇђа"б"в"г"де–ж—з˜и™йљк›лњмќнћоџп";
которую компилятор не пропускает..получается, что в середине из-за этих ковычек незакрытая строка...как с этим быть?
Вообще нужна просто функция..можно и другую...
← →
Чапаев © (2005-03-02 10:15) [1]AnsiToOem()?
А насчёт кавычек -- читай хелп... Если в строку нужно вставить апостроф -- вставляется два апострофа.
← →
GH@ST (2005-03-02 10:24) [2]Вот полный текст преобразователя отесть если я туда лишнюю кавычку вставлю..символы могут сместится на один...мне же не строку с кавычкой надо, а решение.
Этот алгоритм позволяет перекодировать текст.
Реализованы кодировки Windows-1251, KOI8-R, ISO-8859-5 и DOS.
Кодировка – это таблица, в которой указано,
например, что символ под номером 160 - это русская буква "а", а под номером 150 – "Ц" и т. д.
Кодировки различаются номерами русских букв
(как располагать английские буквы договорились).
Разные компьютеры в Интернете используют разные кодировки.
И поэтому, когда русский текст идет по Интернету, его многократно перекодируют.
Этот алгоритм обеспечивает высокую скорость перекодирования больших объемов данных.
procedure TForm1.Button1Click(Sender: TObject);
var
code1, code2: TCode;
s: string;
c: char;
i: integer;
chars: array [char] of char;
str: array [TCode] of string;
begin
case ComboBox1.ItemIndex of
1: code1 := koi;
2: code1 := iso;
3: code1 := dos;
else code1 := win;
end;
case ComboBox2.ItemIndex of
1: code2 := koi;
2: code2 := iso;
3: code2 := dos;
else code2 := win;
end;
s := Memo1.Text;
Str[win] := "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";
Str[koi] := "юЮаАбБцЦдДеЕфФгГхХиИйЙкКлЛмМнНоОпПяЯрРсСтТуУжЖвВьЬыЫзЗшШэЭщЩчЧъЪ";
Str[iso] := "РрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяа№бёвђгѓдєеѕжізїијйљкњлћмќн§оўпџ";
Str[dos] := "Ђ ЃЎ‚ўѓЈ„¤…Ґ†¦‡§?Ё‰©ЉЄ‹"Њ¬ЌЋ®ЏЇђа"б"в"г"де–ж—з˜и™йљк›лњмќнћоџп";
for c := #0 to #255 do
Chars[c] := c;
for i := 1 to Length(Str[win]) do
Chars[Str[code2][i]] := Str[code1][i];
for i := 1 to Length(s) do
s[i] := Chars[s[i]];
Memo2.Text := s;
end;
Взято с сайта http://blackman.wp-club.net/
← →
Александр Иванов © (2005-03-02 10:28) [3]Ты бы сначала кавычку вставить попробовал. Если не нравится кавычка, то в тексте замени ее на #39, примерно так "Ђ ЃЎ‚ўѓЈ„¤…Ґ†¦‡§?Ё‰©ЉЄ‹"Њ¬ЌЋ®ЏЇђа"#39"б"#39"в"г"де–ж—з?и™йљк›лњмќнћоџп"
← →
GH@ST (2005-03-02 10:34) [4]Да хрень какая-то получается...а есть у кого нибудь рабочая функция...?
← →
Думкин © (2005-03-02 10:37) [5]http://delphibase.spb.ru/?action=viewtopic&topic=strconvert
← →
Юрий Зотов © (2005-03-02 10:38) [6]> GH@ST (02.03.05 10:34) [4]
Уже сказали - AnsiToOem. См. справку по API.
← →
GH@ST (2005-03-02 10:38) [7]Читал там написано
народ 100% да DOS<->WIN!
но не 100% что вы подумали 866<->1251 :)
так на всяк случай...
← →
GH@ST (2005-03-02 10:39) [8]>Юрий Зотов ©
видимо это последний вариант..
← →
Юрий Зотов © (2005-03-02 10:50) [9]> GH@ST (02.03.05 10:39) [8]
Я думаю, что для этой задачи - не просто последний, а первый и последний.
← →
Случайный гость (2005-03-06 13:31) [10]Я делаю так
T_vbr:=Строка ДОС
While j<=LEngth(T_vbr) do
begin
LtChar:=T_vbr[j];
if (Ord(T_vbr[j])>$7F)and(Ord(T_vbr[j])<$B0) then
ltChar:=Char(Ord(T_vbr[j])+$40);
if (Ord(T_vbr[j])>$DF)and(Ord(T_vbr[j])<$F2) then
ltChar:=Char(Ord(T_vbr[j])+$10);
if Ord(T_vbr[j])>=$F2 then
ltChar:=" ";
if Ord(T_vbr[j])=$FC then
ltChar:="№";
T_vbr[j]:=LtChar;
j:=j+1;
end;
Пока все работает в любой Винде
← →
Anatoly Podgoretsky © (2005-03-06 13:46) [11]Все эти коды - это не WinDos, а КодировкаКодировка, а WinDos это CharToOem и ее писать не надо, она уже встроена в Виндоус.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c