找回密码
 加入
搜索
查看: 1306|回复: 2

如何获取字符串的显示占用长度?

[复制链接]
发表于 2009-4-16 20:14:45 | 显示全部楼层 |阅读模式
au3内部是基于UTF16的,每个英文字母和中文汉字长度都算1位。例如,StringLen("中文.txt") 的结果是6。
现在的问题是,我创建了一个Label控件,要在指定位置手动换行,但是一个汉字在显示宽度上是两个英文字母的长度。那么,如何才能得到字符串的真正显示长度?
需要:"中文.txt"的显示长度是8,"Eng.txt"的显示长度是7,"中文汉字"的显示长度是8。

[ 本帖最后由 sensel 于 2009-4-16 21:38 编辑 ]
发表于 2009-4-16 20:29:07 | 显示全部楼层
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[0]
EndFunc        ;==>_StrLen()
 楼主| 发表于 2009-4-16 21:34:49 | 显示全部楼层
问题解决,谢谢!pusofalse兄帮我不少啊。
看完代码才想到,我的提问杂七杂八废话一堆,其实需求只是一个:如何获取字符串的ANSI编码长度。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-10 12:27 , Processed in 0.068641 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表