![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
kr3v3tkus |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
нужно сделать переводчик, слова берёт из тхт, слова разных языков разделены пробелом.
подскажыте плз что за косяк в цикле (и ваще я так делаю или нет? >__> ) плюс интересная штука в последней строке переменную f почемуто принимает за стринг, хотя везде описал как буль Код Output.Text:=''; f:=false; repeat if BaseField.Text[i]<>' ' then Str:=Str+BaseField.Text[i] else begin if BaseField.Text=Str then begin f:=true; repeat Output.Text:=Output.Text+BaseField.Text[i]; inc(i); until BaseField.Text[i]=' '; Str:='' end; end; inc(i); until BaseField.Text[i]=''{ or f=true}; Сообщение отредактировано: kr3v3tkus - 5.10.2007 16:24 Прикрепленные файлы ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата плюс интересная штука в последней строке переменную f почемуто принимает за стринг, хотя везде описал как буль Мало правильно описывать, надо еще правильно вызывать:until (BaseField.Text[i]='') or (f=true); или просто until (BaseField.Text[i]='') or f; Цитата что за косяк в цикле Угу... Только ты покажи полностью код со всеми описаниями, а то придумывать что там у тебя и как - зачем? |
kr3v3tkus |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
гоменасай забыл прикрепить файл)
-------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
kr3v3tkus, я бы на твоем месте вместо TMemo для хранения словаря использовал TValueListEditor... Придется чуть-чуть добавить кода при инициализации программы (читать файл и записывать в TValueListEditor вручную), зато потом основной цикл станет таким:
procedure TDictionary.TransClick(Sender: TObject); |
kr3v3tkus |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Цитата читать файл и записывать в TValueListEditor вручную Код ValueListEditor1.Strings.LoadFromFile('base.txt'); ? А нельзя всё таки какнить с мемо? ![]() ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата А нельзя всё таки какнить с мемо? Можно. "В принципе, можно и зайца научить курить" (С), но только вот у тебя код неправильный, в этом все дело... Тебе придется каждый раз (для каждого слова, фигурирующего в поле Input) проходить по всему Memo, в каждой строке брать ту часть, которая до пробела, сравнивать ее с самим выделенным словом, и если есть совпадение - то брать часть строки Memo после пробела и добавлять ее к полю Output...Что я тебе предлагаю: при инициализации (т.е., один раз) делаешь так: procedure TDictionary.FormCreate(Sender: TObject);, и у тебя есть готовый массив с индексами-строками, никаких велосипедов... Сообщение отредактировано: volvo - 6.10.2007 0:01 |
kr3v3tkus |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
вольвыыыыч позялста последние 2 вопроса
![]() Код SL.Delimiter := ' '; SL.DelimitedText := StringReplace(Input.Text, ' ', ' ', [rfReplaceAll]); for i := 0 to pred(SL.Count) do Output.Text := Output.Text + ValueListEditor1.Values[SL[i]] + ' '; допустим мы ввели слово "собака" - как мы тут узнаём что ему соответствует слово "dog"? SL.DelimitedText := StringReplace(Input.Text, ' ', ' ', [rfReplaceAll]); - мы же просто в DelimitedText передаём текст, только с переносом строки заменённым на пробел? и второй вопрос - допустим мы знаем какая раскладка - если она англ и ввели слово "dog" то как вывести "собака"? с помощью ValueListEditor1.Names? я непойму какие параметры там ставить ![]() Сообщение отредактировано: kr3v3tkus - 6.10.2007 3:06 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата как мы тут узнаём что ему соответствует слово "dog"? Я ж говорил: у тебя один столбец - это индексы, а второй - значения, ИМ соответствующие. То есть, при занесенииValueListEditor1.InsertRow('собака', 'dog', true);ты задаешь однозначно: "если будут искать 'собаку' - это 'dog'"... Вот тут же у тебя не возникает сомнения:
почему, собственно если брать значение arr[1], то это - 'cat'? Так же и там, только индекс - не целое число, а строка... Теперь чуть подробнее о том, как работает непонятный тебе код:
Цитата если она англ и ввели слово "dog" то как вывести "собака" Нельзя этого делать с одним словарем... Для двухстороннего перевода понадобятся 2 словаря: англо-русский и русско-английский... Но можно и схитрить:procedure TDictionary.FormCreate(Sender: TObject);Теперь у тебя будет двухсторонний словарь: ищешь по русскому индексу - находишь перевод на английский, и наоборот... Сообщение отредактировано: volvo - 6.10.2007 3:39 |
kr3v3tkus |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
ууу пасибки, въехал
![]() ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 23:04 |