[ID CC-CC2021] А чтой-то Инди подвисает при массовых заменах?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
В Ворде заменяю неразрывные пробелы на "$$$". Потом все сохраняется в виде тегированного txt-файла. Если замены не делать, неразрывные пробелы в txt-файле становятся обычными. Это же (пропадание исходной информации в знаке) относится и к куче др. символов. Поэтому приходится все хозяйство в Ворде подменять разными временными значками - а потом в Инди заменять все обратно. Далее импортирую, запускаю замену и оно (Инди) подвисает. Сначала подвисало на всем комплекте автозамен + куча специфических. После полутора часов ожидания [пообедал] - понял, что не дождусь. ОК - наверное слишком много сразу навесил (хотя сама формулировка "слишком много" уже вызывает подозрение.). Стал менять не через скрипт, а руками. После неск. итераций (с исключением очередных "лишних" замен, ожиданием и принудительном снятии Инди) оставил замену только $$$ на неразрывные пробелы. Запустил. Ждал минут 10, плюнул и опять закрыл через менеджер задач. В книге 120 страниц. Неужели это это же так долго и должно быть? Сделал ту же замену в txt-файле - 1,5 сек (~9200 найденных вхождений).
p.s. Резюме. на 10-20 страничном файле все меняется в разумные сроки (20 сек -30 сек -минута, другая). Если страниц в районе 100 и более - у Инди наступает ступор (даже при ручной замене через Ctrl-F).
С чего бы такие тормоза, переходящие в полное зависание? [полтора часа на (не)выполнение замен можно считать полным зависанием]
 

Gad

Сообщения
2 975
Реакции
1 408
Если замены не делать, неразрывные пробелы в txt-файле становятся обычными.
С чего бы?:)
2021-07-05_14-22-49.png
2021-07-05_14-21-54.png

Код:
Sub SaveAsUCS2TextFile()
    Dim strDocName As String
    Dim intPos As Integer

    ' Find position of extension in file name
    strDocName = ActiveDocument.Name
    intPos = InStrRev(strDocName, ".")

    If intPos = 0 Then

        ' If the document has not yet been saved
        ' Ask the user to provide a file name
        strDocName = InputBox("Please enter the name " & _
            "of your document.")
    Else

        ' Strip off extension and add ".txt" extension
        strDocName = Left(strDocName, intPos - 1)
        strDocName = strDocName & ".txt"
    End If

    ' Save file with new extension
    ActiveDocument.SaveAs FileName:=strDocName, FileFormat:= _
        wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
        WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
         SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, Encoding:=1200, InsertLineBreaks:=False, AllowSubstitutions:=False
End Sub
 
Последнее редактирование:
  • Спасибо
Реакции: hulk1776

Yar

15 лет на форуме
Сообщения
520
Реакции
156
Делаю простой экспорт штатными средствами индизайна (Ctrl+E - Unicode UTF8), все неразрывные пробелы на месте.
 

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
Скриптом — да, если их очень много. Как я понимаю, это связано с особенностями организации работы с памятью как у самого InDesign, так и конкретно у плагина Scripting.
 
  • Спасибо
Реакции: hulk1776

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Действительно, неразрывные пробелы оказались на месте. Давно как-то столкнулся с пропажей, и решил на всяк. случай все менять. Теперь не буду)).
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Делаю простой экспорт штатными средствами индизайна (Ctrl+E - Unicode UTF8), все неразрывные пробелы на месте.
Из Инди - да, а вот из Ворда неразрывные пробелы пропадали (и прочие символы, типа кавычек-елочек, минусов...). Уже и не вспомню, когда это началось))