Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск и замена символов в файле, как организовать систему транслитерации 
:(
    Опции темы
andrey_post
  Дата 26.12.2003, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Господа! Нужна помощь и совет специалиста! wink.gif

У меня задача, открыть файл, и транслитирировать по таблице транслитерации.
как это зделать? чем воспользоваться? Пэлп плизззз withstupid.gif
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 26.12.2003, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Ну как... Записываешь файл в массив, прогоняешь массив, проверяешь, меняешь символы по условию... Перезаписываешь файл..


--------------------
PM MAIL WWW ICQ Skype   Вверх
andrey_post
  Дата 26.12.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Можно небольшой примерчик? плиззз!!!!! confused.gif
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 26.12.2003, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А что такое "транслитирировать" и "таблица транслитерации"?
PM   Вверх
NiJazz
Дата 26.12.2003, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Цитата
А что такое "транслитирировать" и "таблица транслитерации"?

Например, молоко - moloko. И всё.

Вот пример функции, которая транслирует из русских слов в английские.
Пригодилась, когда нужно было файлы в mp3-плеер перегонять - он русский не понимает. smile.gif

Код

unit Translate;

interface

function Convert(OldName: string): string;

implementation

function Convert(OldName: string): string;
var OldNameLength: integer;
   i: integer;
   s: string;
begin
OldNameLength := length(OldName);
s:='';
i:=1;
while i <= OldNameLength do begin
 if (OldName[i] in ['A'..'Z']+['a'..'z']+['0'..'9']+
                 ['{']+['}']+['[']+[']']+['`']+['~']+
                 ['!']+['@']+['#']+['$']+['%']+['^']+
                 ['&']+['*']+['(']+[')']+['-']+['_']+
                 ['+']+['=']+['\']+['|']+[';']+[':']+
                 ['"']+['{']+['<']+['>']+[',']+['.']+
                 [' ']+['?']+['/']+['№']+['^'])
                then s:=s+OldName[i];
 if OldName[i] in ['А','Б','а','б'] then
    s:=s+chr(ord(OldName[i])-127);
 if OldName[i] in ['В','в'] then
    s:=s+chr(ord(OldName[i])-108);
 if OldName[i] in ['Г','г','Ж','ж'] then
    s:=s+chr(ord(OldName[i])-124);
 if OldName[i] in ['Д','д','Е','е'] then
    s:=s+chr(ord(OldName[i])-128);
 if OldName[i] in ['З','з'] then
    s:=s+chr(ord(OldName[i])-109);
 if OldName[i] in ['И','и','К','к','Л','л','М','м','Н','н','О','о','П','п'] then
    s:=s+chr(ord(OldName[i])-127);
 if OldName[i] in ['Й','й'] then
    s:=s+chr(ord(OldName[i])-128);
 if OldName[i] in ['Р','р','С','с','Т','т','У','у'] then
    s:=s+chr(ord(OldName[i])-126);
 if OldName[i] in ['Ф','ф'] then
    s:=s+chr(ord(OldName[i])-142);
 if OldName[i] in ['Х','х'] then
    s:=s+chr(ord(OldName[i])-141);
 if OldName[i] in ['Ц','ц'] then
    s:=s+chr(ord(OldName[i])-147);
 if OldName[i] in ['Ы','ы'] then
    s:=s+chr(ord(OldName[i])-130);
 if OldName[i] in ['Э','э'] then
    s:=s+chr(ord(OldName[i])-152);
 if OldName[i] = 'Ё' then s:=s+'Yo';
 if OldName[i] = 'ё' then s:=s+'yo';
 if OldName[i] = 'Ч' then s:=s+'Ch';
 if OldName[i] = 'ч' then s:=s+'ch';
 if OldName[i] = 'Ш' then s:=s+'Sh';
 if OldName[i] = 'ш' then s:=s+'sh';
 if OldName[i] = 'Щ' then s:=s+'Sch';
 if OldName[i] = 'щ' then s:=s+'sch';
 if OldName[i] in ['Ъ','ъ','Ь','ь'] then s:=s+chr(39);
 if OldName[i] = 'Ю' then s:=s+'Yu';
 if OldName[i] = 'ю' then s:=s+'yu';
 if OldName[i] = 'Я' then s:=s+'Ya';
 if OldName[i] = 'я' then s:=s+'ya';
 i:=i+1;
end;
Convert:=s;
end;

end.

PM MAIL   Вверх
Полудненко Олег
Дата 26.12.2003, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



Snick_Y2K смысл писать файл в массивconfused.gif
PM MAIL   Вверх
December
Дата 26.12.2003, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Цитата
смысл писать файл в массив
чтобы не терялась таблица при завершении работы


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 26.12.2003, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Цитата
Snick_Y2K смысл писать файл в массив confused.gif


Виноват, в данном случае смысла нет... Просто у меня была задача немного обратная... был массив, который надо было проверить на наличие кириллицы, транслировать символы, и полученый массив записать в файл... Хотел привести этот пример, но NiJazz меня опередил... smile.gif


--------------------
PM MAIL WWW ICQ Skype   Вверх
NiJazz
Дата 27.12.2003, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Цитата
Хотел привести этот пример, но NiJazz меня опередил... 

Так вышло.... smile.gif
PM MAIL   Вверх
Гость_DenisK
Дата 7.10.2005, 10:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Читаем строку из файла, обращаемся к процедуре, пишем результат в другой файл. Читаем следующую строку и т.д.

Код

Function TranslitRus2Lat(const Str:String):String;
const
RArrayL='абвгдеёжзийклмнопрстуфхцчшщьыъэюя';
RArrayU='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ';
colChar=33;
arr:array[1..2,1..ColChar] of string=
 (('a','b','v','g','d','e','yo','zh','z','i','y',
   'k','l','m','n','o','p','r','s','t','u','f',
   'kh','ts','ch','sh','shch','''','y','''','e','yu','ya'),
  ('A','B','V','G','D','E','Yo','Zh','Z','I','Y',
   'K','L','M','N','O','P','R','S','T','U','F',
   'Kh','Ts','Ch','Sh','Shch','''','Y','''','E','Yu','Ya'));
var i:Integer;
    LenS:Integer;
    p:integer;
    d:byte;
begin
  result:='';
  LenS:=length(str);
  for i:=1 to lenS do
  begin
    d:=1;
    p:=pos(str[i],RArrayL);
    if p=0 then
    begin
      p:=pos(str[i],RArrayU);
      d:=2
    end;
    if p<>0 then result:=result+arr[d,p]
       else result:=result+str[i];//если не русская буква, то берем исходную
  end;
end;

//sample:

procedure Edit1Change(Sender: TObject);
begin
  edit2.text := TranslitRus2Lat(edit1.text);
end;


Это сообщение отредактировал(а) Girder - 8.10.2005, 02:04
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.