Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.072 c
10-1126512081
НИИМ
2005-09-12 12:01
2006.11.26
Вывод в Excel без Excel


2-1162847539
eugeniya2006
2006-11-07 00:12
2006.11.26
События, нажатие кнопки


5-1144146527
Megabyte
2006-04-04 14:28
2006.11.26
Добавление нового события


2-1163014596
Greenchel
2006-11-08 22:36
2006.11.26
Пробелы в TEdit


15-1163004542
Pazitron_Brain
2006-11-08 19:49
2006.11.26
Средняя зарплата





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