Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2009, 22:05
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка Транслитерация имен файлов

Привет, люди помогите поправить функцию, не предлагайте другую, мне именно надо исправить эту, ошибка ламерская, чет я тут намудрил, но выцепить ошибочку не могу

Код:
const
  CYRILLIC_SYMBOLS: array[1..66] of String =
    ('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',
    'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я');
  LATIN_SYMBOLS: array[1..66] of String =
    ('A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'Y', 'K', 'L',
    'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh',
    'Chsh', '''''', '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', 'h', 'ts', 'ch', 'sh',
    'chsh', '''''', 'y', '''', 'e', 'yu', 'ya');

function Transliterate(const Source: String): String;
var
  I, M, Index: Integer;
begin
  Result := '';
        for I := 1 to Length(Source) do
  begin
       for M := 1 to 66 do
    begin
    Index := Pos(Source[i], CYRILLIC_SYMBOLS[M]);
    if Index > 0 then
      Result := Result + LATIN_SYMBOLS[Index]
    else
      Result := Result + Source[i];
    end;
  end;
end;
Ответить с цитированием
  #2  
Старый 23.02.2009, 22:29
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Код:
function Transliterate(const Source: String): String;
var
  I, M, Index: Integer;
begin
  Result := '';
  for I := 1 to Length(Source) do
  begin
    M := 1;
    while M <= 66 do
    begin
      if Source[i] = CYRILLIC_SYMBOLS[M] then
      begin
        Result := Result + LATIN_SYMBOLS[M];
        break;
      end;
      Inc(M);
    end;
    if M >= 66 then
      Result := Result + Source[i];
  end;
end;
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 23.02.2009, 22:32
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Спасибо, выручил
Ответить с цитированием
  #4  
Старый 23.02.2009, 22:41
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Не за что. Только опечатку мою поправь:
вместо if M >= 66 then
надо if M > 66 then
__________________
Не забывайте делать резервные копии
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter