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

Вниз

Транслит   Найти похожие ветки 

 
Reindeer Moss Eater ©   (2006-11-09 14:13) [40]

рабочая легенда

win-1251 : "привет мир!"

Преобразуем в кои8-р
и далее каждому байту делаем and $7F

Получаем "PRIWET MIR!"


 
Anatoly Podgoretsky ©   (2006-11-09 14:19) [41]

> Reindeer Moss Eater  (09.11.2006 14:13:40)  [40]

> рабочая легенда

А теперь реальность, обрезав старший бит ты превращаешь в KOI-7


 
Reindeer Moss Eater ©   (2006-11-09 14:33) [42]

А если у меня в настройках почтового клиента указано, что слать почту как кои8-р, то это тоже на самом деле кои7?


 
Ketmar ©   (2006-11-09 14:34) [43]

>[38] han_malign(c) 9-Nov-2006, 13:38
>VkKeyScanEx
>MapVirtualKeyEx
VkKeyScanExW(), ToUnicodeEx().
%-) ну и CharUpperW() как финальный штрих.
я бы даже код дал, но сильно сомневаюсь, что автору вопроса поможет ассемблерный исходник. %-)


 
Ketmar ©   (2006-11-09 14:35) [44]

кстати. не заметил я сразу (кому-то повезло). какое отношение поле "сабж" имеет к [0]? %-)


 
Anatoly Podgoretsky ©   (2006-11-09 14:48) [45]

> Reindeer Moss Eater  (09.11.2006 14:33:42)  [42]

Нет у тебя KOI-8
Отрежание бита к этому не относится, после отрезания бита это уже не KOI-8.


 
Greenchel ©   (2006-11-09 15:32) [46]

