![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Транслит [D7, WinXP]
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 поддерживается на уровне преобразований