Автор Тема: [Автоматизация] Проблема с чтением и вставкой построчно из файла  (Прочитано 1015 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Black_Sunlight [?]

  • Кодю потихоньку
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: 0
  • Пол: Мужской
    • Награды
Есть скрипт, который читает строчки из файла items-rus.txt
они идут в формате:
одно слово
другое слово
третье сло во
четвёртое
и т.д.
и заменяет ими заданные по регекспу значения в файле items.xml, которые идут в формате
<passive cache="blabla" type="blabla" name="slovo" />
<passive cache="blabla" type="blabla" name="slovo" />
т.е. заменяет name="slovo" на name="одно слово" по порядку следования
и пишет изменённый файл в itemsRU.xml
но вот тут беда, в результате все заменённые name оказываются с самым последним словом из файла items-rus.txt

Помогите исправить пожалуйста скрипт.

Код: AutoIt [Выделить]
#include <file.au3>
Global $aEnRu
If Not _FileReadToArray(@ScriptDir&'\items-rus.txt', $aEnRu) Then
   MsgBox(4096,"Ошибка", "Невозможно прочитать массив" & @error)
   Exit
EndIf

$file = FileOpen(@ScriptDir&'\items.xml', 0)
$text = FileRead($file)
FileClose($file)

For $i = 1 to $aEnRu[0]
    $text=StringRegExpReplace($text, 'name="(.*)"', 'name="'&$aEnRu[$i]&'"')
Next

$file = FileOpen(@ScriptDir&'\itemsRU.xml',2)
FileWrite($file, $text)
FileClose($file)
 


Русское сообщество AutoIt


Оффлайн classick [?]

  • Новичок
  • *
  • Сообщений: 16
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Вы в цикле назначаете переменную $text до тех пор, пока цикл не завершит свою работу, а потом только один раз переписываете значения в файле itemsRU.xml.
Код: AutoIt [Выделить]
For $i = 1 to $aEnRu[0]
   $text=StringRegExpReplace($text, 'name="(.*)"', 'name="'&$aEnRu[$i]&'"')
Next

$file = FileOpen(@ScriptDir&'\itemsRU.xml',2)
FileWrite($file, $text)
FileClose($file)
 


Т.о. туда попадут значения переменной $text, которое было назначенное при последнем прохождением цикла.
Добавьте запись в файл в цикл и все должно получиться.

Помечен как лучший ответ пользователем Black_Sunlight Отправлен Ноябрь 25, 2014, 22:48:47

Оффлайн Black_Sunlight [?]

  • Кодю потихоньку
  • Новичок
  • *
  • Сообщений: 13

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
classick
хм, если переместить весь блок записи внутрь цикла, то ничего не происходит, а если только FileWrite, то происходит замена во всём файле и файл записывается целиком


Добавлено: Ноябрь 25, 2014, 22:48:42
Поместил функцию чтение из файла тоже в цикл и заменил FileRead на FileReadLine
« Последнее редактирование: Ноябрь 25, 2014, 22:48:42 от Black_Sunlight, Причина: Объединение сообщений »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
2368 Просмотров
Последний ответ Март 13, 2010, 13:27:54
от madmasles
20 Ответов
6205 Просмотров
Последний ответ Май 20, 2010, 21:35:44
от SyDr
4 Ответов
2259 Просмотров
Последний ответ Июнь 03, 2013, 13:11:08
от AZJIO
4 Ответов
3065 Просмотров
Последний ответ Октябрь 25, 2011, 16:06:48
от XpycT
6 Ответов
3176 Просмотров
Последний ответ Декабрь 05, 2011, 05:45:39
от AZJIO
6 Ответов
2714 Просмотров
Последний ответ Март 01, 2012, 18:13:38
от Dimmak
11 Ответов
3832 Просмотров
Последний ответ Июль 22, 2012, 00:00:29
от madmasles
5 Ответов
1950 Просмотров
Последний ответ Сентябрь 10, 2012, 19:38:07
от Zaramot
5 Ответов
1348 Просмотров
Последний ответ Январь 10, 2017, 14:10:19
от InnI
2 Ответов
1259 Просмотров
Последний ответ Март 05, 2017, 21:06:49
от Gilman