Найти тему

Сравнение переводов

Для сравнения переводов мы разработали следующую программу.

Интерфейс программы для сравнения переводов с оригиналом
Интерфейс программы для сравнения переводов с оригиналом

Вот её основные функции

-2
-3

Работая с данной программой мы можем одновременно увидеть оригинал и два перевода.

-4

Далее можно объединить все версии переводов для выбранного стиха. Например, книга Иова 1:1.

אִ֛ישׁ הָיָ֥ה בְאֶֽרֶץ־ע֖וּץ אִיּ֣וֹב שְׁמ֑וֹ וְהָיָ֣ה׀ הָאִ֣ישׁ הַה֗וּא תָּ֧ם וְיָשָׁ֛ר וִירֵ֥א אֱלֹהִ֖ים וְסָ֥ר מֵרָֽע׃

01_APB 150/23
(Некий) человек жил в странe Авситидийской, имя ему - Иов. И был тот человек истинен, непорочен, праведен, богобоязнен, удалялся от всякой худой вещи.
---------------------
02_CRV 101/19
Жил в земле Уц человек по имени Иов, был он непорочен и честен, боялся Бога и сторонился всякого зла.
---------------------
03_RST 110/20
Был человек в земле Уц, имя его Иов; и был человек этот непорочен, справедлив и богобоязнен и удалялся от зла.
---------------------
При этом программа указывает аббревиатуру перевода, количество символов и слов в тексте стиха.

Также программа умеет выводить целые главы в различных окнах и анализировать тексты: подсчитывать слова, находить повторяющиеся слова и словосочетания, сортировать строки по возрастанию и убыванию, рисовать таблицы и многое другое.

-5

Возьмём для примера текст Иов 1:2.

-6

Программа сравнивает два перевода, находит повторяющиеся слова, выделяет и выписывает их (<него>).

Программа может разделить текст на две части и нарисовать таблицу, в первой колонке которой находятся повторяющиеся в тексте слова, а во второй неповторяющиеся. Например, для Иов 1:3 это:

И было скота у него: овец семь тысяч, верблюдов три тысячи, волов пять сот пар, пять сот пасущихся ослиц и слуг весьма много, и дела великие были у него на земле, и он был знатнейшим из жителей востока солнца.
---------------------
и владел он семью тысячами коз и овец, тремя тысячами верблюдов, пятью сотнями пар волов, пятью сотнями ослиц и великим множеством слуг. Был он величайшим из всех сынов Востока.

Повторяющиеся слова: него овец верблюдов волов пять сот пар ослиц слуг был востока тысячами пятью сотнями.

Неповторяющиеся слова: и было скота у семь тысяч три тысячи пасущихся и весьма много и дела великие были у на земле и он знатнейшим из жителей солнца || и владел он семью коз и тремя и великим множеством он величайшим из всех сынов.

Программа способна сортировать строки по возрастанию и убыванию. Например, Иов 1:5:

255/43 Когда круг пиршественных дней совершался, Иов посылал [за ними] и освящал их и, вставая рано утром, возносил всесожжения по числу всех их. Ибо говорил Иов: может быть, сыновья мои согрешили и похулили Бога в сердце своем. Так делал Иов во все [такие] дни.
274/43 А когда заканчивались пиршественные дни, Иов приглашал их к себе на обряд освящения. Ранним утром он приносил жертвы всесожжения за каждого из своих сыновей, ибо так рассуждал Иов: "Быть может, мои сыновья согрешили — хулили Бога в сердце своем". Так поступал Иов постоянно.
280/50 И когда оканчивались дни пира, Иов посылал и очищал их, встав поутру: приносил о них жертвы по числу их, и одного тельца за грех о душах их, ибо говорил Иов: "Может быть, сыновья мои как-нибудь согрешили и в сердце своём дурное помыслили против Бога". Так поступал Иов во все дни.

Ну и конечно же, программа может объединять все переводы последовательно стих за стихом в заданном порядке, составлять словарь к тексту и группировать слова по частотному принципу.

(Некий) человек жил в странe Авситидийской, имя ему - Иов. И был тот человек истинен, непорочен, праведен, богобоязнен, удалялся от всякой худой вещи.

Жил в земле Уц человек по имени Иов, был он непорочен и честен, боялся Бога и сторонился всякого зла.

Был человек в земле Уц, имя его Иов; и был человек этот непорочен, справедлив и богобоязнен и удалялся от зла.

И было у него семь сынов и три дочери.

Родились у него семеро сыновей и трое дочерей;

И родились у него семь сыновей и три дочери.

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

и владел он семью тысячами коз и овец, тремя тысячами верблюдов, пятью сотнями пар волов, пятью сотнями ослиц и великим множеством слуг. Был он величайшим из всех сынов Востока.

Имения у него было: семь тысяч мелкого скота, три тысячи верблюдов, пятьсот пар волов и пятьсот ослиц и весьма много прислуги; и был человек этот знаменитее всех сынов Востока.

