Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. Why? Just why?

Why? Just why?

Scheduled Pinned Locked Moved The Weird and The Wonderful
helpquestioncareer
27 Posts 14 Posters 4 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    Nagy Vilmos
    wrote on last edited by
    #1

    I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

    Public Function sConvertCase(sInString, lType As VbStrConv) As String
    Dim sReturn As String
    Dim lPos As Long
    Dim lStart As Long
    Dim lNext As Long
    On Local Error Resume Next
    sReturn = StrConv(sInString, lType)
    If lType = vbProperCase Then
    'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
    lPos = 0
    Do
    lStart = lPos + 1
    lPos = InStr(lStart, sReturn, "Mc")
    lNext = InStr(lStart, sReturn, "Mac")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "O'")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "Von ")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "-")
    If lNext > 0 And lNext < lPos Or lPos = 0 Then
    lPos = lNext
    End If

            If lPos = 0 Then
            ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
            ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
            ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                    Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                End If
            ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
            ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                Mid$(sReturn, lPos, 1) = "v"
            End If
        Loop While lPos > 0
    End If
    

    Done:
    sConvertCase = sReturn
    End Function

    Kornfeld Eliyahu PeterK C B D M 5 Replies Last reply
    0
    • N Nagy Vilmos

      I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

      Public Function sConvertCase(sInString, lType As VbStrConv) As String
      Dim sReturn As String
      Dim lPos As Long
      Dim lStart As Long
      Dim lNext As Long
      On Local Error Resume Next
      sReturn = StrConv(sInString, lType)
      If lType = vbProperCase Then
      'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
      lPos = 0
      Do
      lStart = lPos + 1
      lPos = InStr(lStart, sReturn, "Mc")
      lNext = InStr(lStart, sReturn, "Mac")
      If lNext > 0 And (lNext < lPos Or lPos = 0) Then
      lPos = lNext
      End If
      lNext = InStr(lStart, sReturn, "O'")
      If lNext > 0 And (lNext < lPos Or lPos = 0) Then
      lPos = lNext
      End If
      lNext = InStr(lStart, sReturn, "Von ")
      If lNext > 0 And (lNext < lPos Or lPos = 0) Then
      lPos = lNext
      End If
      lNext = InStr(lStart, sReturn, "-")
      If lNext > 0 And lNext < lPos Or lPos = 0 Then
      lPos = lNext
      End If

              If lPos = 0 Then
              ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                  Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
              ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                  Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
              ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                  If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                      Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                  End If
              ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                  Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
              ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                  Mid$(sReturn, lPos, 1) = "v"
              End If
          Loop While lPos > 0
      End If
      

      Done:
      sConvertCase = sReturn
      End Function

      Kornfeld Eliyahu PeterK Offline
      Kornfeld Eliyahu PeterK Offline
      Kornfeld Eliyahu Peter
      wrote on last edited by
      #2

      I can't see how it's connected to VB6 (or any language for that matter)...It's a pure human problem...

      I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)

      "It never ceases to amaze me that a spacecraft launched in 1977 can be fixed remotely from Earth." ― Brian Cox

      N R 2 Replies Last reply
      0
      • Kornfeld Eliyahu PeterK Kornfeld Eliyahu Peter

        I can't see how it's connected to VB6 (or any language for that matter)...It's a pure human problem...

        I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)

        N Offline
        N Offline
        Nagy Vilmos
        wrote on last edited by
        #3

        No, I think on reflection I will continue to blame VB6. On the plus side, the code so far is not dead awful but it is visibly aged in the approach. No refactoring yet, I've agreed that we'll get it working with as little changes as possible [he laughs] and then look at more robust approaches.

        A 1 Reply Last reply
        0
        • N Nagy Vilmos

          No, I think on reflection I will continue to blame VB6. On the plus side, the code so far is not dead awful but it is visibly aged in the approach. No refactoring yet, I've agreed that we'll get it working with as little changes as possible [he laughs] and then look at more robust approaches.

          A Offline
          A Offline
          Argonia
          wrote on last edited by
          #4

          Nagy Vilmos wrote:

          robust approaches

          Like Format : ?

          Microsoft ... the only place where VARIANT_TRUE != true

          1 Reply Last reply
          0
          • N Nagy Vilmos

            I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

            Public Function sConvertCase(sInString, lType As VbStrConv) As String
            Dim sReturn As String
            Dim lPos As Long
            Dim lStart As Long
            Dim lNext As Long
            On Local Error Resume Next
            sReturn = StrConv(sInString, lType)
            If lType = vbProperCase Then
            'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
            lPos = 0
            Do
            lStart = lPos + 1
            lPos = InStr(lStart, sReturn, "Mc")
            lNext = InStr(lStart, sReturn, "Mac")
            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
            lPos = lNext
            End If
            lNext = InStr(lStart, sReturn, "O'")
            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
            lPos = lNext
            End If
            lNext = InStr(lStart, sReturn, "Von ")
            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
            lPos = lNext
            End If
            lNext = InStr(lStart, sReturn, "-")
            If lNext > 0 And lNext < lPos Or lPos = 0 Then
            lPos = lNext
            End If

                    If lPos = 0 Then
                    ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                        Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
                    ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                        Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
                    ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                        If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                            Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                        End If
                    ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                        Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
                    ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                        Mid$(sReturn, lPos, 1) = "v"
                    End If
                Loop While lPos > 0
            End If
            

            Done:
            sConvertCase = sReturn
            End Function

            C Offline
            C Offline
            Chris Quinn
            wrote on last edited by
            #5

            I wrote a very similar routine for Access many years ago, but it's better as it handles special cases like 'Macari' and 'Macy' which this routine would render as 'MacAri ' and 'MacY'

            ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

            N 1 Reply Last reply
            0
            • C Chris Quinn

              I wrote a very similar routine for Access many years ago, but it's better as it handles special cases like 'Macari' and 'Macy' which this routine would render as 'MacAri ' and 'MacY'

              ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

              N Offline
              N Offline
              Nagy Vilmos
              wrote on last edited by
              #6

              It still sucks monkey giblets

              C 1 Reply Last reply
              0
              • N Nagy Vilmos

                It still sucks monkey giblets

                C Offline
                C Offline
                Chris Quinn
                wrote on last edited by
                #7

                Here's my monkey giblets! I knew I still had it somewhere

                Function Namecase(ByVal Sourcestring As String) As String
                Dim ConvertChar As Integer, Jock As Integer
                Dim StringLength As Integer, loopvar As Integer
                Dim Newstring As String, Nextchar As String
                Dim MacPos As Integer, Maclen As Integer, TestMac As String

                On Error GoTo HandleErr
                'Lowercase the whole string
                
                StringLength = Len(Sourcestring)
                Sourcestring = LCase$(Sourcestring)
                
                For loopvar = 1 To StringLength
                    'loop through the string letter by letter and
                    'Convert the letter to uppercase if it is :-
                
                    'The First Character in the text box
                    ConvertChar = (loopvar = 1)
                
                    'or character following space, hypen or apostrophe
                    If Not ConvertChar Then ConvertChar = InStr(" -' ", Mid$(Sourcestring, (loopvar - 1), 1))
                
                    ''or first character following a Mc for the Scots amongst us
                    '    If Not ConvertChar Then
                    '        If loopvar > 2 Then ConvertChar = (Mid$(SourceString, (loopvar - 2), 2) = "mc")
                    '    End If
                
                    Nextchar = Mid$(Sourcestring, loopvar, 1)
                    If ConvertChar Then        'Convert character to uppercase if it meets the criteria
                        Nextchar = UCase$(Nextchar)
                    End If
                    Newstring = Newstring & Nextchar        'Concatenate to destination
                Next loopvar
                TestMac = "|" & Newstring & "|"
                MacPos = (InStr("|Machin|Macaskill|Mack|Mackie|Macaly|Macy|Mace|Macari|Macley|Macnamara|Mackay|", TestMac))
                Jock = (MacPos = 0)
                If Jock Then
                    MacPos = InStr(Newstring, "Mac")
                    Maclen = Len(Newstring)
                    If MacPos > 0 Then
                        Newstring = left$(Newstring, MacPos + 2) & (UCase$(Mid$(Newstring, MacPos + 3, 1)) & right$(Newstring, (Maclen - (MacPos + 3))))
                    End If
                    MacPos = InStr(Newstring, "Mc")
                    If MacPos > 0 Then
                        Newstring = left$(Newstring, MacPos + 1) & (UCase$(Mid$(Newstring, MacPos + 2, 1)) & right$(Newstring, (Maclen - (MacPos + 2))))
                    End If
                End If
                Namecase = Newstring        'return the completed string
                

                ExitHere:
                Exit Function

                ' Error handling block added by Error Handler Add-In. DO NOT EDIT this block of code.
                ' Automatic error handler last updated at 09-21-2004 10:35:07   'ErrorHandler:$$D=09-21-2004    'ErrorHandler:$$T=10:35:07
                

                HandleErr:
                Select Case Err.Number
                Case Else
                MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritic

                J B M 3 Replies Last reply
                0
                • C Chris Quinn

                  Here's my monkey giblets! I knew I still had it somewhere

                  Function Namecase(ByVal Sourcestring As String) As String
                  Dim ConvertChar As Integer, Jock As Integer
                  Dim StringLength As Integer, loopvar As Integer
                  Dim Newstring As String, Nextchar As String
                  Dim MacPos As Integer, Maclen As Integer, TestMac As String

                  On Error GoTo HandleErr
                  'Lowercase the whole string
                  
                  StringLength = Len(Sourcestring)
                  Sourcestring = LCase$(Sourcestring)
                  
                  For loopvar = 1 To StringLength
                      'loop through the string letter by letter and
                      'Convert the letter to uppercase if it is :-
                  
                      'The First Character in the text box
                      ConvertChar = (loopvar = 1)
                  
                      'or character following space, hypen or apostrophe
                      If Not ConvertChar Then ConvertChar = InStr(" -' ", Mid$(Sourcestring, (loopvar - 1), 1))
                  
                      ''or first character following a Mc for the Scots amongst us
                      '    If Not ConvertChar Then
                      '        If loopvar > 2 Then ConvertChar = (Mid$(SourceString, (loopvar - 2), 2) = "mc")
                      '    End If
                  
                      Nextchar = Mid$(Sourcestring, loopvar, 1)
                      If ConvertChar Then        'Convert character to uppercase if it meets the criteria
                          Nextchar = UCase$(Nextchar)
                      End If
                      Newstring = Newstring & Nextchar        'Concatenate to destination
                  Next loopvar
                  TestMac = "|" & Newstring & "|"
                  MacPos = (InStr("|Machin|Macaskill|Mack|Mackie|Macaly|Macy|Mace|Macari|Macley|Macnamara|Mackay|", TestMac))
                  Jock = (MacPos = 0)
                  If Jock Then
                      MacPos = InStr(Newstring, "Mac")
                      Maclen = Len(Newstring)
                      If MacPos > 0 Then
                          Newstring = left$(Newstring, MacPos + 2) & (UCase$(Mid$(Newstring, MacPos + 3, 1)) & right$(Newstring, (Maclen - (MacPos + 3))))
                      End If
                      MacPos = InStr(Newstring, "Mc")
                      If MacPos > 0 Then
                          Newstring = left$(Newstring, MacPos + 1) & (UCase$(Mid$(Newstring, MacPos + 2, 1)) & right$(Newstring, (Maclen - (MacPos + 2))))
                      End If
                  End If
                  Namecase = Newstring        'return the completed string
                  

                  ExitHere:
                  Exit Function

                  ' Error handling block added by Error Handler Add-In. DO NOT EDIT this block of code.
                  ' Automatic error handler last updated at 09-21-2004 10:35:07   'ErrorHandler:$$D=09-21-2004    'ErrorHandler:$$T=10:35:07
                  

                  HandleErr:
                  Select Case Err.Number
                  Case Else
                  MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritic

                  J Offline
                  J Offline
                  Jorgen Andersson
                  wrote on last edited by
                  #8

                  How about McHammer? :doh:

                  Wrong is evil and must be defeated. - Jeff Ello[^]

                  N 1 Reply Last reply
                  0
                  • J Jorgen Andersson

                    How about McHammer? :doh:

                    Wrong is evil and must be defeated. - Jeff Ello[^]

                    N Offline
                    N Offline
                    Nagy Vilmos
                    wrote on last edited by
                    #9

                    Stop!

                    J 1 Reply Last reply
                    0
                    • C Chris Quinn

                      Here's my monkey giblets! I knew I still had it somewhere

                      Function Namecase(ByVal Sourcestring As String) As String
                      Dim ConvertChar As Integer, Jock As Integer
                      Dim StringLength As Integer, loopvar As Integer
                      Dim Newstring As String, Nextchar As String
                      Dim MacPos As Integer, Maclen As Integer, TestMac As String

                      On Error GoTo HandleErr
                      'Lowercase the whole string
                      
                      StringLength = Len(Sourcestring)
                      Sourcestring = LCase$(Sourcestring)
                      
                      For loopvar = 1 To StringLength
                          'loop through the string letter by letter and
                          'Convert the letter to uppercase if it is :-
                      
                          'The First Character in the text box
                          ConvertChar = (loopvar = 1)
                      
                          'or character following space, hypen or apostrophe
                          If Not ConvertChar Then ConvertChar = InStr(" -' ", Mid$(Sourcestring, (loopvar - 1), 1))
                      
                          ''or first character following a Mc for the Scots amongst us
                          '    If Not ConvertChar Then
                          '        If loopvar > 2 Then ConvertChar = (Mid$(SourceString, (loopvar - 2), 2) = "mc")
                          '    End If
                      
                          Nextchar = Mid$(Sourcestring, loopvar, 1)
                          If ConvertChar Then        'Convert character to uppercase if it meets the criteria
                              Nextchar = UCase$(Nextchar)
                          End If
                          Newstring = Newstring & Nextchar        'Concatenate to destination
                      Next loopvar
                      TestMac = "|" & Newstring & "|"
                      MacPos = (InStr("|Machin|Macaskill|Mack|Mackie|Macaly|Macy|Mace|Macari|Macley|Macnamara|Mackay|", TestMac))
                      Jock = (MacPos = 0)
                      If Jock Then
                          MacPos = InStr(Newstring, "Mac")
                          Maclen = Len(Newstring)
                          If MacPos > 0 Then
                              Newstring = left$(Newstring, MacPos + 2) & (UCase$(Mid$(Newstring, MacPos + 3, 1)) & right$(Newstring, (Maclen - (MacPos + 3))))
                          End If
                          MacPos = InStr(Newstring, "Mc")
                          If MacPos > 0 Then
                              Newstring = left$(Newstring, MacPos + 1) & (UCase$(Mid$(Newstring, MacPos + 2, 1)) & right$(Newstring, (Maclen - (MacPos + 2))))
                          End If
                      End If
                      Namecase = Newstring        'return the completed string
                      

                      ExitHere:
                      Exit Function

                      ' Error handling block added by Error Handler Add-In. DO NOT EDIT this block of code.
                      ' Automatic error handler last updated at 09-21-2004 10:35:07   'ErrorHandler:$$D=09-21-2004    'ErrorHandler:$$T=10:35:07
                      

                      HandleErr:
                      Select Case Err.Number
                      Case Else
                      MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritic

                      B Offline
                      B Offline
                      BobJanova
                      wrote on last edited by
                      #10

                      MacAskill and (definitely) MacNamara look like they are real Macs. This kind of code just implies your input and/or requirements are crap, though. People should be trusted to type their own name as they want it.

                      N C 2 Replies Last reply
                      0
                      • B BobJanova

                        MacAskill and (definitely) MacNamara look like they are real Macs. This kind of code just implies your input and/or requirements are crap, though. People should be trusted to type their own name as they want it.

                        N Offline
                        N Offline
                        Nagy Vilmos
                        wrote on last edited by
                        #11

                        This goes back to a more elegant age where people couldn't use puters.

                        1 Reply Last reply
                        0
                        • N Nagy Vilmos

                          Stop!

                          J Offline
                          J Offline
                          Jorgen Andersson
                          wrote on last edited by
                          #12

                          I'm Too Legit to Quit, I Don't Stop until I'm Gaining Momentum. So Feel My Power it's Hammertime.

                          Wrong is evil and must be defeated. - Jeff Ello[^]

                          1 Reply Last reply
                          0
                          • N Nagy Vilmos

                            I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

                            Public Function sConvertCase(sInString, lType As VbStrConv) As String
                            Dim sReturn As String
                            Dim lPos As Long
                            Dim lStart As Long
                            Dim lNext As Long
                            On Local Error Resume Next
                            sReturn = StrConv(sInString, lType)
                            If lType = vbProperCase Then
                            'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
                            lPos = 0
                            Do
                            lStart = lPos + 1
                            lPos = InStr(lStart, sReturn, "Mc")
                            lNext = InStr(lStart, sReturn, "Mac")
                            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                            lPos = lNext
                            End If
                            lNext = InStr(lStart, sReturn, "O'")
                            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                            lPos = lNext
                            End If
                            lNext = InStr(lStart, sReturn, "Von ")
                            If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                            lPos = lNext
                            End If
                            lNext = InStr(lStart, sReturn, "-")
                            If lNext > 0 And lNext < lPos Or lPos = 0 Then
                            lPos = lNext
                            End If

                                    If lPos = 0 Then
                                    ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                                        Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
                                    ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                                        Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
                                    ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                                        If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                                            Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                                        End If
                                    ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                                        Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
                                    ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                                        Mid$(sReturn, lPos, 1) = "v"
                                    End If
                                Loop While lPos > 0
                            End If
                            

                            Done:
                            sConvertCase = sReturn
                            End Function

                            B Offline
                            B Offline
                            Bernhard Hiller
                            wrote on last edited by
                            #13

                            Well, you have to run that code at the speed of MacH 2.

                            1 Reply Last reply
                            0
                            • B BobJanova

                              MacAskill and (definitely) MacNamara look like they are real Macs. This kind of code just implies your input and/or requirements are crap, though. People should be trusted to type their own name as they want it.

                              C Offline
                              C Offline
                              Chris Quinn
                              wrote on last edited by
                              #14

                              I have a Scottish friend called Macaskill who definitely does not capitalise internally, and the others were ascertained by looking through the telephone directories of several major British cities, though I think Macnamara[^] is a special special case - some capitalise and some don't

                              ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

                              1 Reply Last reply
                              0
                              • N Nagy Vilmos

                                I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

                                Public Function sConvertCase(sInString, lType As VbStrConv) As String
                                Dim sReturn As String
                                Dim lPos As Long
                                Dim lStart As Long
                                Dim lNext As Long
                                On Local Error Resume Next
                                sReturn = StrConv(sInString, lType)
                                If lType = vbProperCase Then
                                'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
                                lPos = 0
                                Do
                                lStart = lPos + 1
                                lPos = InStr(lStart, sReturn, "Mc")
                                lNext = InStr(lStart, sReturn, "Mac")
                                If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                                lPos = lNext
                                End If
                                lNext = InStr(lStart, sReturn, "O'")
                                If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                                lPos = lNext
                                End If
                                lNext = InStr(lStart, sReturn, "Von ")
                                If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                                lPos = lNext
                                End If
                                lNext = InStr(lStart, sReturn, "-")
                                If lNext > 0 And lNext < lPos Or lPos = 0 Then
                                lPos = lNext
                                End If

                                        If lPos = 0 Then
                                        ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                                            Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
                                        ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                                            Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
                                        ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                                            If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                                                Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                                            End If
                                        ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                                            Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
                                        ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                                            Mid$(sReturn, lPos, 1) = "v"
                                        End If
                                    Loop While lPos > 0
                                End If
                                

                                Done:
                                sConvertCase = sReturn
                                End Function

                                D Offline
                                D Offline
                                Dave Kreskowiak
                                wrote on last edited by
                                #15

                                You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                                A guide to posting questions on CodeProject

                                How to debug small programs
                                Dave Kreskowiak

                                N B Z C B 6 Replies Last reply
                                0
                                • D Dave Kreskowiak

                                  You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                                  A guide to posting questions on CodeProject

                                  How to debug small programs
                                  Dave Kreskowiak

                                  N Offline
                                  N Offline
                                  Nagy Vilmos
                                  wrote on last edited by
                                  #16

                                  No, that hurt.

                                  1 Reply Last reply
                                  0
                                  • D Dave Kreskowiak

                                    You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                                    A guide to posting questions on CodeProject

                                    How to debug small programs
                                    Dave Kreskowiak

                                    B Offline
                                    B Offline
                                    BobJanova
                                    wrote on last edited by
                                    #17

                                    Oh my word.

                                    1 Reply Last reply
                                    0
                                    • D Dave Kreskowiak

                                      You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                                      A guide to posting questions on CodeProject

                                      How to debug small programs
                                      Dave Kreskowiak

                                      Z Offline
                                      Z Offline
                                      ZurdoDev
                                      wrote on last edited by
                                      #18

                                      I'm surprised that CP didn't give an "Out of memory exception" when the OP posted that code. Whew!

                                      There are only 10 types of people in the world, those who understand binary and those who don't.

                                      1 Reply Last reply
                                      0
                                      • D Dave Kreskowiak

                                        You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                                        A guide to posting questions on CodeProject

                                        How to debug small programs
                                        Dave Kreskowiak

                                        C Offline
                                        C Offline
                                        Chris Quinn
                                        wrote on last edited by
                                        #19

                                        As I always say, it ain't the tool that is used that's the problem, but the tool that uses it.

                                        ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

                                        1 Reply Last reply
                                        0
                                        • C Chris Quinn

                                          Here's my monkey giblets! I knew I still had it somewhere

                                          Function Namecase(ByVal Sourcestring As String) As String
                                          Dim ConvertChar As Integer, Jock As Integer
                                          Dim StringLength As Integer, loopvar As Integer
                                          Dim Newstring As String, Nextchar As String
                                          Dim MacPos As Integer, Maclen As Integer, TestMac As String

                                          On Error GoTo HandleErr
                                          'Lowercase the whole string
                                          
                                          StringLength = Len(Sourcestring)
                                          Sourcestring = LCase$(Sourcestring)
                                          
                                          For loopvar = 1 To StringLength
                                              'loop through the string letter by letter and
                                              'Convert the letter to uppercase if it is :-
                                          
                                              'The First Character in the text box
                                              ConvertChar = (loopvar = 1)
                                          
                                              'or character following space, hypen or apostrophe
                                              If Not ConvertChar Then ConvertChar = InStr(" -' ", Mid$(Sourcestring, (loopvar - 1), 1))
                                          
                                              ''or first character following a Mc for the Scots amongst us
                                              '    If Not ConvertChar Then
                                              '        If loopvar > 2 Then ConvertChar = (Mid$(SourceString, (loopvar - 2), 2) = "mc")
                                              '    End If
                                          
                                              Nextchar = Mid$(Sourcestring, loopvar, 1)
                                              If ConvertChar Then        'Convert character to uppercase if it meets the criteria
                                                  Nextchar = UCase$(Nextchar)
                                              End If
                                              Newstring = Newstring & Nextchar        'Concatenate to destination
                                          Next loopvar
                                          TestMac = "|" & Newstring & "|"
                                          MacPos = (InStr("|Machin|Macaskill|Mack|Mackie|Macaly|Macy|Mace|Macari|Macley|Macnamara|Mackay|", TestMac))
                                          Jock = (MacPos = 0)
                                          If Jock Then
                                              MacPos = InStr(Newstring, "Mac")
                                              Maclen = Len(Newstring)
                                              If MacPos > 0 Then
                                                  Newstring = left$(Newstring, MacPos + 2) & (UCase$(Mid$(Newstring, MacPos + 3, 1)) & right$(Newstring, (Maclen - (MacPos + 3))))
                                              End If
                                              MacPos = InStr(Newstring, "Mc")
                                              If MacPos > 0 Then
                                                  Newstring = left$(Newstring, MacPos + 1) & (UCase$(Mid$(Newstring, MacPos + 2, 1)) & right$(Newstring, (Maclen - (MacPos + 2))))
                                              End If
                                          End If
                                          Namecase = Newstring        'return the completed string
                                          

                                          ExitHere:
                                          Exit Function

                                          ' Error handling block added by Error Handler Add-In. DO NOT EDIT this block of code.
                                          ' Automatic error handler last updated at 09-21-2004 10:35:07   'ErrorHandler:$$D=09-21-2004    'ErrorHandler:$$T=10:35:07
                                          

                                          HandleErr:
                                          Select Case Err.Number
                                          Case Else
                                          MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritic

                                          M Offline
                                          M Offline
                                          MarkTJohnson
                                          wrote on last edited by
                                          #20

                                          Glad to see it takes care of MacHine

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups