Переводчик

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Переводчик

Сообщение Max! » 05.05.2003 (Пн) 17:02

Я не буду объяснять ситуацию полностью! Мне надо чтобы когда прога перевадила текст могла соединять слова! Вот кусок Кода
Код: Выделить всё
Private Sub cmPer_Click()
Dim b As String
If txt1 = "Hi" Then
   b = "Привет"
  End If
  Dim c As String
If txt1 = "Max" Then
b = "Максим"
  End If
Open "File 11" For Output As #1
  Print #1, b
   Print #1, b
  Close #1
  Dim a As String
Open "File 11" For Input As #1
   Input #1, b, b
txt2 = b
txt2 = b
Close #1
End Sub

Точнее мне надо чтобы прога соеденила эти два слова после перевода , а у меня она только по словам переводит Например я пишу
"Hi Max" и после нажатия на кнопку он должен написать "Привет Максим" ! Как это сделать? Заранее благодарен! :wink:
Max!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 05.05.2003 (Пн) 17:11

При приведенной тобой структуре это не возможно. Т.е. есть возможно но это большая морока. меняй концепцию
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 05.05.2003 (Пн) 17:53

А если поменять переменные Например "A" и "X" !
Max!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 05.05.2003 (Пн) 18:00

АААААА!!!!!! :lol:

Гмм....... Поменять ты конечно можешь, но что от этого изменится?
Я имею ввиду что тебе надо имитировать конвейнер а не ручную работу.
То что ты сейчас делаешь, это ручками берешь слово проверяешь, заменяешь и ложишь обратно. ПОШТУЧНО!
А тебе надо все ложить в ящик по длинее один за другим....
Если понял, скажи что не понял....
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 05.05.2003 (Пн) 18:35

Если чесно то не понял! Можешь превисти код! :?: :!:
Max!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 05.05.2003 (Пн) 19:42

Max! писал(а):Если чесно то не понял! Можешь превисти код! :?: :!:

Я так и думал........ :( :( :roll:

Ладно, идею я тебе дам. НО, постарайся все таки понять, это только концепция:
Код: Выделить всё
type Conveer
    perv(2,2) as string
    stext() as string
end type
Public Sub Load_Con(con as Conveer)
    con.perv(0,0)="Hi"
    con.perv(0,1)="Привет"
    con.perv(1,0)="Max"
    con.perv(1,1)="Максим"
End Sub
Public Sub Perevod(text as string, con as Conveer)
dim i as integer
    con.stext=split(text)
    for i=lbound(con.stext) to ubound(con.stext)
        if con.stext(i)=con.perv(i, 0) then
            con.stext(i)=con.perv(i,1)
        end if
    next i
    text=""
    for i=lbound(con.stext) to ubound(con.stext)
        text=text & con.stext(i) & " "
    next i
end sub


Это только набросок. Конечно можно сделать короче, можно обойтись одним циклом, можно не делать нового типа и т.п......
Но, это каркас, в будущем возможно при переводе текста помимо перевода слов, надо будет правильно строить фразы, а у английского и русского разные формы предложения. По этому мой вариант позволяет добавить порядок слов в переводе, т.е. это сказуемое, это существительное, и можно быдет их правильно расположить.
Затем правильно сделать один тип вместо того чтобы объявлять каждый раз кучу массивов. Ну и так культурней :D .......

В общем, попытайся понять....Хочешь нарисую? :o
Последний раз редактировалось FaKk2 05.05.2003 (Пн) 23:03, всего редактировалось 1 раз.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 05.05.2003 (Пн) 21:16

А что нарисуй! :wink:
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.05.2003 (Вт) 10:44

Вы, уважаемые идете не тем путем.

Надо хранить все слова в базе данных в таблице парами.

Тоесть будет две колонки - одна с русскими вторая с английскими. Тогда для получения перевода достаточно будет выполнить простой запро типа SELECT * FROM WORDS WHERE ENGLISH = 'MICE' и все. И не надо никаких массивов и прочей фигни.

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 06.05.2003 (Вт) 11:11

Согласен с RayShade
Если делать простой переводчик (не умеющий синтаксис понимать)
то делайте через DB так сделаны все нынешние переводчики.
Серез массив это громоздко и медленно.

PS Use ADO :)
Moderator VBStreets
---------------------------

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 06.05.2003 (Вт) 11:11

Это тоже вариант, не спорю :) . Я только привел пример поточности процесса.
2ASD:
А если не делать? Если нужен более или менее нормальный переводчик? все равно надо будет из таблицы в массив грузить.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 06.05.2003 (Вт) 11:46

