Loopback
|
Posted: Fri Aug 08, 2025 12:56 Post subject: |
|
|
AkulaBig
Скачал, проверил, попереставлял в разные места. По-прежнему ничего не проявляется, это было бы слишком просто.
Вроде не вижу ничего критичного в предшествующих строках, кроме функции SwitchIniSect, которая вызывается множество раз, при этом использует DllCall/Buffer, потенциально наиболее "опасные" функции. В принципе из явных ошибок там только то, что buf не освобождается функцией Free, нужно добавить
Code: | Local out = buf.GetStr(0, bytes)
Free(buf) |
Но это вряд ли могло повлиять. Я бы проверил с вариантом без DllCall/Buffer, изменится ли что-нибудь. Переделал SwitchIniSect на встроенном функционале, попробуйте у себя.
 Hidden text
Code: | Func SwitchIniSect(sIni, sSect, sLng)
# Поддерживаемые языки
# Supported languages
Local arrLang = List("eng", "rus")
Local arrFile = List()
Local i = 0
arrFile.LoadFromFile(sIni)
Local 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)
Free(arrLang)
Free(arrFile)
EndFunc |
|
|