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