Для сравнения переводов мы разработали следующую программу.
Вот её основные функции
Работая с данной программой мы можем одновременно увидеть оригинал и два перевода.
Далее можно объединить все версии переводов для выбранного стиха. Например, книга Иова 1:1.
אִ֛ישׁ הָיָ֥ה בְאֶֽרֶץ־ע֖וּץ אִיּ֣וֹב שְׁמ֑וֹ וְהָיָ֣ה׀ הָאִ֣ישׁ הַה֗וּא תָּ֧ם וְיָשָׁ֛ר וִירֵ֥א אֱלֹהִ֖ים וְסָ֥ר מֵרָֽע׃
01_APB 150/23
(Некий) человек жил в странe Авситидийской, имя ему - Иов. И был тот человек истинен, непорочен, праведен, богобоязнен, удалялся от всякой худой вещи.
---------------------
02_CRV 101/19
Жил в земле Уц человек по имени Иов, был он непорочен и честен, боялся Бога и сторонился всякого зла.
---------------------
03_RST 110/20
Был человек в земле Уц, имя его Иов; и был человек этот непорочен, справедлив и богобоязнен и удалялся от зла.
---------------------
При этом программа указывает аббревиатуру перевода, количество символов и слов в тексте стиха.
Также программа умеет выводить целые главы в различных окнах и анализировать тексты: подсчитывать слова, находить повторяющиеся слова и словосочетания, сортировать строки по возрастанию и убыванию, рисовать таблицы и многое другое.
Возьмём для примера текст Иов 1:2.
Программа сравнивает два перевода, находит повторяющиеся слова, выделяет и выписывает их (<него>).
Программа может разделить текст на две части и нарисовать таблицу, в первой колонке которой находятся повторяющиеся в тексте слова, а во второй неповторяющиеся. Например, для Иов 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