![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Незнакомец |
![]()
Сообщение
#1
|
Гость ![]() |
Здравствуйте. Не могли бы подсказать как сделать вот такую штуку: замешательство
в TMemo находится английский текст (например: Цитата Hello world ), как сделать так чо бы считывать слова и вставлять их перевод в др мемо из файла-словаря? В файле слова находятса в таком виде: .................. hello привет .................. .................. world мир ............... И результат получался бы типа такого: Цитата привет мир |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
все просто. Надо сначала слова выделить в memo, как это сделать читай в FAQе нашем... далее все очевидно...
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Н |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Надо сначала слова выделить в memo это, то есть считать их в массив, или я не правильно понял? |
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Н @ 30.08.05 22:17) это, то есть считать их в массив, или я не правильно понял? Я бы не стал выделять слова, т.к. потом после замены придется их опять в строку клеить, да и все знаки запятые и проч. потеряются. Проще читать построчно, искать вхождение каждого слова через Pos и сразу заменять. Правда придется добавить проверку, чтобы не было замен внутри слов, но это прсто ![]() |
Н |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата Проще читать построчно, искать вхождение каждого слова через Pos и сразу заменять. Правда придется добавить проверку, чтобы не было замен внутри слов А как это сделать, можно пример? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Вот тебе работающий набросок на FPC, просто добавь построчное чтение из Memo в строку S и измени процедуру Replace_Word так, чтобы она меняла переданное ей слово на соотв. слово из файла-словаря:
procedure replace_word(s: string); Как видишь, все разделители сохраняются... Кстати, эту программку можно еще оптимизировать ;) |
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Н @ 31.08.05 11:39) А как это сделать, можно пример? Как то вот так: for i:=1 to КолвоСловВсловаре do |
Н |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата построчное чтение из Memo в строку S блин не получается сделать, и найти не могу как делать ... ![]() |
Malice |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Н @ 31.08.05 14:50) блин не получается сделать, и найти не могу как делать ... ![]() Ну так как у меня: s:=memo1.Lines.Strings[j]; Строки нумируются с нуля. |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
For currLine := 0 To Pred(memo1.Lines.Count) Do Begin |
Н |
![]()
Сообщение
#11
|
Гость ![]() |
volvo, Malice Спасибо...
![]() |
Н |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата Replace_Word так, чтобы она меняла переданное ей слово на соотв. слово из файла-словаря Я открываю файл для чтения, а как дальше осуществить писк и замену S ? |
hiv |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Словарь лучше хранить в виде:
word=слово Тогда чтение его и использование упрощается: var ER :TStrings; Вот и все. А как найти в строке все слова можно найти в FAQ. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Н |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата как найти в строке все слова можно найти в FAQ. Пересмотрел FAQ несколько раз но ничего подобного не нашел ![]() |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
В каком FAQ-е искал? В Дельфийском? А в Паскалевском посмотреть не догадался? Синтаксис-то один и тот же
![]() Хотя я тебе привел более подходящий для твоего случая алгоритм, сохраняющий все разделители, а функция из FAQ-а все разделители выбрасывает. |
Н |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата Хотя я тебе привел более подходящий для твоего случая алгоритм, сохраняющий все разделители, а функция из FAQ-а все разделители выбрасывает. Я просто хотел доделать твой алгоритм, что бы происходил поиск, слов из считанной строки, в словаре и их замена... |
hiv |
![]()
Сообщение
#17
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Смотри пост 13. Лучше всетаки сделать проверку, что английское слово не найдено, тогда оно остается неизменным в тексте:
var ER :TStrings;PS: Не забудь, что в английском есть сокращения с использованием апострофа, а также он используется в именах собственных в притяжательном склонении. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Н |
![]()
Сообщение
#18
|
Гость ![]() |
Собрал все в одно, вот что получилось:
а он выдает такие ошибки: [Error] 123.pas(41): Undeclared identifier: 'Memo2' [Error] 123.pas(41): Missing operator or semicolon что не так? |
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
Цитата(Н @ 5.09.05 21:18) а он выдает такие ошибки: Ну, с этой ошибкой: " [Error] 123.pas(41): Undeclared identifier: 'Memo2' " довольно прозрачно: у тебя просто Memo2 принадлежит классу формы, но вот процедура replace_word - то не является методом этого класса, поэтому для нее Memo2 не существует... А вот эта: " [Error] 123.pas(41): Missing operator or semicolon " исчезнет сама собой, как только будет исправлена первая, просто сейчас структура программы нарушена, и пока ее не восстановишь - дальше будут "наведенные" ошибки... |
hiv |
![]()
Сообщение
#20
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
![]() -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 18:48 |