Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1109513422
GanibalLector
2005-02-27 17:10
2005.03.20
Толковый словарь (ОЧЕПЯТКИ)


1-1110013855
msgipss
2005-03-05 12:10
2005.03.20
Вопрос заварника про this


6-1106125547
Чеширский_Кот
2005-01-19 12:05
2005.03.20
Delphi and WAB


1-1110184011
Flic
2005-03-07 11:26
2005.03.20
Image


4-1107338164
Tango
2005-02-02 12:56
2005.03.20
управление tabcontrol в чужом приложении





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский