Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема OpenConf: сравнить два файла = ? (число прочтений - 2428 )
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
OpenConf: сравнить два файла = ?
09. Июля 2010 :: 19:47
Печать  
Есть такой плагин (установка лайтпак с инфостарта) - "Открыть файл из директивы ЗагрузитьИзФайла.vbs".
А как бы сравнить текущий текст модуля с этим самым файлом?..
Как бы: 1) выгрузить тек.модуль в текстовик в ту же папку откуда загрузка проставлена и с тем же именем в подпапку "МД", например; 2) выполнить с этими двумя файлами "Меню - Файлы - Сравнить файлы"..
Нерешительный
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OpenConf: сравнить два файла = ?
Ответ #1 - 10. Июля 2010 :: 04:49
Печать  
В полной сборке скриптов есть мой скрипт для сравнения текста модулей с текстом файла.
ВерсионныйКонтроль\Сравнить модуль.vbs
работает с использованием kdiff3
можно как сравнивать файл, так и сразу объединять изменения.
  

_______________.7z ( 2 KB | Загрузки )

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
Re: OpenConf: сравнить два файла = ?
Ответ #2 - 15. Июля 2010 :: 11:51
Печать  
artbear писал(а) 10. Июля 2010 :: 04:49:
... мой скрипт для сравнения текста модулей с текстом файла.
ВерсионныйКонтроль\Сравнить модуль.vbs
работает с использованием kdiff3
можно как сравнивать файл, так и сразу объединять изменения.

Спасибо, скрестил ужа с ежом, может кому-то пригодится:
из лайт-пак сборки позаимствовал код скрипта "Открыть файл из директивы ЗагрузитьИзФайла.vbs" (Автор - AlexQC) и по-лоховски допилил твой скрипт, а именно: ничего не меняя в нём (твоем скрипте), просто между DiffCurrentModuleWithFileSelection и GetKDiff3Folder вставил код:
Код
Выбрать все
Sub DoCompare(name)
    Set fs = CreateObject("Scripting.FileSystemObject")
    If left(name,2)="\\" or mid(name,2,1)=":" then ' Абсолютный путь:
	  str = name
	Else ' Относительный путь:
		' избавляемся от имени файла в конце пути к обработке, если это внешняя обработка или внешний отчет,
		' и строи иначе - это модуль объекта конфигурации - и тогда путь надо разрешать относительно каталога базы:
	  Set re = New RegExp
	  re.Pattern = "\\[\w\s]+\.ert$"
	  re.IgnoreCase = true
	  Path = re.Replace(DocPath, "")
	  If Path = DocPath Then ' это модуль внутреннего объекта конфигурации, поэтому путь смотреть относительно каталога базы
		Path = IBDir
	  End If  
	  str = CommonScripts.ResolvePath(Path, name)
    End If
    If Not fs.FileExists(str) Then
	  Set w = Windows.ActiveWnd
	  If w Is Nothing Then
		MsgBox "Нет активного окна", vbOKOnly, "TurboMD"
		Exit Sub
	  End If
	  Set d = w.Document
	  If d.ID < 2 Then
		MsgBox "Окно ни форма, ни модуль", vbOKOnly, "TurboMD"
		Exit Sub
	  End If
	  If d = docText Then ' Просто модуль
		d.SaveToFile str
	  Else
		If d = docWorkBook Then ' Форма
		    Set m = d.Page(1) ' Выгружаем модуль
		    m.SaveToFile str
		End If
	  End If
    End If

    DiffCurrentModuleWithFile str

End Sub 'DoCompare

Sub DiffCurModuleWithLoaded()
    Set doc = CommonScripts.GetTextDoc(0)
    If doc Is Nothing Then Exit Sub
    Set srv = CreateObject("Svcsvc.Service")
    For I = 0 To 1 'doc.LineCount-1 ' Перебираем строки
	  sDiffFileName = trim(doc.range(i,0))  ' & vbCRLF)
	  If UCase(left(sDiffFileName,18)) = UCase("#ЗагрузитьИзФайла ") then	' Нашли загрузку - открываем:
		sDiffFileName = trim(mid(sDiffFileName,19))
		if left(sDiffFileName,1) = """" then sDiffFileName = mid(sDiffFileName,2)
		if right(sDiffFileName,1) = """" then sDiffFileName = left(sDiffFileName, len(sDiffFileName)-1)
		DoCompare sDiffFileName
			Exit Sub
	  End If
	  If UCase(left(sDiffFileName,14)) = UCase("#LoadFromFile ") then		' И то же с англ. вариантом:
		sDiffFileName = trim(mid(sDiffFileName,15))
		if left(sDiffFileName,1) = """" then sDiffFileName = mid(sDiffFileName,2)
		if right(sDiffFileName,1) = """" then sDiffFileName = left(sDiffFileName, len(sDiffFileName)-1)
		DoCompare sDiffFileName
			Exit Sub
	  End If
		sDiffFileName=""
    Next
End Sub 'DiffCurModuleWithLoaded
 


-- и юзаю теперь DiffCurModuleWithLoaded.

ЗЫ: с vbs я вообще не знаком, если что, так что не судите строго.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать