Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Транслит [D7, WinXP]


Страницы:   1 2 3 4

Greenchel ©   (2006-11-08 22:06:00) 

Существует строка вида: Ghbdtn
Как перевести в нормальный вид?


Ketmar   (2006-11-10 02:20:00) [1]

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


guav   (2006-11-09 22:51:00) [2]

> [73] Percent   (09.11.06 22:41)

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


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


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

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


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


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

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


Chort   (2006-11-09 22:50:00) [3]

Кстати кто знает как сделать чтоб в Macromedia Dreamweaver MX вместо Ñ,êписались нормальные русские буквы?


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

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

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


Ketmar   (2006-11-09 22:40:00) [5]

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

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

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


guav   (2006-11-09 22:31:00) [6]

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

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


Ketmar   (2006-11-09 22:28:00) [7]

что=то вроде этого (править лень %-):
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;


Chort   (2006-11-09 22:16:00) [8]


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

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


Ketmar   (2006-11-09 22:12:00) [9]

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


Chort   (2006-11-09 22:01:00) [10]


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

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


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

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


Chort   (2006-11-09 21:31:00) [12]

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

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.

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


Anatoly Podgoretsky   (2006-11-09 21:26:00) [13]

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

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


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

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

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


Anatoly Podgoretsky   (2006-11-09 21:05:00) [15]

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

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


Ketmar   (2006-11-09 20:57:00) [16]

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


Anatoly Podgoretsky   (2006-11-09 20:13:00) [17]

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

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


Ketmar   (2006-11-09 19:51:00) [18]

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


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

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

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


Anatoly Podgoretsky   (2006-11-09 19:18:00) [20]

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


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо