Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Loopback



PostPosted: Wed Aug 06, 2025 00:06    Post subject: Reply with quote

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)
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group