Clarion 11-12
Добавлено: 22 Октябрь 2023, 11:10
Диего и Соловьёв собачились из-за этого на clarionhub.finsoftrz писал(а): 22 Октябрь 2023, 9:45 FIX: memory leak on getting and setting some properties of controls
Место общения программистов, форум разработчиков БД на Clarion
https://www.forum.clarionlife.net/
Диего и Соловьёв собачились из-за этого на clarionhub.finsoftrz писал(а): 22 Октябрь 2023, 9:45 FIX: memory leak on getting and setting some properties of controls
Выйди. Удали (сохрани отдельно) ВСЁ кроме app и dct. Зайди и посмотри
Дела давно минувших дней...
Иконки еврея тут нет (да и не халяльно в нынешних условиях
Код: Выделить всё
To1252 Procedure()
ToUTF8From1252 Procedure()
Код: Выделить всё
Cstr.To1252 Procedure()
UnicodeText &string
UtfText &String
ASCIIText &CString
Lu Long
Code
! Не преобразовывать пустые строки и числа
If Self.Len=0
Return
Elsif Numeric(Self.S)
Return
End
Lu=Self.Len
UtfText &= New String(Lu+2)
UnicodeText &= New String(Lu*2+2)
ASCIIText &= New CString(Lu+2)
UtfText=Self.Str()
UtfText[Lu+1 : Lu+2]='<0><0>'
If MultiByteToWideChar(65001,0,Address(UTFText),-1,Address(UnicodeText),Lu*2+2).
If WideCharToMultiByte(1252,0,Address(UnicodeText),-1,Address(ASCIIText),Lu+2,0,0).
Self.Set(ASCIIText)
Dispose(ASCIIText)
Dispose(UnicodeText)
Dispose(UtfText)
Return
Cstr.ToUTF8From1252 Procedure() ! Преобразовать строку а UTF8
UnicodeText &Cstring
UtfText &CString
L Long
Code
L=Self.Len*2+2
UnicodeText &= New CString(L)
UTFText &= New CString(L)
Clear(UnicodeText,0)
If MultiByteToWideChar(1252,0,Address(Self.S),Self.Len,Address(UnicodeText),L).
UnicodeText[ Self.Len*2+1 : Self.Len*2+2] = '<0><0>'
L = WideCharToMultiByte(65001,0,Address(UnicodeText),-1,Address(UTFText),L,0,0)
Loop
If UtfText[L]='<0>'
L-=1
Else
Break
End
End
Self.Set(UtfText [1 : L])
Dispose(UnicodeText)
Dispose(UtfText)
Return
Код: Выделить всё
PROGRAM
include('Cstr.inc')
MAP
END
cs Cstr
CODE
cs.LoadFromFile('enkaTrans.dctx') ! оригинальный код
cs.To1252()
cs.SaveToFile('enkaTrans.1252.dctx') ! ANSI с обычным русским как бы
cs.ToUTF8From1252()
cs.SaveToFile('enkaTrans.org.dctx') ! и снова как оригинальный.