vb6.0中汉字字符的比较规则是怎样的?
为什么"北京"、"天津"、"上海"、"广州"从大到小的排列顺序是:"广州"、"天津"、"北京"、"上海"?

解决方案 »

  1.   

    跟系统有关吧!
    windows中有一项汉字的排序方法设置的,在“区域/语言选项”中找
      

  2.   

    会不会与“北”“天”等中文字的ASCII大小有关。你用ASC函数查一下看看。
      

  3.   

    就是比较ASC码,你把下面的代码区运行一下吧^v^.我刚运行过Option ExplicitPrivate Sub Command1_Click()
    Dim s(3) As String
    Dim i As Integers(0) = "北京"
    s(1) = "天津"
    s(2) = "上海"
    s(3) = "广州"For i = 0 To 3
        Print s(i),
    Next
    Print
    For i = 0 To 3
        Print AscB(s(i)),
    Next
    End Sub
      

  4.   

    用StrComp进行比较的话,比较方式与StrComp(string1, string2[, compare])里的 compare参数有关。compare 参数设置为:
        常数             值            描述 
    vbUseCompareOption  -1    使用Option Compare语句设置执行一个比较。 
    vbBinaryCompare      0     执行一个二进制比较。 
    vbTextCompare        1     执行一个按照原文的比较。 
    vbDatabaseCompare    2     仅适用于Microsoft Access,执行一个基于数据库信息的比较。 
      

  5.   

    下面是在立即窗口输出的信息。这样就可以看出
    ?ascw("北")
     21271 
    ?ascw("上")
     19978 
    ?ascw("天")
     22825 
    ?ascw("广")
     24191 
    从上面看出来系统是从unicode码的大小来判断的,因此得到楼主的结果
      

  6.   

    另外,windows中的排序设置和程序中的排序是没有关系的,windows中的排序设置只和操作系统有关,比如文件的排列方法,而与在操作系统上运行的程序是没有关系的。
      

  7.   

    还是有问题啊,看下面代码:
    Private Sub Form_Click()
      Dim a$(6)
      a(1) = "北京"
      a(2) = "上海"
      a(3) = "天津"
      a(4) = "广州"
      a(5) = "男男"
      a(6) = "女女"
      For i = 1 To 5
        p = i
        For j = i + 1 To 6
          If a(p) < a(j) Then p = j
        Next j
        If p <> i Then t = a(i): a(i) = a(p): a(p) = t
      Next i
      For i = 1 To 6
        Print a(i), AscB(a(i))
      Next i
      Print
    End Sub对字符"男"、"女"不适用的。
      

  8.   

    哦,是根据ASCW()函数值来定的,可是如何比较"北京"、"北平"呢?微软难道没有一个比较规则吗?
      

  9.   

    北京和北平,首先比较第一个,由于第一个相同,那么再比较第二个,也就是ascw("京")与ascw("平")的比较