明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1642|回复: 4

请问如何解决"当随机文件中的字段包含有汉字,则此字段之后的字段内容无法显

[复制链接]
发表于 2004-2-9 10:55:00 | 显示全部楼层 |阅读模式
请问如何解决"当随机文件中的字段包含有汉字,则此字段之后的字段内容无法显示在列表框中"这一问题?[br]请看下面的程序段落 ---------------------------------------------- '定义用户自定义类型 Private Type SubstationDataGather_Type
Substation_Name As String * 20
Substation_Alias As String * 20
HighTensionCable_SegmentNumber As Integer
SumRb As Double
SumXb As Double
End Type
Dim SubstationDataGather_DataArray() As SubstationDataGather_Type
'在窗体初始化过程中把随机文件中的每一记录的各字段连接成一字符串,显示在列表框中 For RecordNumber = 1 To Lastrec

Get #1, RecordNumber, SubstationDataGather_DataArray(RecordNumber)
With SubstationDataGather_DataArray(RecordNumber)

SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") & " " & _
Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") & _
Format(.HighTensionCable_SegmentNumber, "##") & " " & _
Format(Val(.SumRb), "##.#####") & " " & _
Format(Val(.SumXb), "##.#####")

End With

'向列表框1中添加数据项, 即把数据显示在列表框1中
ListBox1.AddItem SubstationDataGatherList
Next RecordNumber
----------------------------------------------------------------------------------------------- 对于上面的程序段落,当随机文件中的某一记录的字段包含有汉字,则此字段之后的字段内容无法显示在列表框中,在列表框中显示如: “2631变电所 ” 而实际应显示为: “2631变电所 2631 1 2.3333 0.33333 ” 请问如何解决?
发表于 2004-2-9 13:02:00 | 显示全部楼层
你文本文件中的行文字是怎样转换到自定义数据类型SubstationDataGather_Type中的呢?
 楼主| 发表于 2004-2-9 19:49:00 | 显示全部楼层
谢谢mccad 老师的关注。文本文件中的行文字是通过以下程序转换到自定义数据类型SubstationDataGather_Type中的,恳请mccad 老师指正。 Dim Lastrec As Integer
Dim RecordNumber As Integer
Dim SubstationDataGatherList As String
On Error Resume Next

ReDim Preserve SubstationDataGather_DataArray(0)

'以随机访问方式打开文件
Open "f:\MyAutoCAD\MyVBA\SubstationDataGather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray(0))

Lastrec = LOF(1) / Len(SubstationDataGather_DataArray(0))

ReDim Preserve SubstationDataGather_DataArray(Lastrec)
'清空列表框1,为在其中显示全部记录做准备
ListBox1.Clear


'通过循环,把打开的硬盘上的文件"f:\MyAutoCAD\MyVBA\SubstationDataGather.dat"中的记录
'一一赋予SubstationDataGather_Array()数组,再把数组中的数据一一加入到列表框中1显示出来
For RecordNumber = 1 To Lastrec

Get #1, RecordNumber, SubstationDataGather_DataArray(RecordNumber)
With SubstationDataGather_DataArray(RecordNumber)

SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") & " " & _
Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") & _
Format(.HighTensionCable_SegmentNumber, "##") & " " & _
Format(Val(.SumRb), "##.#####") & " " & _
Format(Val(.SumXb), "##.#####")

End With

'向列表框1中添加数据项, 即把数据显示在列表框1中
ListBox1.AddItem SubstationDataGatherList
Next RecordNumber
'关闭文件
Close #1
发表于 2004-2-9 20:36:00 | 显示全部楼层
我这里没有你所说的问题,以下是我试验的代码:
  1. Dim SubstationDataGather_DataArray As SubstationDataGather_Type
  2. Private Sub CommandButton1_Click()
  3.        Open "d:\Gather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray)
  4.        Get #1, 1, SubstationDataGather_DataArray
  5.        Close #1
  6.        With SubstationDataGather_DataArray
  7.                SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") & "       " & _
  8.                                                                      Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") & _
  9.                                                                      Format(.HighTensionCable_SegmentNumber, "##") & "                             " & _
  10.                                                                      Format(Val(.SumRb), "##.#####") & "       " & _
  11.                                                                      Format(Val(.SumXb), "##.#####")
  12.        End With
  13.        '向列表框1中添加数据项, 即把数据显示在列表框1中
  14.        ListBox1.AddItem SubstationDataGatherList
  15. End SubPrivate Sub UserForm_Initialize()
  16.        Open "d:\Gather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray)
  17.        With SubstationDataGather_DataArray
  18.                .Substation_Name = "2631变电所"
  19.                .Substation_Alias = "2631"
  20.                .HighTensionCable_SegmentNumber = 1
  21.                .SumRb = 2.3333
  22.                .SumXb = 2.3333
  23.        End With
  24.        Put #1, 1, SubstationDataGather_DataArray
  25.        Close #1
  26. End Sub
 楼主| 发表于 2004-2-10 12:02:00 | 显示全部楼层
mccad 老师,当我使用“逐语句”的方法运行我上面列出的程序时,在执行到包含有汉字的记录时,我把光标放在“ListBox1.AddItem SubstationDataGatherList”语句行的“SubstationDataGatherList”字符上,则此时能够出现如“2631变电所 2631 1 2.3333 0.33333 ”这样的正确提示值,但在列表框中就出现上面所述的错误显示,请问mccad 老师如何解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 09:44 , Processed in 0.155601 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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