Loopback
|
Posted: Sat Aug 09, 2025 20:16 Post subject: |
|
|
AkulaBig wrote: | Попробуйте первый свой код вставить. |
Тот код был с ошибкой, он действительно "портит" файлы, записывая их в неправильной кодировке. Но я же здесь уже писал, что надо исправить. С исправленным кодом всё работает нормально.
AkulaBig wrote: | А не в этом-ли проблема? Вернее решение проблемы. Помню мы уже обсуждали эту тему. |
Там была проблема с завершающим нулем или что-то похожее. Она давно исправлена. А в функции из этого поста значение из буфера только для сравнения используется, больше нигде. Ну и исправление кодировки записи уже внесено, конечно.
AkulaBig wrote: | Со сравнением методов вроде и у меня работает |
Ну так всё дело было в кодировке при записи. Вот так должно быть:
 Hidden text
Code: |
Func SwitchIniSect(sIni, sSect, sLng)
# Поддерживаемые языки
# Supported languages
Local arrLang = List("eng", "rus")
Local arrFile = List()
Local i = 0
arrFile.LoadFromFile(sIni)
out = arrFile.Text
# Проверяем количество языковых секций в файле по шаблону [$sSect
# Check number of language sections in file according to template [$ ssect
Local count = 0
For i = 0 To arrFile.Count-1
If StrPos(arrFile._Item[i], "[" & sSect) > 0 Then
count += 1
EndIf
Next
# Если в файле только одна секция по шаблону [$sSect, завершаем выполнение
# скрипта
# If file has only one section on template [$ ssect, we complete execution
# script
If count <= 1 Then
Free(arrLang)
Free(arrFile)
Exit
Endif
# Переименовываем все секции по шаблону [sect_lng]
# Rename all sections according to template [sect_lng]
For i = 0 To arrLang.Count-1
If StrPos(out, "[" & sSect & "_" & arrLang._Item[i] & "]") = 0 Then
out = StrReplace(out, "[" & sSect & "]", "[" & sSect & "_" & arrLang[i] & "]")
Break
EndIf
Next
# Переименовываем оригинальную секции по шаблону [sect]
# Rename original section according to template [sect]
If StrPos(out, "[" & sSect & "_" & sLng & "]") Then
out = StrReplace(out, "[" & sSect & "_" & sLng & "]", "[" & sSect & "]")
Endif
arrFile.Text = out
arrFile.SaveToFile(sIni, "UTF-16")
Free(arrLang)
Free(arrFile)
EndFunc
|
|
|