救命啊,关于 vb 中的一个 strconv的bug,如何解决?

littlespring 2004-03-29 10:23:32
vb的一些汉字通过StrConv语句转换以后,出现乱码,怎么办啊
比如:
lString = StrConv("胜利",vbUnicode)
lString = StrConv(lString,vbFromUnicode)

执行以上两个语句后,lString 的值仍然为“胜利”

而执行以下两各语句后,lString 的值却为乱码
lString = StrConv("表格",vbUnicode)
lString = StrConv(lString,vbFromUnicode)

怎么解决这个问题啊????????????
...全文
441 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlespring 2004-03-29
  • 打赏
  • 举报
回复
怎么给分啊
littlespring 2004-03-29
  • 打赏
  • 举报
回复
多谢高手指教
给分
hisofty 2004-03-29
  • 打赏
  • 举报
回复
//目前我的问题是要获取指定文件夹下的所有文件的名子

用dir就行了,用lb_dir消息更快捷方便的
'Example Name:Filling a Combo with Files, Directories and Drives

'------------------------------------------------------------------------------
'
' Form Code
'
'------------------------------------------------------------------------------
Option Explicit

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

Private Const CB_DIR = &H145
Private Const LB_RESETCONTENT = &H184

Private Const DDL_READWRITE = &H0
Private Const DDL_READONLY = &H1
Private Const DDL_HIDDEN = &H2
Private Const DDL_SYSTEM = &H4
Private Const DDL_DIRECTORY = &H10
Private Const DDL_ARCHIVE = &H20
Private Const DDL_DRIVES = &H4000
Private Const DDL_EXCLUSIVE = &H8000&
Private Const DDL_POSTMSGS = &H2000
Private Const DDL_FLAGS = DDL_ARCHIVE Or DDL_DIRECTORY


Private Sub Form_Load()

Command1(0).Caption = "normal files"
Command1(1).Caption = "normal files and folders"
Command1(2).Caption = "hidden files"
Command1(3).Caption = "system files"
Command1(4).Caption = "folders"
Command1(5).Caption = "drives"

End Sub


Private Sub Command1_Click(Index As Integer)

Dim numfound As Long
Dim DDL_FLAGS As Long
Dim searchPath As String

searchPath = "c:\winnt\*.*"

Select Case Index
Case 0: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_ARCHIVE
Case 1: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_ARCHIVE Or DDL_DIRECTORY
Case 2: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_HIDDEN
Case 3: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_SYSTEM
Case 4: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_DIRECTORY
Case 5: DDL_FLAGS = DDL_EXCLUSIVE Or DDL_DRIVES
Case Else
End Select

'clear and populate the combo
Call SendMessage(Combo1.hwnd, CB_RESETCONTENT, 0&, ByVal 0&)
numfound = SendMessage(Combo1.hwnd, CB_DIR, DDL_FLAGS, ByVal searchPath)

Label1.Caption = numfound + 1 & " " & Command1(Index).Caption & " found."

End Sub
rainstormmaster 2004-03-29
  • 打赏
  • 举报
回复
//我通过iShellFolder接口枚举每一个文件,然后获取该文件名的vbUnicode码,再转换成Ansi,
这时就出错了


你的代码

vb中的字串本身就是unicode编码的,我不知道你转换的目的何在

另外,要获取指定文件夹下的所有文件的名子的话,不用iShellFolder接口也可以实现,当然用iShellFolder接口要快上一些
littlespring 2004-03-29
  • 打赏
  • 举报
回复
好复杂的函数啊
hisofty 2004-03-29
  • 打赏
  • 举报
回复
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long

那用api函数试试 吧
littlespring 2004-03-29
  • 打赏
  • 举报
回复
目前我的问题是要获取指定文件夹下的所有文件的名子

我通过iShellFolder接口枚举每一个文件,然后获取该文件名的vbUnicode码,再转换成Ansi,
这时就出错了

救命 啊

flyingscv 2004-03-29
  • 打赏
  • 举报
回复
错误使用StrConv

Private Sub Command1_Click()
lstring = StrConv("表格胜利", vbFromUnicode)
lstring = StrConv(lstring, vbUnicode)
Print lstring
End Sub

你看清楚了StrConv怎么用的哦,呵呵
littlespring 2004-03-29
  • 打赏
  • 举报
回复
不好意思,我可能没有说清楚

我的例子是说首先要得到“表格”两个字的vbUnicode格式
然后再从vbUnicode转换成Ansi格式
这个时候就会出错啊
rainstormmaster 2004-03-29
  • 打赏
  • 举报
回复
如果你的程序要求你不能像楼上那么写的话,就只有自己写函数代替strconv了,说说你具体想实现什么
flyingscv 2004-03-29
  • 打赏
  • 举报
回复
明白
好象差点被你误导了
flyingscv 2004-03-29
  • 打赏
  • 举报
回复
错误使用StrConv

Private Sub Command1_Click()
lstring = StrConv("表格胜利", vbFromUnicode)
lstring = StrConv(lstring, vbUnicode)
Print lstring
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