И собирались сыновья его друг к другу, устраивали ежедневно пир, взяв с собою и трех сестер своих, чтобы с ними есть и пить.

Его сыновья по очереди устраивали в своих домах пиры; посылали они и за сестрами, приглашая их есть и пить вместе с ними.

Сыновья его сходились, делая пиры каждый в своем доме в свой день, и посылали и приглашали трех сестер своих есть и пить с ними.

Список всех слов и частота их встречаемости в тексте трех русских переводов Иов 1:1-4:

029 и 007 был 006 человек 006 у 006 него 006 в 004 три 004 семь 004 с 004 он 004 его 003 сыновья 003 сынов 003 своих 003 пить 003 пар 003 ослиц 003 ними 003 непорочен 003 иов 003 земле 003 есть 003 востока 003 волов 003 верблюдов 003 было 002 этот 002 уц 002 устраивали 002 удалялся 002 тысячи 002 тысячами 002 тысяч 002 трех 002 сыновей 002 сотнями 002 сот 002 слуг 002 скота 002 сестер 002 родились 002 пятью 002 пятьсот 002 пять 002 посылали 002 по 002 пиры 002 от 002 овец 002 много 002 имя 002 из 002 зла 002 жил 002 дочери 002 всех 002 весьма 002 богобоязнен 001 - авситидийской Бога боялся были великие великим величайшим вещи взяв владел вместе всякого всякой дела делая день домах доме дочерей друг другу ежедневно ему жителей за знаменитее знатнейшим имени имения истинен их к каждый коз мелкого множеством на некий они очереди пасущихся пир праведен приглашали приглашая прислуги своем свой семеро семью сестрами собирались собою солнца справедлив сторонился странe сходились тот тремя трое худой честен чтобы.

Программа очень удобна, когда необходимо сравнить более десяти переводов, например такие русские модули, как: 01_ABi 02_APBGRKR 03_CARS 04_CRV 05_GUTNH 06_MKR 07_NRT 08_RST 09_RSTi 10_Tanah 11_VT1_Aver 12_WBTC 13_ВШНК.

Программа способна создавать русскоязычные модули, содержащие параллельные места, для работы с ними в продвинутых текстовых студиях, например, BibleWork.

01_ABi
И Господь сказал сатане: обратил ли ты твоё внимание на Моего раба Иова? Ибо нет такого, как он, на земле: человек непорочный, справедливый, богобоязненный и удаляющийся от зла.
---------------------
02_APBGRKR
И сказал ему Господь: "Обратил ли ты внимание на раба Моего Иова? Ибо нет такого, как он, на земле человекa: непорочного, истинного, богобоязненного, удаляющегося от всякого худого дела".
---------------------
03_CARS
Вечный сказал сатане: - Приметил ли ты Моего слугу Аюба? Нет на земле такого человека, как он: непорочного и праведного, кто живёт в страхе перед Всевышним и сторонится зла.
---------------------
04_CRV
ГОСПОДЬ спросил Врага: — Заметил ли ты Моего раба Иова? Другого такого нет на земле — он непорочен, честен, боится Бога и сторонится всякого зла.
---------------------
05_GUTNH
И сказал бог сатану: «обратил ли ты внимание на раба моего, ийова? Ведь нет подобного ему на земле: человек он простой и честный, и боится всесильного, и избегает зла!».
---------------------
06_MKR
И сказал Иегова сатане: обратил ли ты внимание свое на раба Моего, Иова? Ибо нет такого как он на земле; человек непорочный и справедливый, и боящийся Бога и удаляющийся от худого.
---------------------
07_NRT
Господь сказал сатане: - Приметил ли ты Моего слугу Иова? Нет на земле подобного ему человека, непорочного и праведного, живущего в страхе перед Богом и сторонящегося зла.
---------------------
08_RST
И сказал Господь сатане: обратил ли ты внимание твое на раба Моего Иова? ибо нет такого, как он, на земле: человек непорочный, справедливый, богобоязненный и удаляющийся от зла.
---------------------
09_RSTi
И сказал Господь сатане: обратил ли ты внимание твое на раба Моего Иова? ибо нет такого, как он, на земле: человек непорочный, справедливый, богобоязненный и удаляющийся от зла.
---------------------
10_Tanah
И сказал Господь сатану: обратил ли ты внимание на раба Моего Ийова, что нет подобного ему на земле; человек (он) непорочный и справедливый, Богобоязненный и удаляющийся от зла.
---------------------
11_VT1_Aver
И вопросил Господь Противоречащего: "Приметило ли сердце твое раба Моего, Иова? Ведь нет на земле мужа, как он: прост, и праведен, и богобоязнен, и далек от зла!"
---------------------
12_WBTC
Тогда спросил Господь: "Видел ли слугу моего, Иова? Никто на земле не сравнится с ним: он действительно хороший человек, поклоняется Богу и держится в стороне от зла".
---------------------
13_ВШНК
Господь спросил: «А ты не заметил Иова, раба Моего? Он один такой на земле: тих, праведен, боится Бога и сторонится зла».
---------------------
Программа написана на простом языке Visual Basic 2010 и не требует установки. Практически все ключевые моменты работы программы я постарался описать в следующем скрипте. Изобретение моё, аналогов в Интернете не имеет. Дарю всем желающим. Кому нужна инструкция по сборке и пользованию вышлю бесплатно.

