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.
  • 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
                                      • 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

                                        M Offline
                                        M Offline
                                        mikepwilson
                                        wrote on last edited by
                                        #21

                                        Holy crap. Here's what you do. Install Strawberry Perl on that machine, and have that function shell out to a perl one-liner. It'll still be more efficient and less dain bramaged.

                                        N 1 Reply Last reply
                                        0
                                        • M mikepwilson

                                          Holy crap. Here's what you do. Install Strawberry Perl on that machine, and have that function shell out to a perl one-liner. It'll still be more efficient and less dain bramaged.

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

                                          mikepwilson wrote:

                                          Install Strawberry Perl

                                          No, I don't think so...

                                          mikepwilson wrote:

                                          less dain bramaged

                                          you were saying? :laugh:

                                          M 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