再再挑战vb高手(字符串unicode)-质疑这里有没有vb高手--问题共300分答谢

hualahuala 2003-08-19 01:40:09
codetest.txt
把这个文件用程序读出来

文件放在这个ftp
FTP下载账号:test
FTP下载密码:test
地址:test.qyeee.com
请大家动手试一下再发言,的确不一般,所以来挑战高手

前面开过2个贴子
http://expert.csdn.net/Expert/topic/2160/2160806.xml?temp=.5161096
http://expert.csdn.net/Expert/topic/2162/2162640.xml?temp=.2066614
分数不够,可以再加
有一个unicode文件,里面有一些西欧字符
现在要把读出来,用对话框显示
我用了下面一段程序,但是出问题,很多字符不能正常显示
请大家帮忙
Dim TempFile As Long
Dim LoadBytes() As Byte


TempFile = FreeFile
Open "d:\codeTEST.txt" For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes
Close TempFile

's 01 = StrConv(LoadBytes, vbFromUnicode)

MsgBox (LoadBytes)
其中关闭掉的那一行也不起什么作用,显示的字符还没有关闭后显示得多
请问应该怎么设置,是否loadbytes不对,应当设置为双子节的数据类型
vc中能够解决,可是vb中怎么解决呢?
...全文
64 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2003-08-20
  • 打赏
  • 举报
回复
Edit是Windows系统提供的控件
MFC只是把它封装成了类
(VB封装成了TextBox,只不过只封装了ANSI版的)
zyl910 2003-08-20
  • 打赏
  • 举报
回复
写好了
http://www.fantasiasoft.net/Zyl910/SDK_Edit.zip
wumy_ld 2003-08-20
  • 打赏
  • 举报
回复
高手
junhrb 2003-08-20
  • 打赏
  • 举报
回复
挺好
doudou8090 2003-08-20
  • 打赏
  • 举报
回复
学习
zyl910 2003-08-19
  • 打赏
  • 举报
回复
对于文本框:


去学SDK编程
用CreateWindowExW创建Edit控件
再发消息控制
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
zzy1910:
http://expert.csdn.net/Expert/topic/2164/2164081.xml?temp=.4780237
此贴先给你结100分。这个等到讨论完再结分。顺便考虑一下再文本框里面怎么
做.
夜草:
我们顺便也考虑一下,文本况钟怎么样解决!大家都是学点东西,分不够我可以再加
我不小气的!
zyl910 2003-08-19
  • 打赏
  • 举报
回复
strptr是VB的隐藏函数
用于得到字符串的数据的地址


me是指当前类模块(窗口模块也是类模块)
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
zyl910(910:分儿,我又来了!) ( )
CopyMemory ByVal StrPtr(TempStr), TempBytes(1), UBound(TempBytes)
这句话中strptr是个什么东西呢?怎么没有定义呢?抱歉我vb不会;不定义也可以么
还有最后一句中
'MessageBoxW Me.hWnd, StrPtr(TempStr), StrPtr(Me.Caption), 0
vb中使用的是Me这个参数么?就是父窗口的指针么?和vc中很不一样阿
呵呵;解释一下好么?
我马上再开贴子
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
非常感谢
非常感谢
非常感谢
zyl910(910:分儿,我又来了!) ( )
问题解决了,哈哈哈,谢谢
马上准备结账,给你300分(100分另开目录)
因为还有100分要给其他热心的人
等一下你再会我的贴子,看到后请huifu
zyl910 2003-08-19
  • 打赏
  • 举报
回复
是MsgBox的问题(VB调用的是MessageBoxA,不支持Unicode)


Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Declare Function MessageBoxW Lib "user32" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long

Private Sub Command1_Click()
Dim hFile As Integer
Dim TempBytes() As Byte
hFile = FreeFile()
Open "c:\downloads\codetest.txt" For Binary As #hFile
ReDim TempBytes(1 To LOF(hFile))
Get hFile, , TempBytes
Close hFile

'MsgBox TempBytes

Dim TempStr As String
TempStr = String(UBound(TempBytes) \ 2, vbNullChar)
CopyMemory ByVal StrPtr(TempStr), TempBytes(1), UBound(TempBytes)
'MsgBox TempStr
'MessageBoxW Me.hWnd, StrPtr(TempStr), StrPtr(Me.Caption), 0

End Sub
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
楼上的老大
费了那么大的周折,做出来的中间部分和我做的还是一样,仍然有乱码!你看看中间的那些
问号,还是谢谢你!难道vb下面就没有办法解决么?
飘零风 2003-08-19
  • 打赏
  • 举报
回复
还是我直接改好了算了:

Private Sub Command1_Click()
Dim fs As New FileSystemObject
Dim ts As TextStream
Dim TmpStr As String

On Error Resume Next

Set ts = fs.OpenTextFile("C:\CODETEST.TXT", ForReading, False, TristateTrue)
While Not ts.AtEndOfStream
TmpStr = ts.ReadLine
MsgBox TmpStr
Wend
ts.Close
Set ts = Nothing
End Sub
飘零风 2003-08-19
  • 打赏
  • 举报
回复
你把 CDia1.FileName改成你的unicode文件的路径,其他有关CDia1的行都去掉,试试。
飘零风 2003-08-19
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim fs As New FileSystemObject
Dim ts As TextStream
Dim TmpStr As String
Dim TmpChr As String
Dim I As Integer

On Error Resume Next

Err.Clear
CDia1.DialogTitle = "打开unicode文件"
CDia1.DefaultExt = ".txt"
CDia1.Filter = "Text File (*.txt)|*.txt"
CDia1.Flags = cdlOFNCreatePrompt Or cdlOFNExplorer Or cdlOFNLongNames Or cdlOFNOverwritePrompt Or cdlOFNNoReadOnlyReturn
CDia1.ShowOpen

If CDia1.FileName <> "" Then
Set ts = fs.OpenTextFile(CDia1.FileName, ForReading, False, TristateTrue)
While Not ts.AtEndOfStream
TmpStr = ts.ReadLine
MsgBox TmpStr
Wend
ts.Close
End If
Set ts = Nothing
End Sub
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
vc里面设置unicode环境;然后用双字节的字符数组来存放读入的内容
然后可以直接显示
可是我vb不会,不知道该怎样定义这种结构体来解决这个问题
就是定义双字节的字符数组,来存放读入的二进制数据
你有办法么?
since1990 2003-08-19
  • 打赏
  • 举报
回复
帮你 up
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
是unicode格式的
zyl910 2003-08-19
  • 打赏
  • 举报
回复
那个txt是什么格式的?ANSI还是Unicode?

你在VC是怎么处理的?


是你自己没讲清楚,耽误时间是当然的

hualahuala 2003-08-19
  • 打赏
  • 举报
回复
在csdn目录下面
加载更多回复(1)

7,759

社区成员

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

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