Imports Microsoft.Office.Interop

ImportsSystem.Text.RegularExpressions

Public Class Form1

Dim Hebstr As String = ""

Dim Rustr As String = ""

Dim Names As String = ""

Dim Excep As String = ""

Dim ShrNam01 As String = ""

Dim ShrNam02 As String = ""

Dim Sorted As String = ""

Dim SortedRev As String = ""

Dim ln As String = ""

Dim bk As String = ""

Dim pth As String = ""

Dim lbl01 As String = ""

Dim RuNames() As String

Dim ShRuNames() As String

Dim Exceptns() As String

Dim HebstrAr() As String

Dim RustrAr() As String

Dim AllRus(,) As String

Dim TabAr(,) As String

Dim frw As Short = 0

Dim ret As Short = 0

Dim nxt As Short = 0

Dim prv As Short = 0

Dim lns As Short = 0

Dim bks As Short = 0

Dim x As Short = 0

Dim y As Short = 0

Dim Repeat As Boolean = False

' Создание таблицы

Sub Load_txt()

pth = "TEXT\00_Names.txt"

Try

Dim Читатель As New IO.StreamReader(pth)

Names = Читатель.ReadToEnd()

Читатель.Close()

Catch Exc As System.IO.FileNotFoundException

MessageBox.Show("Нет такого файла", "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Catch Exc As Exception

' Отчет о других ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

Names = Names.Replace(ChrW(10), "")

RuNames = Names.Split(ChrW(13)).ToArray

TextBox1.Text = "01" : Label2.Text = "Перевод" + vbCrLf + "" + String.Format("{0,2:d2}", (UBound(RuNames) + 1))

TextBox2.Text = "01"

ShrNam01 = Names

ShrNam01 = ShrNam01.Replace("TEXT\Job_01", "") : ShrNam01 = ShrNam01.Replace(".txt", "")

ShRuNames = ShrNam01.Split(ChrW(13)).ToArray

ShrNam02 = ""

For i = 0 To UBound(ShRuNames)

ShrNam02 += String.Format("{0,2:d2}", i + 1) + ShRuNames(i) + vbCrLf

Next

ToolTip1.SetToolTip(Button1, ShrNam02)

pth = "TEXT\Exceptn.txt"

Try

Dim Читатель As New IO.StreamReader(pth)

Excep = Читатель.ReadToEnd()

Читатель.Close()

Catch Exc As System.IO.FileNotFoundException

MessageBox.Show("Нет такого файла", "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Catch Exc As Exception

' Отчет о других ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

Excep = Excep.Replace(ChrW(10), "")

Exceptns = Excep.Split(ChrW(13)).ToArray

pth = "TEXT\01_Job_01_HEB.txt"

Try

Dim Читатель As New IO.StreamReader(pth)

Hebstr = Читатель.ReadToEnd()

Читатель.Close()

Catch Exc As System.IO.FileNotFoundException

MessageBox.Show("Нет такого файла", "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Catch Exc As Exception

' Отчет о других ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

Hebstr = Regex.Replace(Hebstr, "[)\[\]]", "")

Hebstr = Hebstr.Replace("(", "|| ")

Hebstr = Hebstr.Replace(ChrW(10), "")

HebstrAr = Hebstr.Split(ChrW(13)).ToArray

Label1.Text = "Текст" + vbCrLf + String.Format("{0,2:d2}", (UBound(HebstrAr) + 1))

ReDim AllRus(UBound(RuNames), UBound(HebstrAr))

For i = 0 To UBound(RuNames)

pth = RuNames(i)

Try

Dim Читатель As New IO.StreamReader(pth)

Rustr = Читатель.ReadToEnd()

Читатель.Close()

Catch Exc As System.IO.FileNotFoundException

MessageBox.Show("Нет такого файла", "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Catch Exc As Exception

' Отчет о других ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

Rustr = Rustr.Replace(ChrW(10), "")

RustrAr = Rustr.Split(ChrW(13)).ToArray

For j = 0 To UBound(RustrAr)

AllRus(i, j) = RustrAr(j)

Next

Next

Dim lbl01 As String = RuNames(0).Replace("TEXT\", "")

lbl01 = lbl01.Replace(".txt", "") : lbl01 = lbl01.Replace("Job_01_", "")

Label3.Text = "01_" + lbl01

Label5.Text = "02_" + RuNames(1).Replace("TEXT\", "")

Label4.Text = "01"

bk = ShRuNames(0) + " " + ShRuNames(1)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

TextBox5.Text = HebstrAr(0)

TextBox3.Text = AllRus(0, 0)

TextBox4.Text = AllRus(1, 0)

TextBox6.Text = AllRus(0, 0) + vbCrLf + "---------------------" + vbCrLf + AllRus(1, 0)

End Sub

' Выбор текста(ошибка была у Job 1, 15)

Sub OPN()

lns = CShort(TextBox1.Text) - 1

bks = CShort(TextBox2.Text) - 1

If lns <= UBound(HebstrAr) And bks <= UBound(RuNames) Then

lbl01 = RuNames(bks).Replace("TEXT\", "")

lbl01 = lbl01.Replace(".txt", "") : lbl01 = lbl01.Replace("Job_01_", "")

Label3.Text = String.Format("{0,2:d2}", bks + 1) + "_" + lbl01

Label4.Text = String.Format("{0,2:d2}", lns + 1)

If bks + 1 <= UBound(RuNames) Then

Label5.Text = String.Format("{0,2:d2}", bks + 2) + "_" + (RuNames(bks + 1).Replace("TEXT\", ""))

ElseIf bks = UBound(RuNames) Then

bk = ShRuNames(bks) '+ " " + ShRuNames(nxt + 1)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

End If

TextBox1.Text = String.Format("{0,2:d2}", lns + 1)

TextBox2.Text = String.Format("{0,2:d2}", bks + 1)

TextBox5.Text = HebstrAr(lns)

TextBox3.Text = AllRus(bks, lns)

TextBox4.Text = AllRus(bks + 1, lns)

TextBox6.Text = AllRus(bks, lns) + vbCrLf + "---------------------" + vbCrLf + AllRus(bks + 1, lns)

'bk = ShRuNames(bks) + " " + ShRuNames(bks + 1)

'bk = bk.Replace("_", "")

'Label6.Text = bk

'bk = ""

'If nxt + 1 <= UBound(RuNames) Then

' Label5.Text = String.Format("{0,2:d2}", nxt + 2) + "_" + (RuNames(nxt + 1).Replace("TEXT\", ""))

' bk = ShRuNames(nxt) + " " + ShRuNames(nxt + 1)

' bk = bk.Replace("_", "")

' Label6.Text = bk

' bk = ""

'ElseIf nxt = UBound(RuNames) Then

' bk = ShRuNames(nxt) '+ " " + ShRuNames(nxt + 1)

' bk = bk.Replace("_", "")

' Label6.Text = bk

' bk = ""

'End If

End If

End Sub

' Открыть главу слева

Sub Chapter()

Dim Chap As String = ""

For i = 0 To UBound(HebstrAr)

Chap += String.Format("{0,15:d2}", i + 1) + vbCrLf + AllRus(CShort(TextBox2.Text) - 1, i) + vbCrLf

Next

Label5.Text = String.Format("{0,2:d2}", CShort(TextBox2.Text)) + "_" + (RuNames(CShort(TextBox2.Text) - 1).Replace("TEXT\", ""))

TextBox4.Text = Chap

End Sub

' Открыть главу справа

Sub ChapterRght()

Dim Chap As String = ""

For i = 0 To UBound(HebstrAr)

Chap += String.Format("{0,15:d2}", i + 1) + vbCrLf + AllRus(CShort(TextBox2.Text) - 1, i) + vbCrLf

Next

Label6.Text = String.Format("{0,2:d2}", CShort(TextBox2.Text)) + "_" + (RuNames(CShort(TextBox2.Text) - 1).Replace("TEXT\", ""))

TextBox6.Text = Chap

End Sub

' Открыть главу в средней

Sub ChapterMdl()

Dim Chap As String = ""

For i = 0 To UBound(HebstrAr)

Chap += String.Format("{0,15:d2}", i + 1) + vbCrLf + AllRus(CShort(TextBox2.Text) - 1, i) + vbCrLf

Next

Label3.Text = String.Format("{0,2:d2}", CShort(TextBox2.Text)) + "_" + ShRuNames(CShort(TextBox2.Text) - 1) '.Replace("TEXT\", ""))

TextBox3.Text = Chap

End Sub

' Сортировка строк в TextBox6

Sub SortStr()

Dim strk As String = ""

Dim lngth As Integer = 0

Dim SortAr() As String = New String(UBound(RuNames)) {}

Dim WordAr() As String

ln = TextBox1.Text

For i = 0 To UBound(RuNames)

strk = AllRus(i, CShort(ln) - 1)

lngth = strk.Length

WordAr = strk.Split(" ").ToArray

SortAr(i) = CStr(lngth) + "/" + CStr(UBound(WordAr) + 1) + " " + strk

Next

Array.Sort(SortAr)

Sorted = String.Join(vbCrLf, SortAr)

Array.Reverse(SortAr)

SortedRev = String.Join(vbCrLf, SortAr)

ln = ""

End Sub

'Выделение повторяющихся слов

Sub RepWrd()

'Анализ текста"

Dim AnalStr As String = LCase(TextBox6.Text)

Dim AnalWrdStr As String = AnalStr.Replace(vbCrLf, " ")

AnalWrdStr = Regex.Replace(AnalWrdStr, "\W", " ")

AnalWrdStr = AnalWrdStr.Replace(" ", " ")

AnalWrdStr = AnalWrdStr.Replace(" ", " ")

AnalWrdStr = AnalWrdStr.Trim()

Dim AnalStrAr() As String = TextBox6.Lines.ToArray

Dim AnalWrdAr() As String = AnalWrdStr.Split(" ").ToArray

'Dim AnalWrdAr02() As String

AnalWrdStr = AnalWrdStr + " "

Dim AnalPhrAr01() As String = AnalWrdStr.Split(" ").ToArray

Dim AnalPhrAr02() As String = AnalWrdStr.Split(" ").ToArray

Dim TempList01 As New List(Of String)(AnalStrAr)

Dim TempList02 As List(Of String) = TempList01.Distinct().ToList

Dim TempListW01 As New List(Of String)(AnalWrdAr)

Dim TempListW02 As List(Of String) = TempListW01.Distinct().ToList

Dim RepStr As Integer = TempList01.Count - TempList02.Count

Dim RepStrW As Integer = TempListW01.Count - TempListW02.Count

Dim AnStrRep As String = ""

Dim AnStrRepW As String = ""

Dim AnStrRepW02 As String = ""

Dim RepStr2 As Integer = 0

Dim RepStr3 As Integer = 0

Dim AnalyzTxt As String = ""

Dim AnalyzTxtW As String = ""

Dim AnalyzTxt02 As String = ""

Dim AnalyzTxtW02 As String = ""

Dim TextAnal As String = ""

Dim TextAnalW As String = ""

Dim k As Integer = -1

Dim LinesStrAr As String = ""

Dim AllrepCount As Integer = 0

'03 Поиск повторяющихся слов

'0301 Удаление повторяющихся слов

'0302 Определение повторяющихся слов

'RepStr2 = 0

'RepStr3 = 0

'If RepStrW > 0 Then

' AnalyzTxtW02 += "(" + CStr(RepStrW) + "/" _

' + CStr(TempListW01.Count - RepStrW) + " - (" + String.Format("{0:p}", TempListW02.Count / TempListW01.Count) + "))."

' For Each NotRep In TempListW02

' If TempListW01.IndexOf(NotRep) <> TempListW01.LastIndexOf(NotRep) Then

' RepStr2 = RepStr2 + 1

' AnStrRepW += NotRep + " <" + String.Format("{0,3:d3}", TempListW01.IndexOf(NotRep) + 1) + "> / <" _

' + String.Format("{0,3:d3}", TempListW01.LastIndexOf(NotRep) + 1) + ">" + vbCrLf

' AnStrRepW02 += NotRep + " "

' End If

' Next

' AnStrRepW = AnStrRepW + vbCrLf

' AnStrRepW = AnStrRepW.Replace(vbCrLf + vbCrLf, "")

AnStrRepW = "Одинаковых слов " + CStr(RepStrW) + " из " + CStr(AnalWrdAr.Length) _

+ ", основных слов - " + CStr(TempListW02.Count) + " (" + String.Format("{0:p}", TempListW02.Count / TempListW01.Count) + ")."

'End If

'0303 Подсчет количества повторов

'AnStrRepW02 = AnStrRepW02.Trim()

'AnalWrdAr02 = AnStrRepW02.Split(" ").ToArray

''AnalWrdAr = TempListW02.ToArray

'AnStrRepW02 = ""

'For Each Rep In AnalWrdAr02

' For Each AllItm In AnalWrdAr

' If Rep = AllItm Then k = k + 1

' Next

' AnStrRepW02 += Rep + " (" + CStr(k) + ") "

' k = 0

'Next

'0303 Подсчет слов

Dim LinesWrdArTmp As String = ""

Dim LinesWrdAr As String = ""

Dim LinesWrdCount As Integer = 1

Dim AllrepWrdCount As Integer = 0

Dim LinesWrdNum As String = ""

Dim AllRepWrd As String = ""

For i = 0 To UBound(AnalWrdAr)

For j = 0 To UBound(AnalWrdAr)

If i <> j Then

If AnalWrdAr(i) = AnalWrdAr(j) Then

AnalWrdAr(j) = String.Format("{0,3:d3}", j) + " "

LinesWrdCount = LinesWrdCount + 1

LinesWrdNum += CStr(j + 1) + " "

End If

End If

Next

If LinesWrdCount > 1 Then

AllRepWrd += AnalWrdAr(i) + " "

LinesWrdNum = LinesWrdNum.Trim()

LinesWrdNum = LinesWrdNum.Replace(" ", ", ")

LinesWrdAr += AnalWrdAr(i) + " №№ " + CStr(i + 1) + ", " + LinesWrdNum + " / " + CStr(LinesWrdCount) + "." + vbCrLf

AllrepWrdCount += LinesWrdCount

LinesWrdArTmp = ""

LinesWrdNum = ""

LinesWrdCount = 1

End If

Next

AllRepWrd = " " + AllRepWrd + " "

AllRepWrd = AllRepWrd.Replace("-", "")

' Из файла Exceptn

For Each item In Exceptns

AllRepWrd = AllRepWrd.Replace(" " + item + " ", " ")

Next

'AllRepWrd = AllRepWrd.Replace(" и ", " ") : AllRepWrd = AllRepWrd.Replace(" в ", " ")

'AllRepWrd = AllRepWrd.Replace(" от ", " ") : AllRepWrd = AllRepWrd.Replace(" он ", " ")

AllRepWrd = AllRepWrd.Replace(" ", " ") : AllRepWrd = AllRepWrd.Replace(" ", " ")

AllRepWrd = AllRepWrd.Trim()

Dim RepWrdAr() As String = AllRepWrd.Split(" ").ToArray

Dim RezStr As String = LCase(TextBox6.Text)

RezStr = RezStr.Replace("-", " ")

RezStr = Regex.Replace(RezStr, "\W", " ")

RezStr = RezStr.Replace("_", " ")

RezStr = RezStr.Replace(" ", " ")

RezStr = RezStr.Replace(" ", " ")

For Each item In RepWrdAr

RezStr = RezStr.Replace(item + " ", "<" + item + ">" + " ")

Next

RezStr = RezStr.Replace("> <", " ")

RezStr = RezStr.Replace(" ", vbCrLf + "---------------------" + vbCrLf)

RezStr = RezStr.Replace(" ", " ")

RezStr = RezStr.Replace(" ", " ")

TextBox4.Text = RezStr

TextBox3.Text = AllRepWrd

End Sub

' Преобразование двумерного массива в таблицу Word

Sub WrdTab(ByVal cptn As String, ByVal strok As Short, ByVal ctolb As Short, ByVal tablic(,) As String)

Dim W As Word.Application = New Word.Application

W.Visible = True

W.Documents.Open("C:\Users\7\Documents\WORD\ToTab.docx")

W.Selection.WholeStory()

W.Selection.Delete()

W.Selection.Font.Name = "Times New Roman"

W.Selection.Font.Size = 15

W.Selection.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape

W.Selection.TypeText(Text:=cptn)

W.Selection.TypeText(vbCrLf)

W.ActiveDocument.Tables.Add(W.Selection.Range, strok + 1, ctolb + 1,

Word.WdDefaultTableBehavior.wdWord9TableBehavior,

Word.WdAutoFitBehavior.wdAutoFitContent)

For i = 0 To strok

For j = 0 To ctolb

W.ActiveDocument.Tables(1).Cell(Row:=i + 1, Column:=j + 1).Range.InsertAfter(tablic(j, i))

Next

Next

W.Selection.MoveDown(Word.WdUnits.wdLine, Count:=y + 1)

W.ActiveDocument.Save()

'W.Selection.TypeText("finish")

'W.Selection.TypeText(Text:=vbCrLf + "save")

'W.ActiveDocument.Close()

End Sub

' Подсчёт символов и слов в строке

Function CountWrds(ByVal stroka As String) As String

stroka = stroka.Trim()

Dim WordAr() As String = stroka.Split(" ").ToArray

Return CStr(stroka.Length) + "/" + CStr(UBound(WordAr) + 1)

End Function

' Загрузка формы

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Load_txt()

End Sub

' (обработка события KeyPress в поле компонента TextBox1)

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Select Case e.KeyChar

Case ChrW(CharCode:=8), ChrW(CharCode:=48) To ChrW(CharCode:=57)

e.Handled = False

' <Backspace> и цифры

Case ChrW(CharCode:=13)

e.Handled = False ' клавиша <Enter>

TextBox2.Focus()

Case Else

e.Handled = True

End Select

End Sub

' (обработка события KeyPress в поле компонента TextBox2)

Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

Select Case e.KeyChar

Case ChrW(CharCode:=8), ChrW(CharCode:=48) To ChrW(CharCode:=57)

e.Handled = False

' <Backspace> и цифры

Case ChrW(CharCode:=13)

e.Handled = False ' клавиша <Enter>

Button1.Focus()

Case Else

e.Handled = True

End Select

End Sub

' Кнопка ОТК

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OPN()

If Repeat = True Then RepWrd()

End Sub

' Строка вперёд ошибка +1

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

frw = CShort(TextBox1.Text) - 1

If frw < UBound(HebstrAr) Then

frw += 1

Label4.Text = String.Format("{0,2:d2}", frw + 1)

TextBox1.Text = String.Format("{0,2:d2}", frw + 1)

TextBox5.Text = HebstrAr(frw)

TextBox3.Text = AllRus(CShort(TextBox2.Text) - 1, frw)

TextBox4.Text = AllRus(CShort(TextBox2.Text), frw)

TextBox6.Text = AllRus(CShort(TextBox2.Text) - 1, frw) + vbCrLf + "---------------------" + vbCrLf + AllRus(CShort(TextBox2.Text), frw)

End If

If Repeat = True Then RepWrd()

End Sub

' Строка назад

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

ret = CShort(TextBox1.Text) - 1

If ret > 0 And ret <= UBound(HebstrAr) Then

ret -= 1

Label4.Text = String.Format("{0,2:d2}", ret + 1)

TextBox1.Text = String.Format("{0,2:d2}", ret + 1)

TextBox5.Text = HebstrAr(ret)

TextBox3.Text = AllRus(CShort(TextBox2.Text) - 1, ret)

TextBox4.Text = AllRus(CShort(TextBox2.Text), ret)

TextBox6.Text = AllRus(CShort(TextBox2.Text) - 1, ret) + vbCrLf + "---------------------" + vbCrLf + AllRus(CShort(TextBox2.Text), ret)

Else

ret = 0

Label4.Text = String.Format("{0,2:d2}", ret + 1)

TextBox1.Text = String.Format("{0,2:d2}", ret + 1)

TextBox5.Text = HebstrAr(ret)

TextBox3.Text = AllRus(CShort(TextBox2.Text) - 1, ret)

TextBox4.Text = AllRus(CShort(TextBox2.Text), ret)

TextBox6.Text = AllRus(CShort(TextBox2.Text) - 1, ret) + vbCrLf + "---------------------" + vbCrLf + AllRus(CShort(TextBox2.Text), ret)

End If

If Repeat = True Then RepWrd()

End Sub

' Следующий перевод + ошибка + 1

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

nxt = CShort(TextBox2.Text) - 1

If nxt < UBound(RuNames) Then

nxt += 1

Dim lbl01 As String = RuNames(nxt).Replace("TEXT\", "")

lbl01 = lbl01.Replace(".txt", "") : lbl01 = lbl01.Replace("Job_01_", "")

Label3.Text = String.Format("{0,2:d2}", nxt + 1) + "_" + lbl01

If nxt + 1 <= UBound(RuNames) Then

Label5.Text = String.Format("{0,2:d2}", nxt + 2) + "_" + (RuNames(nxt + 1).Replace("TEXT\", ""))

bk = ShRuNames(nxt) + " " + ShRuNames(nxt + 1)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

TextBox2.Text = String.Format("{0,2:d2}", nxt + 1)

TextBox3.Text = AllRus(nxt, CShort(TextBox1.Text) - 1)

TextBox4.Text = AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

TextBox6.Text = AllRus(nxt, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf + AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

ElseIf nxt = UBound(RuNames) Then

bk = ShRuNames(nxt) '+ " " + ShRuNames(nxt + 1)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

TextBox2.Text = String.Format("{0,2:d2}", nxt + 1)

TextBox3.Text = AllRus(nxt, CShort(TextBox1.Text) - 1)

'TextBox4.Text = AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

TextBox6.Text = AllRus(nxt, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf ' + AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

End If

'TextBox2.Text = String.Format("{0,2:d2}", nxt + 1)

'TextBox3.Text = AllRus(nxt, CShort(TextBox1.Text) - 1)

'TextBox4.Text = AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

'TextBox6.Text = AllRus(nxt, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf + AllRus(nxt + 1, CShort(TextBox1.Text) - 1)

End If

If Repeat = True Then RepWrd()

End Sub

' Предыдущий перевод

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

prv = CShort(TextBox2.Text) - 1

If prv > 0 And prv <= UBound(RuNames) Then

prv -= 1

lbl01 = RuNames(prv).Replace("TEXT\", "")

lbl01 = lbl01.Replace(".txt", "") : lbl01 = lbl01.Replace("Job_01_", "")

Label3.Text = String.Format("{0,2:d2}", prv + 1) + "_" + lbl01

If prv + 1 > 0 And prv + 1 <= UBound(RuNames) Then

Label5.Text = String.Format("{0,2:d2}", prv + 2) + "_" + (RuNames(prv + 1).Replace("TEXT\", ""))

bk = ShRuNames(prv) + " " + ShRuNames(prv + 1)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

End If

TextBox2.Text = String.Format("{0,2:d2}", prv + 1)

TextBox3.Text = AllRus(prv, CShort(TextBox1.Text) - 1)

TextBox4.Text = AllRus(prv + 1, CShort(TextBox1.Text) - 1)

TextBox6.Text = AllRus(prv, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf + AllRus(prv + 1, CShort(TextBox1.Text) - 1)

Else

TextBox2.Text = "01"

prv = CShort(TextBox2.Text) - 1

lbl01 = RuNames(prv).Replace("TEXT\", "")

lbl01 = lbl01.Replace(".txt", "") : lbl01 = lbl01.Replace("Job_01_", "")

Label3.Text = String.Format("{0,2:d2}", prv + 1) + "_" + lbl01

If prv + 1 > 0 And prv + 1 <= UBound(RuNames) Then Label5.Text = String.Format("{0,2:d2}", prv + 2) + "_" + (RuNames(prv + 1).Replace("TEXT\", ""))

TextBox2.Text = String.Format("{0,2:d2}", prv + 1)

TextBox3.Text = AllRus(prv, CShort(TextBox1.Text) - 1)

TextBox4.Text = AllRus(prv + 1, CShort(TextBox1.Text) - 1)

TextBox6.Text = AllRus(prv, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf + AllRus(prv + 1, CShort(TextBox1.Text) - 1)

End If

If Repeat = True Then RepWrd()

End Sub

' Объединение трёх переводов

Private Sub Button110_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button110.Click

Dim SortIndex As String = ""

Dim AllStr As String = ""

For i = 0 To UBound(ShRuNames)

SortIndex = CountWrds(AllRus(i, CShort(TextBox1.Text) - 1)) ' функция подсчёта символов и слов в строке

AllStr += String.Format("{0,2:d2}", i + 1) + ShRuNames(i) + " " + SortIndex + vbCrLf + AllRus(i, CShort(TextBox1.Text) - 1) + vbCrLf + "---------------------" + vbCrLf

Next

TextBox6.Text = AllStr

bk = ShRuNames(0) + " " + ShRuNames(1) + " " + ShRuNames(2)

bk = bk.Replace("_", "")

Label6.Text = bk

bk = ""

If Repeat = True Then RepWrd()

End Sub

' Показать всю главу слева

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

Chapter()

End Sub

' Открыеь файл в EmEditor

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

pth = RuNames(CShort(TextBox2.Text) - 1)

Try

Diagnostics.Process.Start("EmEditor", pth)

Catch Exc As Exception

' Отчет об ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

' Перезагрузить таблицу

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

Load_txt()

End Sub

' Показать список

Private Sub ToolStripMenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem6.Click

TextBox3.Text = ShrNam02

End Sub

' Открыть слева

Private Sub Button56_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button56.Click

'Dim VRSN As String = ""

'VRSN = TextBox3.SelectedText

'VRSN = Regex.Replace(VRSN, "[^\d]", "")

'If VRSN <> "" Then

' TextBox2.Text = VRSN

Chapter()

'End If

End Sub

' Открыть справа

Private Sub Button57_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button57.Click

'Dim VRSN As String = ""

'VRSN = TextBox3.SelectedText

'VRSN = Regex.Replace(VRSN, "[^\d]", "")

'If VRSN <> "" Then

' TextBox2.Text = VRSN

ChapterRght()

'End If

End Sub

' Открыть здесь

Private Sub Button111_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button111.Click

'Dim VRSN As String = ""

'VRSN = TextBox3.SelectedText

'VRSN = Regex.Replace(VRSN, "[^\d]", "")

'If VRSN <> "" Then

' TextBox2.Text = VRSN

ChapterMdl()

'End If

End Sub

' Открыть в случайном порядке

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click

' Initialize the random-number generator.

Randomize()

' Generate random value between 1 and ...

Dim value As Integer = CInt(Int(((UBound(HebstrAr) + 1) * Rnd()) + 1))

TextBox1.Text = CStr(value)

OPN()

End Sub

' Сортировка строк по возрастанию

Private Sub ToolStripMenuItem8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem8.Click

SortStr()

TextBox6.Text = Sorted

End Sub

' Сортировка строк по убыванию

Private Sub ToolStripMenuItem9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem9.Click

SortStr()

TextBox6.Text = SortedRev

End Sub

' Отражать повторы

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If CheckBox1.Checked = True Then Repeat = True

If CheckBox1.Checked = False Then Repeat = False

End Sub

' Преобразование в таблицу Word

' Список повторяющихся и неповторяющихся слов

Private Sub Button109_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button109.Click

Dim strTotab As String = TextBox4.Text

strTotab = strTotab.Trim()

strTotab = strTotab.Replace("-", "")

strTotab = strTotab.Replace(vbCrLf, " ")

strTotab = Regex.Replace(strTotab, "[<>]", "+")

strTotab = strTotab.Replace(" ", " || ")

strTotab = "+" + strTotab

strTotab = strTotab.Replace("++", "")

strTotab = strTotab.Trim()

Dim strTotabAr() As String = strTotab.Split("+").ToArray

x = 1

y = UBound(strTotabAr) \ 2

ReDim TabAr(x, y)

Dim k As Short = 0

For i = 0 To y

For j = 0 To x

If k <= UBound(strTotabAr) Then

TabAr(j, i) = strTotabAr(k)

k += 1

End If

Next

Next

k = 0

WrdTab("Список повторяющихся и неповторяющихся слов", y, x, TabAr)

End Sub

' Start Explorer, WORD

Private Sub Button27_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button27.Click

pth = "C:\Users\7\Documents\WORD"

Try

Diagnostics.Process.Start("Explorer", pth)

Catch Exc As Exception

' Отчет об ошибках:

MessageBox.Show(Exc.Message, "Ошибка",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

' Сводная таблица Job_01

Private Sub ПоказатьТекстToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ПоказатьТекстToolStripMenuItem.Click

WrdTab("Сводная таблица Job_01.", UBound(HebstrAr), UBound(RuNames), AllRus)

End Sub

-7