Что нового

_ReplaceStringInFile и StringReplace срабатывают только один раз

Alien74

Новичок
Сообщения
1
Репутация
0
Здравствуйте!

Есть список значений, например
1001
1002
1003
...

Есть файл, пусть будет "настройки.txt"
Первоначально в этом файле есть подстрока "alien".

Есть цикл, в котором в файле "настройки.txt" отдельный параметр в каждой итерации должен последовательно принимать значения из списка: 1001, 1002, 1003,...

Первоначально я в это значение вручную записываю "alien" (просто известная мне подстрока).

При первой итерации alien благополучно меняется на 1001.
При второй итерации 1001 НЕ меняется на 1002.

Результат выполнения функции _ReplaceStringInFile() = 0 (Т.е., не "-1", не ошибка, а просто произведено 0 замен). Строка 1001 в файле есть, я вижу её глазами. И StringInStr() тоже видит.

--
В порядке бреда в голове возникло предположение, что после замены alien на 1001 курсор перемещается на "после" 1001 и поэтому не находится такое значение. Бредово, да, но других идей нет.

Поэтому перед _ReplaceStringInFile() родилось вот это:

$hFile=FileOpen($sFileName,1)
FileSetPos($hFile,0,0)
FileClose($hFile)

Ожидаемо не помогло. _ReplaceStringInFile() всё равно возвращает 0 замен.

Кто-нибудь сталкивался с такой проблемой? Куда поплясать с бубном?

------
Такая же беда с функцией StringReplace().

Т.е., алгоритм

- считать в строку содержимое из "настройки.txt"
- в строке заменить 1001 на 1002
- удалить файл "настройки.txt"
- создать новый файл "настройки.txt" и записать туда строку

не работает.

При первой итерации alien меняется на 1001.
При второй итерации 1001 не меняется на 1002.
Результат - всё те же 0 замен.

При этом StringInStr() благополучно находит 1001 в строке.

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


Снимок.PNG

Магия какая-то. Злобная.
Помогите, пожалуйста)
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Покажите код, который вы используете
 
Верх