如何获取字符串的显示占用长度?
au3内部是基于UTF16的,每个英文字母和中文汉字长度都算1位。例如,StringLen("中文.txt") 的结果是6。现在的问题是,我创建了一个Label控件,要在指定位置手动换行,但是一个汉字在显示宽度上是两个英文字母的长度。那么,如何才能得到字符串的真正显示长度?
需要:"中文.txt"的显示长度是8,"Eng.txt"的显示长度是7,"中文汉字"的显示长度是8。
[ 本帖最后由 sensel 于 2009-4-16 21:38 编辑 ] Func _StrLen($sString, $iAnsi = True)
Local $iLength, $sFunction, $sType
If $iAnsi Then
$sType = "str"
$sFunction = "lstrlen"
Else
$sType = "wstr"
$sFunction = "lstrlenW"
EndIf
$iLength = DllCall("kernel32.dll", "int", $sFunction, $sType, $sString)
Return $iLength
EndFunc ;==>_StrLen() 问题解决,谢谢!pusofalse兄帮我不少啊。
看完代码才想到,我的提问杂七杂八废话一堆,其实需求只是一个:如何获取字符串的ANSI编码长度。
页:
[1]