Думаю ненадо.
Движек базы уже штука оптимизированная.

Делается движек анализирующий предложение, далее делается анализ каждого слова, и далее берется из базы перевод, с учетом анализа. Или еще както (в плане конструкции предложений)...

Но думаю тут надо кроме технического, еще и языковое образование иметь.
Moderator VBStreets
---------------------------

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 06.05.2003 (Вт) 16:18

А можно кодом , и по подробнее?
Max!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 06.05.2003 (Вт) 18:20

Анализаторы текста уже готовые есть - библиотеки на C++, поищи в Яндексе. Главное не это.

Написание подобного анализатора может занять не один год (я серьезно), поэтому одному это сделать просто *очень* сложно.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 06.05.2003 (Вт) 20:34

gaidar писал(а):Анализаторы текста уже готовые есть - библиотеки на C++, поищи в Яндексе. Главное не это.

Написание подобного анализатора может занять не один год (я серьезно), поэтому одному это сделать просто *очень* сложно.


Спорим твой совет ему не поможет? :twisted:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 07.05.2003 (Ср) 11:56

Делай базу аксесовскую с таблицей (например myTable) и двумя полями типа

rus, eng (оба текстовых), забиваешь в нее свои слова (словорик бери и заноси их туда :) ) Далее пиши код который из твоего текста выбирает слово и делай запрос к базе Select * from myTable where rus=слово_по_русски
Назад будет возврщено слово по английски.
Пример писать просто времени нет. Ну если ОООчень туго пойдет пиши в личные помогу.
Moderator VBStreets
---------------------------

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 13.05.2003 (Вт) 15:24

Нет мне не нужно что бы прога могла находить смысл и подлежащие и сказуемое ! Постараюсь объяснить ! у меня есть два TextBox'a "txt1.Text" "txt2.Text" и кнопка "cmPerevod" и Модуль

Код Модуля :

Код: Выделить всё
Private Perevod
Dim f as string
Dim s as string
f = "Hi"
s = "Max"
'Слова после перевода
Dim ru as string
Dim ru2 as string
ru = "privet"
ru2 = "Maxim"

'Типерь как сделать что бы если пользователь введёт слово Hi в "txt1.Text" он полу перевод "privet" в "txt2.Text" аналогично со          вторым словом

Но  самое главное как получить перевод если пользователь напишет в "txt1.Text"  "Hi Max" и если наоборот!

В принцапи я могу использовать такой код

If txt1.Text = "Hi" Then
txt2.Text = "privet"
End i
f
If txt1.Text = "Max" Then
txt2.Text = "Maxim"
End if

но если слов больше ста то как я могу угодать какие слова пользователь скомбинирует и какое предложение получится!

Код кнопки такой

Private Sub cmPerevod_Click()
Call Perevod
End Sub


Help me please! :!: :!: :!:
Max!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.05.2003 (Вт) 16:13

Читая этот топик, получаю некоторого рода удовольствие...

Код: Выделить всё
Function TranslateHiMaxCommaManyOfThem(InS as String) as String
  TranslateHiMaxCommaManyOfThem = Replace(Replace(InS, "Hi", "Привет",,, vbTextCompare), "Max", "Максим",,,vbTextCompare)
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 14.05.2003 (Ср) 10:37

Max, тебе уже все написали и дали кучу дельных советов!!!!

1) раз у тебя куча слов - создай простенькую БД, где храни пары слов (слово - перевод...).
Ну или если с базой неохота возиться, а хочется только чтобы работало - то используй массив, как тебе FAKK2 предлагал... Но с базой красивее и лучше!

2) в Text1 у тебя длинное предложение = слова, разделенные пробелами, например. Эту строку разбей на отдельные слова например с помощью функции Split и у тебя получится массив слов.

3) в цикле запроси из базы перевод для каждого из слов в массиве, склей их в строчку и пихни ее свой Text2!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 14.05.2003 (Ср) 11:04

Rainbow

Дело в том, что думать не хочет. Он у тебя щас код попросит... :cry:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 14.05.2003 (Ср) 11:13

Значит так! Это форум для тех, кто не ленится иногда шевелить мозгами! :)

Поэтому тех, кто это делать не может (хочет, не будет, не желает, не умеет, не понимает, не.... и т.д.) мы будем в наряд и еще раз в наряд! 8)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 14.05.2003 (Ср) 11:14

