1 (изменено: Елена, 2011-03-26 11:17:10)

Тема: АНК: Добавить текст в файл

Имеется файл типа .txt:



Тихий ветер. Вечер сине-хмурый.
Я смотрю широкими глазами.
Как у нас в соломенной Рязани.

Можно ли средствами AHK в третью строку вставить строчку- В Персии такие ж точно куры,
Спасибо!

2

Re: АНК: Добавить текст в файл

File = D:\Temp\Stih.txt
Str = В Персии такие ж точно куры,

Loop, Read, %File%
{
    If A_Index = 3
        Text .= Str . "`n"
    Text .= A_LoopReadLine . "`n"
}

FileDelete, %File%
FileAppend, %Text%, %File%

MsgBox, Готово.

3

Re: АНК: Добавить текст в файл

Ещё раз спасибо "YMP" всё работает , но бывает такая ситуация, когда строка повторяется несколько раз(Я смотрю широкими глазами.), и надо выбрать последнюю  строку(Я смотрю широкими глазами.) и после неё добавить строчку - В Персии такие ж точно куры, т.е 6 стр

Тихий ветер. Вечер сине-хмурый.
Я смотрю широкими глазами.
Я смотрю широкими глазами.
Я смотрю широкими глазами.
Я смотрю широкими глазами.
Как у нас в соломенной Рязани.

4

Re: АНК: Добавить текст в файл

Странная какая-то ситуация. Какой во всём этом смысл? И какие ещё бывают ситуации? Просто неохота зря код писать.

5

Re: АНК: Добавить текст в файл

Это последняя ситуация какая может быть

6

Re: АНК: Добавить текст в файл

Что значит "выбрать последнюю строку"? Предыдущие убрать или оставить?

7 (изменено: Елена, 2011-03-26 18:24:35)

Re: АНК: Добавить текст в файл

Нет, предыдущую надо оставить как и все одинаковые и после неё дописать.

8

Re: АНК: Добавить текст в файл

File = D:\Temp\Stih.txt
Str1 = Я смотрю широкими глазами.
Str2 = В Персии такие ж точно куры,

Loop, Read, %File%
{
    If (PrevLine = Str1) and (A_LoopReadLine != Str1)
        Text .= Str2 . "`n"
    Text .= A_LoopReadLine . "`n"
    PrevLine := A_LoopReadLine
}

FileDelete, %File%
FileAppend, %Text%, %File%

MsgBox, Готово.

9

Re: АНК: Добавить текст в файл

Всплыл ещё один подводный камень.
Теперь необходимо получившийся файл .txt , Каждую строку отсортировать по  алфавиту (строк может быть больше  100) длиною максимум 50 знаков
Догадываюсь ,что надо загнать его в переменную (FileRead)и через RegExReplace с ним что-то проделать.
Но не могу этого сделать.
ПОМОГИТЕ !!!

10

Re: АНК: Добавить текст в файл

Text =
(
Первая строка
Вторая строка
Третья строка
Четвёртая строка
Пятая строка
)

Sort, Text

MsgBox, %Text%

11

Re: АНК: Добавить текст в файл

Всё оказалось гораздо проще. Спасибо!

12

Re: АНК: Добавить текст в файл

А как удалить определенную строку, т.е. строку с определенным текстом или номер строки?

13

Re: АНК: Добавить текст в файл

String =
(
Первая строка
Вторая строка
Третья строка
Четвертая строка
)

; удаляем строчку "Третья строка"
Loop, parse, String, `n, `r
   NewString1 .= A_LoopField = "Третья строка" ? "" : A_LoopField . "`n"
   
; удаляем последний перенос строки, если существует:
NewString1 := RegExReplace(NewString1, "(.*)\R$", "$1")  
MsgBox, % NewString1

; удаляем вторую строку
Loop, parse, String, `n, `r
   NewString2 .= A_Index = 2 ? "" : A_LoopField . "`n"
   
; удаляем последний перенос строки, если существует:
NewString2 := RegExReplace(NewString2, "(.*)\R$", "$1")  
MsgBox, % NewString2
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: Bobby, 2011-06-24 11:45:57)

Re: АНК: Добавить текст в файл

Спасибо, teadrinker! Только хотелось бы удалять в текстовом файле.

15

Re: АНК: Добавить текст в файл

Считываем текст из файла в переменную с помощью FileRead, проводим разбор, как в примере выше, создаём новый файл из полученного текста (FileAppend).

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: Bobby, 2011-06-24 11:45:06)

Re: АНК: Добавить текст в файл

Еще раз спасибо, teadrinker!