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

Вниз

Нужна функция перекодирования строки из 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.056 c
1-1109865606
sloug
2005-03-03 19:00
2005.03.20
ToolBar меняет цвет


1-1110031060
Aleksandr.
2005-03-05 16:57
2005.03.20
Надо ли делать SetLength(Array,0)?


1-1109943377
100a
2005-03-04 16:36
2005.03.20
Стандартные функции удаления файлов


1-1109925653
antoxa
2005-03-04 11:40
2005.03.20
Подскажите, как работать с TClientDataSet?


14-1108916899
Девушка
2005-02-20 19:28
2005.03.20
Ethernet-устройства