Поддерживаю руками и ногами. :D :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.05.2003 (Ср) 11:37

Max!, могу написать для тебя готовые функции.
За 20 евро напишу основной модуль и 10 функций (TranslateEnRu_Hi, TranslateEnRu_Max, TranslateEnRu_Hello, TranslateEnRu_AllRight, TranslateEnRu_Bye, TranslateRuEn_Hi, TranslateRuEn_Max, TranslateRuEn_Hello, TranslateRuEn_AllRight, TranslateRuEn_Bye). Если понадобиться, потом могу добавить еще функций, 5 евро за восемь функции.
Деньги желательно перечислять по WebMoney, в крайнем случае пойдет и перевод через Western Union. 100% предоплата, используется курс ЦБ.
Lasciate ogni speranza, voi ch'entrate.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 14.05.2003 (Ср) 11:45

Злые вы!
Просто когда проделал это тысячу раз - все понятно. А когда первый раз - и массив может быть открытием! :wink:
Вдруг у человека второе дыхание откроется? Хотя случай тяжелый... :lol:

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 14.05.2003 (Ср) 13:23

Rainbow

Ты здесь 5 сообщений живешь, а я около 200.....
Ты просто не читал предыдущие перлы Макса.... :wink:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 07.08.2003 (Чт) 19:41

FAKK2 писал(а):Rainbow Ты здесь 5 сообщений живешь, а я около 200..... Ты просто не читал предыдущие перлы Макса.... :wink:


Я вот дамаю, как Rainbow выносит, что ей пишут в мужском лице?

А перлы можно и простить - это, как-никак, форум для новичков. И если он не знает чего-то, то по крайней мере хочет узнать. Значит все же мысль работает-таки.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 07.08.2003 (Чт) 20:13

gaidar писал(а):Я вот дамаю, как Rainbow выносит, что ей пишут в мужском лице?


Вот тебе яркий пример, того, что пора уже вносить графу Пол, в профиль :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 07.08.2003 (Чт) 20:14

gaidar писал(а):Я вот дамаю, как Rainbow выносит, что ей пишут в мужском лице?


Вот тебе яркий пример, того, что пора уже вносить графу Пол, в профиль :D
Кста, я уже в два раза больше живу 8) :lol:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 07.08.2003 (Чт) 22:22

Я за то, чтобы не стебаться над новичками.
Звание у меня не соответствует реальности, и когда я захожу на форум "Visual Basic", понимаю, что я понимаю только где-то 1/10 вопросов. Поэтому практически каждый мой вопрос начинается со слов "глупый" и "смешной" и каждый свой вопрос я публикую в форуме для новичков, вне зависимости от того, сложный он для меня, или не очень. Просто читая темы на "взрослом" форуме (себя я ещё чувствую ребёнком) становится ясно, что мои вопросы - проверка знаний из 1-го класса для некоторых. И это не самое приятное чувство. А насчёт того, что,
Это форум для тех, кто не ленится иногда шевелить мозгами!
ИМХО, это к новичкам не относится. Сам только что был новичком - по себе знаю, очень часто тебе и хочется пошевелить мозгами, но когда тебе вместо понятного кода выкладывают какую-нибудь функцию, в которой ты понимаешь только 2 слова - "Private" и "End" да ещё и говорят, что ты - тупица и не хочешь шевелить мозгами, становится обидно. Не на тех людей, которые тебе помогают, а на самого себя, что ты так мало знаешь.
Нет меня больше

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 07.08.2003 (Чт) 23:46

В чем то ты прав...
Но когда, такой ньюб, с пеной у рта кричит и требует чтобы ему, тут же, не отходя от кассы, разжевали, в рот положили, и ещё заставили проглотить :twisted: .......Тут, как бы сказать уже нечего :wink:
Но, это крайность конечно :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 08.08.2003 (Пт) 13:25

Ну да, я понимаю, конечно, но всё же... Он же не так уж конкретно требует, просто не знает, как, эти массивы и БД для него, видимо, неизведанное новшество (я не смеюсь). Если бы он кричал, "с пеной у рта" требовал, чтобы ему выложили код, и немедленно... Он же просит довольно вежливо. Или я не прав?..
По программе я ничего существенного не могу сказать, разве что "нужно непременно использовать БД". Проблема не в этом, на мой взгляд, а в том, что слова в Text1.text нужно как-то разделять между собой - переводить-то нужно каждое слово по отдельности, а не весь текст, как одно слово.
Нет меня больше

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 4

    TopList