Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2012, 17:01   #1
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию Поиск и перевод слов в TStringList

Здравствуйте, такая задача, реализовать функцию, которая ищет слова например 'Preparing spawn area' на 'Подготовка области спавна' в TStringList и еще, чтобы все было записано в текстовый документ и оттуда бралось слово и перевод
Код:
Preparing spawn area = Подготовка области спавна
и так далее
Заранее спасибо)
sariman вне форума Ответить с цитированием
Старый 28.07.2012, 18:29   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

StringReplace
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.07.2012, 19:20   #3
Rock-n-Rolla
Форумчанин
 
Регистрация: 11.01.2012
Сообщений: 177
По умолчанию

в текстовой документе прописываешь список замен в формате
Цитата:
Preparing spawn area = Подготовка области спавна
Код:
str - строка для замены
list.LoadFromFile(....);
for i:=0 to list.Count()-1 do
  str  := StringReplace(str, list.Names[i], list.ValueFromIndex[i]
                           [rfReplaceAll, rfIgnoreCase]);
в str всё заменено
progromore.i2p - первый русскоязычный портал программистов в скрытосети
Rock-n-Rolla вне форума Ответить с цитированием
Старый 28.07.2012, 19:39   #4
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию

большое спасибо)
sariman вне форума Ответить с цитированием
Старый 28.07.2012, 19:49   #5
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию

Вот такая функция но почему-то не работает(
Код:
function TFormMain.Translate(Word: String): string;
var List: TStringList;
    i: Integer;
begin
List:=TStringList.Create;
List.LoadFromFile(FileName);
for i:=0 to List.Count-1 do
Word:=StringReplace(Word, List.Names[i], List.ValueFromIndex[i], [rfReplaceAll, rfIgnoreCase]);
end;
sariman вне форума Ответить с цитированием
Старый 28.07.2012, 20:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
почему-то не работает
Ай печалька...
А протрассировать по шагам и посмотреть как отрабатывает код не судьба?

P.S. Кстати обрати внимание - твоя функция ничего не возвращает
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2012, 20:20   #7
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию

хм, а почему не возвращает? там же все обьявлено
sariman вне форума Ответить с цитированием
Старый 28.07.2012, 21:01   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Где? Не вижу там инструкции Result
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2012, 23:47   #9
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию

короче у меня прога типо консоли, исходник вот, функция не помогает, ввожу Preparing to spawn area и ничего не происсходит(

Последний раз редактировалось sariman; 28.07.2012 в 23:55.
sariman вне форума Ответить с цитированием
Старый 29.07.2012, 12:09   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно. Ты все делаешь не так. У тебя Word мало того что зарезервированное слово, так еще и обьявлена как константа, а значит никакими силами не может быть изменено на выход. К тому же утечка памяти - ты List не освобождаешь.

Вот как нужно:
Код:
function TFormMain.Translate(AWord: String): string;
var    i: Integer;
begin
with TStringList.Create do begin
 LoadFromFile(FileName);
 Result:=AWord;
 for i:=0 to Count-1 do
  Result:=StringReplace(Result, trim(Names[i]),
  Values[Names[i]],  [rfReplaceAll, rfIgnoreCase]);
 Free;
end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск слов(C++) VadEr Помощь студентам 13 22.05.2014 15:42
Поиск и удаление символа в TStringList sariman Общие вопросы Delphi 2 25.07.2012 23:56
Выполнить поиск вхождений в TStringList aquatell Общие вопросы Delphi 1 21.04.2011 17:37
Перевод слов Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 28.12.2009 15:32
Поиск и замена слов. ildarn Общие вопросы C/C++ 1 25.11.2009 19:01