Loopback
|
Posted: Wed Aug 06, 2025 00:06 Post subject: |
|
|
AkulaBig wrote: | Очень странно. |
Более чем, у меня обе ошибки выдавало.
AkulaBig wrote: | Можно-ли это сделать в рамках объекта TextFile? |
Тут не совсем правильно то, что добавляется в конец файла, должно записаться сразу за строкой, где найдено UiLanguage. Впрочем есть догадка почему, потом посмотрю.
Но такой сценарий - найти что-то в строке и изменить только эту строку, не получится. К сожалению, таких вольностей в произвольной записи, как с бинарными файлами, текст не позволяет. Даже если сделать возможность возврата на начало только что прочитанной строки, при записи строки большего размера она наложится на следующую строку, а если меньшего - создаст еще строку. Воткнуть такую строку корректно без перезаписи всего файла невозможно.
В любом случае использовать объект для файлика в пару килобайт - это как из пушки по воробьям. Целесообразнее прочитать его целиком и работать в памяти. Конкретно для этой задачи проще всего будет использовать List:
Code: |
Local txt_SumatraPDF = COMMANDER_PATH & "\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF-settings.txt"
Local lst = List()
lst.LoadFromFile(txt_SumatraPDF)
For i = 0 to lst.Count-1
If StrPos(lst[i], "UiLanguage") > 0 Then
lst[i] = "UiLanguage = en"
Break
Endif
Next
lst.SaveToFile(txt_SumatraPDF)
Free(lst)
|
|
|