if s="q" then s="й"
if s="w" then s="ц"
if s="e" then s="у"
if s="r" then s="к"
if s="t" then s="е"
if s="y" then s="н"
if s="u" then s="г"
if s="i" then s="ш"
if s="o" then s="щ"
if s="p" then s="з"
if s="[" then s="х"
if s="]" then s="ъ"
if s="a" then s="ф"
if s="s" then s="ы"
if s="d" then s="в"
if s="f" then s="а"
if s="g" then s="п"
if s="h" then s="р"
if s="j" then s="о"
if s="k" then s="л"
if s="l" then s="д"
if s=";" then s="ж"
if s=""" then s="э"
if s="z" then s="я"
if s="x" then s="ч"
if s="c" then s="с"
if s="v" then s="м"
if s="b" then s="и"
if s="n" then s="т"
if s="m" then s="ь"
if s="," then s="б"
if s="." then s="ю"
if s="/" then s="."
               

if s="Q" then s="Й"
if s="W" then s="Ц"
if s="E" then s="У"
if s="R" then s="К"
if s="T" then s="Е"
if s="Y" then s="Н"
if s="U" then s="Г"
if s="I" then s="Ш"
if s="O" then s="Щ"
if s="P" then s="З"
if s="A" then s="Ф"
if s="S" then s="Ы"
if s="D" then s="В"
if s="F" then s="А"
if s="G" then s="П"
if s="H" then s="Р"
if s="J" then s="О"
if s="K" then s="Л"
if s="L" then s="Д"
if s="Z" then s="Я"
if s="X" then s="Ч"
if s="C" then s="С"
if s="V" then s="М"
if s="B" then s="И"
if s="N" then s="Т"
if s="M" then s="Д"

Вот по такому типу нужна функция замени, никак не пойму как реализовать :(


 
Ketmar ©   (2006-11-09 15:51) [47]

>[46] Greenchel(c) 9-Nov-2006, 15:32
никогда больше такое не показывай. трудолюбивость, применённая не к тому -- это хуже. чем лень.

хинт: массивы.


 
Ketmar ©   (2006-11-09 15:51) [48]

а, да. я совсем забыл: это не ты, часом, с английским не дружишь?


 
Greenchel ©   (2006-11-09 15:52) [49]


> хинт: массивы

А потом перебором? :(


 
Ketmar ©   (2006-11-09 16:06) [50]

>[49] Greenchel(c) 9-Nov-2006, 15:52
>А потом перебором? :(
ЧЕГО??? толстый намёк: в магазине хозтоваров есть мётлы.


 
guav ©   (2006-11-09 18:28) [51]

Жаль, KOI-7 не поддерживается windows, иначе я знал бы  решение в пару строк, но "системное" ;-)
Хотя, может можно установить свою кодировку ;-)


 
Anatoly Podgoretsky ©   (2006-11-09 19:01) [52]

Ты наверно про KOI8, KOI-7 преобразовывается обратным способом, как превратилось, так и обратно.


 
Percent   (2006-11-09 19:04) [53]

KOI-7 не поддерживается windows

Поддерживается.


 
guav ©   (2006-11-09 19:08) [54]

> [53] Percent   (09.11.06 19:04)

Как ?
Приведи пример, или ссылку на документацию.

Какой код её, для начала ?


> [52] Anatoly Podgoretsky ©   (09.11.06 19:01)

KOI-8 поддерживается (в моём узком понимании термина "поддреживается").

> KOI-7 преобразовывается обратным способом, как превратилось,
> так и обратно.

KOI-7 таки не поддерживается напрямую.


 
Percent   (2006-11-09 19:10) [55]

KOI-8 поддерживается

Сам ответил...


 
guav ©   (2006-11-09 19:16) [56]

> [55] Percent   (09.11.06 19:10)

Таки я про непосредственную подднржку KOI-7 которой нет.
Иначе можно было бы считать, что любая кодировка поддерживается.


 
Anatoly Podgoretsky ©   (2006-11-09 19:18) [57]

KOI-8 поддерживается на уровне преобразований


 
Percent   (2006-11-09 19:24) [58]

Таки я про непосредственную подднржку KOI-7 которой нет

Что значит "непосредственная поддержка"?


 
Ketmar ©   (2006-11-09 19:51) [59]

>[58] Percent 9-Nov-2006, 19:24
>Что значит "непосредственная поддержка"?
см. [57]. мы тут недавно выяснили (guav, собственно %-) что -- к нашему удивлению -- писать процедуры преобразования из/в КОИ-8 не надо. всё уже написано микрософтом.


 
Anatoly Podgoretsky ©   (2006-11-09 20:13) [60]

> Ketmar  (09.11.2006 19:51:59)  [59]

И мною на основании его информации это используется. Не потребовалось использовать свой старый модуль.


 
Ketmar ©   (2006-11-09 20:57) [61]

скоро окажется, что автоопределение кодировки тоже давно написано. а мы всё по-старинке...
%-)


 
Anatoly Podgoretsky ©   (2006-11-09 21:05) [62]

> Ketmar  (09.11.2006 20:57:01)  [61]

Оно никогда не будет написано, ИИ не хватит, есть более или менее удачные решения, у того же Микрософт (это означает, что уже
написано :-)


 
Ketmar ©   (2006-11-09 21:14) [63]

>[62] Anatoly Podgoretsky(c) 9-Nov-2006, 21:05
>Оно никогда не будет написано, ИИ не хватит
на уровне FAR"а вполне достаточно. %-)

>означает, что уже написано :-)
только вот нет функции в API -- DetectCodeTable(). или я не нашёл. %-)


 
Anatoly Podgoretsky ©   (2006-11-09 21:26) [64]

> Ketmar  (09.11.2006 21:14:03)  [63]

Про перекодировку КОИ ты видел :-)


 
Chort ©   (2006-11-09 21:31) [65]

Если нужен транслит, то

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TfmMain = class(TForm)
   Memo1: TMemo;
   Memo2: TMemo;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;

var
 fmMain: TfmMain;

implementation

{$R *.DFM}

function Transliterate(s: string): string;
var
 i: integer;
 t: string;
begin
 for i:=1 to Length(s) do
   begin
     case s[i] of
       "à": t:=t+"a";
       "á": t:=t+"b";
       "â": t:=t+"v";
       "ã": t:=t+"g";
       "ä": t:=t+"d";
       "å": t:=t+"e";
       "¸": t:=t+"ye";
       "æ": t:=t+"zh";
       "ç": t:=t+"z";
       "è": t:=t+"i";
       "é": t:=t+"y";
       "ê": t:=t+"k";
       "ë": t:=t+"l";
       "ì": t:=t+"m";
       "í": t:=t+"n";
       "î": t:=t+"o";
       "ï": t:=t+"p";
       "ð": t:=t+"r";
       "ñ": t:=t+"s";
       "ò": t:=t+"t";
       "ó": t:=t+"u";
       "ô": t:=t+"f";
       "õ": t:=t+"ch";
       "ö": t:=t+"z";
       "÷": t:=t+"ch";
       "ø": t:=t+"sh";
       "ù": t:=t+"ch";
       "ú": t:=t+"""";
       "û": t:=t+"y";
       "ü": t:=t+"""";
       "ý": t:=t+"e";
       "þ": t:=t+"yu";
       "ÿ": t:=t+"ya";
       "À": T:=T+"A";
       "Á": T:=T+"B";
       "Â": T:=T+"V";
       "Ã": T:=T+"G";
       "Ä": T:=T+"D";
       "Å": T:=T+"E";
       "¨": T:=T+"Ye";
       "Æ": T:=T+"Zh";
       "Ç": T:=T+"Z";
       "È": T:=T+"I";
       "É": T:=T+"Y";
       "Ê": T:=T+"K";
       "Ë": T:=T+"L";
       "Ì": T:=T+"M";
       "Í": T:=T+"N";
       "Î": T:=T+"O";
       "Ï": T:=T+"P";
       "Ð": T:=T+"R";
       "Ñ": T:=T+"S";
       "Ò": T:=T+"T";
       "Ó": T:=T+"U";
       "Ô": T:=T+"F";
       "Õ": T:=T+"Ch";
       "Ö": T:=T+"Z";
       "×": T:=T+"Ch";
       "Ø": T:=T+"Sh";
       "Ù": T:=T+"Ch";
       "Ú": T:=T+"""";
       "Û": T:=T+"Y";
       "Ü": T:=T+"""";
       "Ý": T:=T+"E";
       "Þ": T:=T+"Yu";
       "ß": T:=T+"Ya";
     else
       t:=t+s[i];
     end;
   end;
 Result:=t;
end;

procedure TfmMain.Button1Click(Sender: TObject);
var
 i: integer;
begin
 Memo2.Lines.Clear;
 for i:=0 to Memo1.Lines.Count-1 do
   Memo2.Lines.Add(Transliterate(Memo1.Lines.Strings[i]));
end;

end.

Только русские буквы по-поганились во время копирования. Впрочем там простой перебор алфавита


 
Ketmar ©   (2006-11-09 21:56) [66]

>[65] Chort(c) 9-Nov-2006, 21:31
>Если нужен транслит, то
откуда вы этот "код" выковыриваете-то, а? пожизненый эцих.


 
Chort ©   (2006-11-09 22:01) [67]


> откуда вы этот "код" выковыриваете-то, а? пожизненый эцих.

Билл Гейтс на мыло вчера прислал:)
http://www.delphi.int.ru/files/sources/sources_t/transliterator.zip


 
Ketmar ©   (2006-11-09 22:12) [68]

>[67] Chort(c) 9-Nov-2006, 22:01
>transliterator.zip
если это оно, то того, кто туда сие положил, надо медленно расстрелять без права апелляции. я в какой-то ветке недавно уже приводил нормальный код, а не эту страхолюдину.


 
Chort ©   (2006-11-09 22:16) [69]


> если это оно, то того, кто туда сие положил, надо медленно
> расстрелять без права апелляции. я в какой-то ветке недавно
> уже приводил нормальный код, а не эту страхолюдину.

Выложи в этой ветке


 
Ketmar ©   (2006-11-09 22:28) [70]

что=то вроде этого (править лень %-):
function TransStr (const s: string): string;
const
 rus: string = "ЙЦУКЕНГШЩЗХЪЭЖДЛОРПАВЫФЯЧСМИТЬБЮЁІ";
 tr: string = "%cukeng+-zh""ejdlorpavyf*$smit""b#^i";
var
 f, c: Integer;
 up: Boolean;
 i: string;
 ch: Char;
begin
 result := s;
 f := 1; while f <= Length(result) do
 begin
   if result[f] < " " then result[f] := "_";
   ch := ANSIUpperCase(result[f]);
   c := Pos(ch, rus);
   if c < 1 then Inc(f)
   else
   begin
     i := tr[c]; up := (ch = result[f]);
     case i[1] of
       "%": i := "i";
       "+": i := "sh";
       "-": i := "sch";
       "*": i := "ia";
       "$": i := "ch";
       "#": i := "iu";
       "^": i := "io";
     end;
     if up then
     begin
       if f = 1 then i[1] := ANSIUpperCase(i[1])[1] else i := ANSIUpperCase(i);
     end;
     Delete(result, f, 1);
     Insert(i, result, f);
   end;
 end;
end;


 
guav ©   (2006-11-09 22:31) [71]

В продолжение оффтопика про кои8, я таки нашел функцию, позволяющую определить, существует ли кодировка - называется как ни странно IsValidCodePage.
Про "интеллект", определяющий раскладку, нашел только для Unicode (IsTextUnicode с IS_TEXT_UNICODE_STATISTICS).
Но т.к. IE все кодировки знает и кое-как определяет кодировку, можно попробовать через него.

Всё ещё интересует возможность добавить свою кодировку, так и задачу транслита и сабжевую задачу можно было бы решить красиво...


 
Ketmar ©   (2006-11-09 22:40) [72]

>[71] guav(c) 9-Nov-2006, 22:31
>называется как ни странно IsValidCodePage.
мда. %-)

>Но т.к. IE все кодировки знает и кое-как определяет
>кодировку, можно попробовать через него.
это зверство. %-)

>Всё ещё интересует возможность добавить свою кодировку,
>так и задачу транслита и сабжевую задачу можно было бы
>решить красиво...
сабжевая и так красиво решается. двумя api-функциями. я ж говорю -- могу исходник швырнуть. на ассемблере. %-)


 
Percent   (2006-11-09 22:41) [73]

кое-как определяет кодировку, можно попробовать через него

Он ее (кодировку) из страницы берет, тег <META charset>.


 
Chort ©   (2006-11-09 22:50) [74]

Кстати кто знает как сделать чтоб в Macromedia Dreamweaver MX вместо &#209;,&#234; писались нормальные русские буквы?


 
guav ©   (2006-11-09 22:51) [75]

> [73] Percent   (09.11.06 22:41)

да.
но есть неправильные страницы, где она не прописана, так там угадывает.


> [72] Ketmar ©   (09.11.06 22:40)


> сабжевая и так красиво решается. двумя api-функциями. я
> ж говорю -- могу исходник швырнуть. на ассемблере. %-)

Не надо.
Во первых этот исходник у меня уже есть.
Во вторых это не мне нужно, а автору ветки.
В третьих зачем кидать, ты уже достаточно сослался на него.
В четвёртых у меня таки подозрение, что автору он не сильно поможет.


> [72] Ketmar ©   (09.11.06 22:40)


> это зверство. %-)

Зверство - предложить МС Офис под это дело припрячь (в нём, кстати, много чего есть, мождет и определялка кодовой страницы завалялась).


 
Ketmar ©   (2006-11-10 02:20) [76]

>[75] guav(c) 9-Nov-2006, 22:51
>В четвёртых у меня таки подозрение, что автору он не
>сильно поможет.
а вот как раз поиздеваться.



Страницы: 1 2 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.032 c
15-1162589696
ZiTRaX
2006-11-04 00:34
2006.11.26
Turbo Delphi Explorer


6-1152561807
papaP
2006-07-11 00:03
2006.11.26
Проблемы с логином на сайт(юзая Indy)


5-1144410737
Der Nechk@ssoff
2006-04-07 15:52
2006.11.26
Установка компонента


11-1139330871
Vladimir Kladov
2006-02-07 19:47
2006.11.26
Версия 2.33


6-1151942327
ART-of-FaNtAsY
2006-07-03 19:58
2006.11.26
Отправка и получение http запросов GET и POST