Что нового

Как перейти к трехтысячному символу в текстовом файле

Сообщения
3
Репутация
0
Нужно разделить на две части текстовый файл MS-DOS (с созданием двух новых файлов)
У меня проблема в переходе к знаку, находящемуся в середине документа. Работает безотказно, но очень долго:

Код:
#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocOpen ($oWordApp, @ScriptDir & "\111.txt")
;Количество знаков в документе:
$n = _WordDocPropertyGet ($oDoc, (30))
;Номер знака, на котором нужно поставить курсор:
$nSymbol = Ceiling(Number($n/2))
Send("^{PGUP}")
Opt("SendKeyDelay", 0) 
Send("{RIGHT " & $nSymbol & "}")
Send("{END}")
Send("{ENTER 2}")
...

Отправка {RIGHT 3000} занимает много времени.
Как быстрее перейти к середине документа/файла?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
Привет, АлексейАлександрович. С почином
Для начала парочка замечаний.
1. Название темы и суть задачи в шапке, как мне кажется, не совсем коррелируют.
2. Для работы с текстовыми файлами нет никакой надобности открывать объект Word. Согласись, ты ведь не открываешь обычные текстовые файлы вордом? Блокнот или любой другой текстовый редактор вполне с этим справятся. Так же и тут, встроенные средства AutoIt чтения/записи файлов прекрасно справляются с этими задачами.
Если хочешь подучить язык, я тебе рекомендую самостоятельно освоить разделы помощи
Код:
FileRead
FileReadLine
FileOpen

если же нет, то опиши четче задачу, а именно исходные данные и что из них нужно получить, и тебе помогут.
 
Автор
А
Сообщения
3
Репутация
0
Согласись, ты ведь не открываешь обычные текстовые файлы вордом?
:smile: Действительно Вордом открываю. Дело в привычке. Изначально имеется файл 1.doc, который надо преобразовать в 1.txt в формате MSDOS (для последующего преобразования в МТК-2) и разбить текст на несколько файлов определенного размера. Раньше я преобразовывал файлы с помощью макросов и вручную разбивал на части. При решении еще более дурацкой проблемы, чем эта, зашел на ваш сайт и решил Попробовать.
Теперь буду учить английский и читать справку.
Спасибо за ответ!
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
АлексейАлександрович
Вот такой вариант:

Код:
; НАЧАЛО

 $NAMESOURCE="source"
 $NAMETARGET="target"

 [email protected]&"\"&$NAMESOURCE&".txt"
 $FILE=FileOpen($PATH,0)
 $TEXT=FileRead($FILE)
 FileClose($FILE)

 $P=Int(StringLen($TEXT)/2)

 $TEXT2=StringMid($TEXT,1,$P)
 [email protected]&"\"&$NAMETARGET&"1.txt"
 $FILE2=FileOpen($PATH,2)
 FileWrite($FILE2,$TEXT2)
 FileClose($FILE2)

 $TEXT2=StringMid($TEXT,$P+1,StringLen($TEXT))
 [email protected]&"\"&$NAMETARGET&"2.txt"
 $FILE2=FileOpen($PATH,2)
 FileWrite($FILE2,$TEXT2)
 FileClose($FILE2)

; КОНЕЦ


Думаю, запаса максимальной длины строковых переменных должно хватить на текстовый файл практически любого размера...
Хотя случаи могут быть разными... :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
АлексейАлександрович
OffTopic:
Я имел в виду язык - AutoIt ;D , но английский знать, конечно, тоже не помешает ;)

Но небольшая ясность все же появилась. Просто я подумал, что под текстовым файлом подразумевался именно txt-файл. Но раз изначально файл в формате doc, то тут действительно, скорее всего, надо пользовать объект Word. По поводу "как" - сильно может помочь код твоих макросов. Если предоставишь их, то, уверен, перенести их на AutoIt не составит никакого труда
 
Автор
А
Сообщения
3
Репутация
0
snoitaleR, спасибо. Осталось придумать, чтобы часть на середине слова не кончалась. Не совсем то, что надо было, но при делении больше чем на пять частей придется идти именно по этому пути.


Добавлено:
Сообщение автоматически объединено:

snoitaleR, это то, что надо было!
Сценарий буду переписывать.
 
Верх