LYHZM 发表于 2004-2-9 10:55:00

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

请问如何解决"当随机文件中的字段包含有汉字,则此字段之后的字段内容无法显示在列表框中"这一问题?<FONT face=宋体 size=1>请看下面的程序段落</FONT>


<FONT face=宋体 size=1>----------------------------------------------</FONT>


<FONT face=宋体 size=1>'定义用户自定义类型</FONT>


<FONT face=宋体 size=1>Private Type SubstationDataGather_Type<BR>                       Substation_Name As String * 20<BR>                       Substation_Alias As String * 20<BR>                       HighTensionCable_SegmentNumber As Integer<BR>                       SumRb As Double<BR>                       SumXb As Double<BR>End Type<BR>Dim SubstationDataGather_DataArray() As SubstationDataGather_Type</FONT>


<FONT face=宋体 size=1>'在窗体初始化过程中把随机文件中的每一记录的各字段连接成一字符串,显示在列表框中</FONT>


<FONT face=宋体 size=1>For RecordNumber = 1 To Lastrec<BR>                                <BR>                                                               Get #1, RecordNumber, SubstationDataGather_DataArray(RecordNumber)<BR>                                                               With SubstationDataGather_DataArray(RecordNumber)<BR>                                                                                <BR>                                                                                                                        SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") &amp; "                       " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(.HighTensionCable_SegmentNumber, "##") &amp; "                                                                                                               " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(Val(.SumRb), "##.#####") &amp; "                       " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(Val(.SumXb), "##.#####")<BR>                                                                                                                                                                                                                                                                                                <BR>                                                                                        End With<BR>                                                                               <BR>                                                                       '向列表框1中添加数据项, 即把数据显示在列表框1中<BR>                                                                       ListBox1.AddItem SubstationDataGatherList<BR>                                       Next RecordNumber</FONT>


<FONT face=宋体 size=1>-----------------------------------------------------------------------------------------------</FONT>


<FONT face=宋体 size=1>对于上面的程序段落,当随机文件中的某一记录的字段包含有汉字,则此字段之后的字段内容无法显示在列表框中,在列表框中显示如:</FONT>


<FONT face=宋体 size=1>“2631变电所                                                                                                                                                                                                                                                                                                                                               ”</FONT>


<FONT face=宋体 size=1>而实际应显示为:</FONT>


<FONT face=宋体 size=1>“2631变电所                       2631                               1                      2.3333                               0.33333                                        ”</FONT>


<FONT face=宋体 size=1>请问如何解决?</FONT>

mccad 发表于 2004-2-9 13:02:00

你文本文件中的行文字是怎样转换到自定义数据类型<FONT size=1>SubstationDataGather_Type中的呢?</FONT>

LYHZM 发表于 2004-2-9 19:49:00

谢谢<A name=77603><FONT color=#990000><B>mccad</B></FONT></A> 老师的关注。文本文件中的行文字是通过以下程序转换到自定义数据类型<FONT size=1>SubstationDataGather_Type中的,恳请<A name=77603><FONT color=#990000><B>mccad</B></FONT></A> 老师指正。</FONT>


Dim Lastrec As Integer<BR>                                       Dim RecordNumber As Integer<BR>                                       Dim SubstationDataGatherList As String<BR>                                                On Error Resume Next<BR>                                                <BR>                                       ReDim Preserve SubstationDataGather_DataArray(0)<BR>                                       <BR>                                       '以随机访问方式打开文件<BR>                                       Open "f:\MyAutoCAD\MyVBA\SubstationDataGather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray(0))<BR>                                                                                                <BR>                                       Lastrec = LOF(1) / Len(SubstationDataGather_DataArray(0))<BR>                                                <BR>                                       ReDim Preserve SubstationDataGather_DataArray(Lastrec)<BR>                                       '清空列表框1,为在其中显示全部记录做准备<BR>                                       ListBox1.Clear<BR>                                       <BR>                                       <BR>                                       '通过循环,把打开的硬盘上的文件"f:\MyAutoCAD\MyVBA\SubstationDataGather.dat"中的记录<BR>                                       '一一赋予SubstationDataGather_Array()数组,再把数组中的数据一一加入到列表框中1显示出来<BR>                                       


<FONT face=宋体 size=1>For RecordNumber = 1 To Lastrec<BR>                                <BR>                                                               Get #1, RecordNumber, SubstationDataGather_DataArray(RecordNumber)<BR>                                                               With SubstationDataGather_DataArray(RecordNumber)<BR>                                                                                <BR>                                                                                                                        SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") &amp; "                       " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(.HighTensionCable_SegmentNumber, "##") &amp; "                                                                                                               " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(Val(.SumRb), "##.#####") &amp; "                       " &amp; _<BR>                                                                                                                                                                                                                                                                                                                                       Format(Val(.SumXb), "##.#####")<BR>                                                                                                                                                                                                                                                                                                <BR>                                                                                        End With<BR>                                                                               <BR>                                                                       '向列表框1中添加数据项, 即把数据显示在列表框1中<BR>                                                                       ListBox1.AddItem SubstationDataGatherList<BR>                                       Next RecordNumber</FONT>


<FONT face=宋体 size=1>'关闭文件<BR>Close #1</FONT>

mccad 发表于 2004-2-9 20:36:00

我这里没有你所说的问题,以下是我试验的代码:Dim SubstationDataGather_DataArray As SubstationDataGather_Type
Private Sub CommandButton1_Click()
       Open "d:\Gather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray)
       Get #1, 1, SubstationDataGather_DataArray
       Close #1
       With SubstationDataGather_DataArray
               SubstationDataGatherList = Format(.Substation_Name, "@@@@@@@@@@@@@@@@@@@@") & "       " & _
                                                                     Format(.Substation_Alias, "@@@@@@@@@@@@@@@@@@@@") & _
                                                                     Format(.HighTensionCable_SegmentNumber, "##") & "                           " & _
                                                                     Format(Val(.SumRb), "##.#####") & "       " & _
                                                                     Format(Val(.SumXb), "##.#####")
       End With
       '向列表框1中添加数据项, 即把数据显示在列表框1中
       ListBox1.AddItem SubstationDataGatherList
End SubPrivate Sub UserForm_Initialize()
       Open "d:\Gather.dat" For Random As #1 Len = Len(SubstationDataGather_DataArray)
       With SubstationDataGather_DataArray
               .Substation_Name = "2631变电所"
               .Substation_Alias = "2631"
               .HighTensionCable_SegmentNumber = 1
               .SumRb = 2.3333
               .SumXb = 2.3333
       End With
       Put #1, 1, SubstationDataGather_DataArray
       Close #1
End Sub

LYHZM 发表于 2004-2-10 12:02:00

<FONT face=宋体 size=1><A name=77603><FONT color=#990000><B>mccad</B></FONT></A> 老师,当我使用“逐语句”</FONT><FONT face=宋体 size=1>的方法运行我上面列出的程序时,在执行</FONT><FONT face=宋体 size=1>到包含有汉字的记录时,我把光标放在“ListBox1.AddItem SubstationDataGatherList”语句行的“SubstationDataGatherList”字符上,则此时能够出现如“2631变电所                       2631                               1                      2.3333                               0.33333                                        ”这样的正确提示值,但在列表框中就出现上面所述的错误显示,请问<FONT face=宋体 size=1><A name=77603><FONT color=#990000><B>mccad</B></FONT></A> 老师如何解决?</FONT></FONT>
页: [1]
查看完整版本: 请问如何解决"当随机文件中的字段包含有汉字,则此字段之后的字段内容无法显